固定标签分类模型通常只能在训练时确定的标签集合中预测。零样本分类则允许调用时提供候选标签,适合先试验一个新分类体系;但它使用预训练知识判断,并不是没有训练过的模型,也不保证新标签一定可靠。本文用英文 BART-MNLI 对比单标签与多标签输出。
先按任务比较两种路线
| 维度 | 固定标签分类 | NLI 零样本分类 |
|---|---|---|
| 标签来源 | 模型配置和训练任务 | 本次 candidate_labels |
| 增加类别 | 通常要适配输出头和训练数据 | 可传新标签,但仍需测试 |
| 当前领域样本 | 可用于监督训练与独立验证 | 此调用不要求先做领域训练,仍需要标注样本验收 |
| 适用起点 | 标签稳定、有足够样本 | 试验标签边界、探索少样本任务 |
确认英文模型与候选标签
facebook/bart-large-mnli 基于自然语言推断:原句作为前提,候选标签被放入假设句。本例用英文输入和英文标签;不能把该英文检查点直接当作已验收的中文分类器。选标签时要写清业务含义和互斥关系,“其他”这个词本身也不会产生可靠的未知类别拒绝机制。

示例面向有基础 Python 经验的读者,按 Transformers 4.57.1 接口编写。Windows 可用以下独立环境;macOS/Linux 用 python3 创建环境,并把后续解释器路径换为 .venv/bin/python。首次加载模型需要网络、磁盘和足够内存,CPU 可以执行但速度取决于机器。安装失败时先看 Python 版本与 pip 报错,不能把安装成功当成模型已跑通。
py -m venv .venv
.venv\Scripts\python -m pip install "torch>=2.6" "transformers==4.57.1" safetensors
同时运行单标签和多标签
保存为 zero_demo.py 并运行。演示反馈同时含物流延迟和包装受损;用这句话检查你是否需要允许多个标签。候选标签来自本次调用,不能将返回分数误当成跨模型统一的评价指标。
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli", device=-1)
text = "My parcel arrived late and the package was damaged."
labels = ["delivery delay", "damaged package", "payment problem"]
single = classifier(text, candidate_labels=labels,
hypothesis_template="This message reports {}.", multi_label=False)
multi = classifier(text, candidate_labels=labels,
hypothesis_template="This message reports {}.", multi_label=True)
for mode, result in [("single",single),("multi",multi)]:
print(mode, list(zip(result["labels"], result["scores"])))
assert set(result["labels"]) == set(labels)
assert len(result["scores"]) == len(labels)
assert abs(sum(single["scores"])-1.0) < 1e-5
怎样解读两个结果
multi_label=False 会让同一句的各候选分数合计接近 1,模型在提供的集合内竞争。multi_label=True 独立计算各候选的分数,多个标签可以同时高分;总和不必为 1。核对该演示是否把延迟与包装损坏都列为相关,再用只涉及付款的反馈做反例。分数排序是实际运行后观察的结果,本文没有给出固定数值。
为什么候选标签要一起验收
加一个相近标签可能改变单标签模式的归一化分数。先固定标签描述、hypothesis_template 与模型版本,用同一组人工样本检查漏分、误分和冲突;再改标签时重新测试,不能沿用旧阈值。本例没有建立领域评测集,所以不能宣称分类准确率优于固定标签模型。
相关问答
是否应把所有现有分类都改成零样本?没有这个结论。稳定高频任务可比较固定标签模型与本路线在同一批标注样本上的错误、资源占用和维护成本;业务规则清晰的情况也可以直接用规则处理。
本文已核对官方接口与模型资料,示例输入为人为构造;未在本文环境下载并实跑所列公开模型,未测速度或任务准确率。下面的检查方法由你在实际运行后执行,不能把演示代码当成质量评测结果。
官方资料与版本依据
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31353.html