语言:
- 多语言
- 英语
- 法语
- 西班牙语
- 德语
- 希腊语
- 保加利亚语
- 俄语
- 土耳其语
- 阿拉伯语
- 越南语
- 泰语
- 中文
- 印地语
- 斯瓦希里语
- 乌尔都语
标签:
数据集:
- 多语言自然语言推理(multi_nli)
- 跨语言自然语言推理(xnli)
许可证: MIT
管道标签: 零样本分类
示例:
- 文本: "2020年您投票给谁?"
候选标签: "外交政策, 欧洲, 选举, 商业, 政治"
多类别: true
- 文本: "2020年您投票给谁?"(阿拉伯语)
候选标签: "السياسة الخارجية, أوروبا, الانتخابات, الأعمال, السياسة"(外交政策, 欧洲, 选举, 商业, 政治)
多类别: true
- 文本: "2020年您投票给谁?"(土耳其语)
候选标签: "dış politika, Avrupa, seçimler, ticaret, siyaset"(外交政策, 欧洲, 选举, 商业, 政治)
多类别: true
XLM-RoBERTa大型跨语言自然语言推理模型
模型描述
本模型基于xlm-roberta-large预训练模型,在15种语言的NLI数据上进行微调。专门用于零样本文本分类任务,可与Hugging Face的ZeroShotClassificationPipeline配合使用。
使用场景
本模型专为零样本文本分类设计,尤其适用于非英语语种。基于跨语言NLI数据集XNLI微调,支持以下所有XNLI语种:
(此处保留原语言列表)
由于基础模型预训练涵盖100种语言(详见XLM Roberata论文附录A),该模型在超出上述列表的语言中也展现了一定效果。
英语分类推荐使用bart-large-mnli或其蒸馏版本。
使用零样本分类管道
from transformers import pipeline
classifier = pipeline("zero-shot-classification",
model="joeddav/xlm-roberta-large-xnli")
支持跨语言分类,标签与待分类文本可使用不同语言:
sequence_to_classify = "2020年您投票给谁?"
candidate_labels = ["欧洲", "公共卫生", "政治"]
classifier(sequence_to_classify, candidate_labels)
默认假设模板为英语"This text is {}"。单语言场景建议翻译该模板:
sequence_to_classify = "¿A quién vas a votar en 2020?"
candidate_labels = ["Europa", "salud pública", "política"]
hypothesis_template = "Este ejemplo es {}."
手动PyTorch实现
from transformers import AutoModelForSequenceClassification, AutoTokenizer
nli_model = AutoModelForSequenceClassification.from_pretrained('joeddav/xlm-roberta-large-xnli')
tokenizer = AutoTokenizer.from_pretrained('joeddav/xlm-roberta-large-xnli')
premise = sequence
hypothesis = f'This example is {label}.'
x = tokenizer.encode(premise, hypothesis, return_tensors='pt',
truncation_strategy='only_first')
logits = nli_model(x.to(device))[0]
entail_contradiction_logits = logits[:,[0,2]]
probs = entail_contradiction_logits.softmax(dim=1)
prob_label_is_true = probs[:,1]
训练过程
模型基于原论文描述的100种语言预训练,后在MNLI训练集与XNLI验证/测试集的联合数据上进行NLI任务微调。最终额外训练一个周期,期间将XNLI数据的前提和假设进行跨语言配对(同源英语样本的不同语言翻译)。