File size: 2,720 Bytes
1d345a6
ae01e74
1d345a6
ae01e74
 
 
1d345a6
ae01e74
 
 
1d345a6
ae01e74
 
431a71c
 
b388f27
ae01e74
1d345a6
ae01e74
 
 
 
 
 
 
 
1d345a6
ae01e74
 
 
 
 
 
 
 
 
 
 
 
 
1d345a6
ae01e74
 
 
 
 
 
1d345a6
ae01e74
 
 
 
 
 
 
 
 
 
 
 
 
1d345a6
 
ae01e74
 
1d345a6
ae01e74
 
 
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import gradio as gr
from transformers import pipeline

# --- 全局变量和模型加载 ---
# 在应用启动时,我们只加载一次模型,这对于性能至关重要。
# 这样可以避免每次用户查询时都重新加载模型。

# 1. 使用 pipeline 加载你的情感分类模型
# 注意:模型名称需要是 Hugging Face Hub 上的准确名称
classifier = pipeline("text-classification", model="WJL110/emotion-classifier")

# 2. 定义标签映射,将模型输出的 LABEL_0 等转换为更友好的中文标签
label_map = {
    "LABEL_0": "快乐",
    "LABEL_1": "愤怒",
    "LABEL_2": "悲伤"
}

# --- 核心推理函数 ---
# 这个函数将被 Gradio 调用。它接收用户输入,并返回模型预测结果。
def classify_emotion(text):
    """
    对输入的文本进行情感分析。
    """
    if not text.strip():  # 处理空输入
        return "请输入一些文本进行分析。"

    # 使用模型进行预测
    # pipeline 返回一个列表,其中包含一个字典,例如:[{'label': 'LABEL_0', 'score': 0.99}]
    result = classifier(text)[0]
    
    # 从结果中提取标签和置信度,并进行格式化
    predicted_label = result['label']
    confidence = result['score']
    
    # 将技术标签转换为中文情感名称
    emotion = label_map[predicted_label]
    
    # 返回一个格式化的字符串作为结果
    return f"预测情感: **{emotion}**\n置信度: **{confidence:.4f}**"

# --- Gradio 界面定义 ---
# 使用 gr.Interface 创建一个简单的 Web 界面
# fn: 指定要调用的函数 (我们的 classify_emotion)
# inputs: 指定输入组件 (一个文本框)
# outputs: 指定输出组件 (一个文本框,我们设置它能渲染 Markdown)
# title, description: 设置界面的标题和描述

demo = gr.Interface(
    fn=classify_emotion,
    inputs=gr.Textbox(
        label="输入文本",
        placeholder="在这里输入你想分析情感的句子,例如:今天天气真好!"
    ),
    outputs=gr.Textbox(
        label="分析结果",
        lines=3,  # 设置输出框的高度
        interactive=False  # 用户不能编辑输出框
    ),
    title="情感分析器 (Emotion Classifier)",
    description="这个应用使用 `WJL110/emotion-classifier` 模型来分析文本中的情感倾向,可识别快乐、愤怒和悲伤三种情绪。"
)

# --- 启动应用 ---
# 当这个脚本被直接运行时,启动 Gradio 服务
if __name__ == "__main__":
    # 在 Hugging Face Spaces 上,需要将 share 设置为 False
    # server_name="0.0.0.0" 是让应用在容器的所有网络接口上监听,这是 Spaces 所必需的
    demo.launch(server_name="0.0.0.0", share=False)