Spaces:
Sleeping
Sleeping
# 在 Colab 中安装必要的包(通常 Colab 已经安装 transformers,但为了确保版本推荐运行以下代码) | |
!pip install --upgrade transformers | |
!pip install soundfile # 有些 TTS 模型可能依赖 soundfile | |
# 导入必要的库 | |
from transformers import pipeline | |
from IPython.display import Audio, display | |
import torch | |
########################################## | |
# Step 1:情感分析 - 分析用户评论的情感倾向 | |
########################################## | |
# 本示例中选择 distilbert-base-uncased-finetuned-sst-2-english 模型用于英文情感分类 | |
sentiment_classifier = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english") | |
# 示例用户评论(可替换为实际评论) | |
user_review = "I love the fast delivery, but the product quality could be better." | |
# 进行情感分析 | |
sentiment_result = sentiment_classifier(user_review)[0] | |
print("情感分析结果:", sentiment_result) | |
########################################## | |
# Step 2:回复生成 - 根据情感生成自动回复 | |
########################################## | |
# 使用 microsoft/DialoGPT-medium 模型生成回复 | |
reply_generator = pipeline("text-generation", model="microsoft/DialoGPT-medium") | |
# 根据情感构造 Prompt,本次修改在 prompt 中加入明确的“回复:”提示, | |
# 以引导模型产生新内容而不是简单重复输入内容 | |
label = sentiment_result['label'].upper() | |
if "POSITIVE" in label or "LABEL_1" in label: | |
prompt = (f"用户评论表达了正面情感:\n评论内容: {user_review}\n" | |
f"请给出一段贴心温暖、表达感谢和认可,并让用户感到愉快的回复:\n回复:") | |
elif "NEGATIVE" in label or "LABEL_0" in label: | |
prompt = (f"用户评论表达了负面情感:\n评论内容: {user_review}\n" | |
f"请给出一段温柔体贴、安抚用户并表示歉意的回复:\n回复:") | |
else: | |
prompt = f"用户评论: {user_review}\n请给出一段中肯的回复:\n回复:" | |
print("\n生成回复的提示词 (Prompt):") | |
print(prompt) | |
# 生成回复文本,设置 truncation=True 避免长度问题,并适当提高采样温度与 top_p 值 | |
generated = reply_generator(prompt, max_length=150, do_sample=True, top_p=0.95, temperature=0.9, truncation=True) | |
generated_text = generated[0]['generated_text'] | |
# 如果生成结果包含完整 prompt,则剔除 | |
if generated_text.startswith(prompt): | |
final_reply = generated_text[len(prompt):].strip() | |
else: | |
final_reply = generated_text.strip() | |
print("\n生成的回复文本:") | |
print(final_reply) | |