zero-shot文字分类模型

我们选择facebook的bart-large-mnli模型做分类处理,bart-large-mnli是基于自然语言推理(Natural Language Inference)的零次文字分类模型。

首先需要安装Huggingface的transformers.

pip install transformers

Huggingface的介绍页面:https://huggingface.co/facebook/bart-large-mnli。
如下示例代码,来判断 "one day I will see the world"这句话,属于三个分类中的哪一个(travel,cooking,dancing):

from transformers import pipeline

zero_shot_classifier = pipeline(
    "zero-shot-classification",
    model="facebook/bart-large-mnli"
)

sequence_to_classify = "one day I will see the world"
candidate_labels = ['travel', 'cooking', 'dancing']

classfication = zero_shot_classifier(
    sequence_to_classify,
    candidate_labels,
    multi_label=True      # 可匹配多个label分类
)
# print(classfication)

print(classfication['labels'])
print(classfication['scores'])

运行之后,得到如下结果,travel标签最为匹配,得分为0.99:

['travel', 'dancing', 'cooking']
[0.994511067867279, 0.005706176161766052, 0.0018192899879068136]

更换一组如下数据:

sequence_to_classify = "The company's quarterly earnings increased by 20%, exceeding market expectations."
candidate_labels = ["finance", "sports", "politics", "technology"]

得到结果如下,finance标签最为匹配,得分0.85:

['finance', 'technology', 'sports', 'politics']
[0.8526014089584351, 0.5210740566253662, 0.004615711513906717, 0.000885962916072458]

这次,给定一个网址,而非之前的自然语言,测试下分类情况:

sequence_to_classify = "https://nba.sina.com.cn/"

得到结果如下,sports标签最为匹配,得分为0.83。

['sports', 'technology', 'finance', 'politics']
[0.8341358304023743, 0.20186419785022736, 0.07376285642385483, 0.004406137391924858]
### Zero-Shot 学习的概念 Zero-shot 学习是一种机器学习范式,在这种模式下,模型能够识别并分类未曾见过的数据类别。这意味着即使在训练过程中从未接触过某些类别的数据,该模型也能够在推理阶段正确处理这些新类别[^1]。 对于自然语言处理领域而言,zero-shot 能力尤为重要。通过预训练大规模语料库上的通用特征表示,使得模型具备理解未见文本的能力。例如,当给定一个新的任务描述时,无需额外标注即可完成相应的工作流[^3]。 ### 应用实例 #### 文本分类 假设有一个用于情感分析的任务,其中包含了正面评价和负面评价两类标签;而测试集中出现了中立态度这一全新类别。如果采用传统的监督式算法,则无法直接应对这种情况。但是借助 zero-shot 技术的支持,可以利用已有的知识迁移来预测未知的情感倾向。 ```python from transformers import pipeline classifier = pipeline('sentiment-analysis', model='nlptown/bert-base-multilingual-uncased-sentiment') result = classifier(['I love this product!', 'This is terrible.', 'It just works fine.']) print(result) ``` 此代码片段展示了如何使用 Hugging Face Transformers 库加载一个支持多语言的 BERT 模型来进行 sentiment analysis,并且它天然具有一定的 zero-shot 性能,即可以在未经特定微调的情况下对新的输入做出合理的判断。 #### 图像识别 除了 NLP 领域外,计算机视觉同样受益匪浅。比如 ImageNet 数据集上训练得到的对象检测网络可能被用来辨识不在原始数据库内的物体种类——只要提供适当的文字说明作为提示词(prompt),那么即便是在缺乏对应图像样本的前提下也能实现较为准确的结果推断[^2]。 ### 原理剖析 为了使模型获得 zero-shot 的能力,通常会采取两种主要策略: - **基于属性的方法**:构建一个映射函数,将不同对象转换成一组共享特性向量空间中的点位坐标。这样一来,即使是之前没见过的新事物也可以依据其固有特点找到最接近的位置从而作出合理推测。 - **跨模态关联建模**:让神经架构学会捕捉多种感官信息之间的内在联系规律,如文字与图片间的相互关系等。这样做的好处在于一旦掌握了某种表达形式下的概念定义之后便很容易推广至其他表现形态之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值