Gemini / app.py
WJL110's picture
Create app.py
92a5737 verified
import gradio as gr
from transformers import pipeline
# 1. 加载模型
# 第一次启动时会下载模型,可能需要几秒钟
classifier = pipeline("text-classification", model="WJL110/emotion-classifier")
# 2. 定义标签映射
label_map = {
"LABEL_0": "快乐",
"LABEL_1": "愤怒",
"LABEL_2": "悲伤"
}
def respond(message, history):
"""
message: 用户输入的当前文本
history: 之前的对话历史 (分类模型通常不需要上下文,所以这里我们只处理当前message)
"""
if not message:
return "请输入内容"
try:
# 进行推理
result = classifier(message)[0]
# 获取结果
raw_label = result['label']
score = result['score']
# 映射标签
emotion = label_map.get(raw_label, raw_label) # 如果找不到key,就显示原始label
# 格式化回复内容
response_text = (
f"🤖 分析结果:\n"
f"------------------\n"
f"预测情感:**{emotion}**\n"
f"置信度:{score:.2%}"
)
return response_text
except Exception as e:
return f"发生错误: {str(e)}"
# 3. 创建聊天界面
# 虽然这是分类任务,但使用 ChatInterface 可以给用户一种交互的感觉
demo = gr.ChatInterface(
fn=respond,
title="情感分析机器人 (Emotion Classifier)",
description="输入一段文字,我会分析其中包含的情感(快乐、愤怒、悲伤)。",
examples=["今天真是太开心了!", "这件事让我很生气。", "听到这个消息很难过。"],
retry_btn=None,
undo_btn=None,
clear_btn="清除",
)
if __name__ == "__main__":
demo.launch()