4. 使用Transformers Pipeline进行文本分类

任务目标

使用 Hugging Face Transformers 库的 pipeline 接口,加载一个预训练的中文情感分类模型,对给定的中文文本进行情感极性判断(正面/负面),并输出置信度分数。本案例聚焦于 pipeline 的最简调用闭环,不涉及模型微调。

环境依赖

  • Python 3.9+
  • 安装依赖:pip install transformers torch
  • 首次运行会自动从 Hugging Face Hub 下载模型(约 400MB),需保持网络畅通

关键完整代码

from transformers import pipeline

# 加载中文情感分类模型(基于BERT的中文预训练权重)
classifier = pipeline(
    "sentiment-analysis",
    model="uer/roberta-base-finetuned-jd-binary-chinese"
)

# 待分类的输入文本
texts = [
    "这款手机性价比很高,运行流畅,值得购买。",
    "物流太慢了,等了三天才发货,体验很差。"
]

# 执行推理
results = classifier(texts)

# 打印结果
for text, result in zip(texts, results):
    print(f"文本: {text}")
    print(f"  标签: {result['label']}, 置信度: {result['score']:.4f}\n")

运行方式

  1. 将上述代码保存为 sentiment_demo.py。
  2. 在终端执行:python sentiment_demo.py
  3. 首次运行会下载模型,之后直接加载本地缓存。

验证方法与判定标准

程序正常退出且无报错,输出中每条文本对应一个结果。该模型的标签映射为:LABEL_0 表示负面,LABEL_1 表示正面。判定通过的预期输出如下(置信度数值可能因模型版本略有浮动,但标签不应改变):

文本: 这款手机性价比很高,运行流畅,值得购买。
  标签: LABEL_1, 置信度: 0.99xx

文本: 物流太慢了,等了三天才发货,体验很差。
  标签: LABEL_0, 置信度: 0.99xx

若两条文本分别被判定为正面(LABEL_1)和负面(LABEL_0),且置信度均大于 0.9,则案例验证通过。

常见问题

  • 网络错误:若下载失败,可设置镜像环境变量 export HF_ENDPOINT=https://hf-mirror.com 后重试。
  • 设备选择:默认使用 CPU 推理。若希望使用 GPU,可在 pipeline 中增加参数 device=0。
  • 自定义文本:直接修改 texts 列表中的内容即可测试其他句子。