Spaces:
Sleeping
Sleeping
File size: 2,382 Bytes
16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 fb3f6b2 16d19c3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# 导入必要的库
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)
|