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")
运行方式
- 将上述代码保存为
sentiment_demo.py。 - 在终端执行:
python sentiment_demo.py - 首次运行会下载模型,之后直接加载本地缓存。
验证方法与判定标准
程序正常退出且无报错,输出中每条文本对应一个结果。该模型的标签映射为: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列表中的内容即可测试其他句子。