语言:
- 多语言
- 英语
- 阿拉伯语
- 保加利亚语
- 德语
- 希腊语
- 西班牙语
- 法语
- 印地语
- 俄语
- 斯瓦希里语
- 泰语
- 土耳其语
- 乌尔都语
- 越南语
- 中文
许可证: mit
标签:
- 零样本分类
- 文本分类
- 自然语言推理
- pytorch
评估指标:
- 准确率
数据集:
- multi_nli
- xnli
管道标签: 零样本分类
小部件示例:
- 文本: "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
候选标签: "政治, 经济, 娱乐, 环境"
多语言XLM-V-base-mnli-xnli模型
模型描述
该多语言模型能够对116种语言进行自然语言推理(NLI),因此也适用于多语言零样本分类任务。基础模型XLM-V-base由Meta AI研发,基于CC100多语言数据集预训练,随后在XNLI数据集(包含15种语言的假设-前提对)和英文MNLI数据集上微调。XLM-V-base于2023年1月23日通过此论文发布,其核心创新在于更大更优的词表:此前多语言模型仅包含25万词元,而XLM-V拥有100万词元,这一改进显著提升了多语言表征能力。
使用方法
简易零样本分类流程
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/xlm-v-base-mnli-xnli")
sequence_to_classify = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
candidate_labels = ["政治", "经济", "娱乐", "环境"]
output = classifier(sequence_to_classify, candidate_labels, multi_label=False)
print(output)
NLI应用示例
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_name = "MoritzLaurer/xlm-v-base-mnli-xnli"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
premise = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
hypothesis = "Emmanuel Macron是法国总统"
input = tokenizer(premise, hypothesis, truncation=True, return_tensors="pt")
output = model(input["input_ids"].to(device))
prediction = torch.softmax(output["logits"][0], -1).tolist()
label_names = ["蕴含", "中立", "矛盾"]
prediction = {name: round(float(pred) * 100, 1) for pred, name in zip(prediction, label_names)}
print(prediction)
训练数据
本模型基于XNLI开发集和MNLI训练集微调。XNLI开发集包含2490条专业翻译文本(覆盖14种语言,总计37350条),详见此论文。值得注意的是,虽然XNLI包含15种语言的MNLI机器翻译训练集,但为避免机器翻译质量问题,本模型仅使用XNLI专业翻译数据和原始英文MNLI数据(392702条)。这种策略既防止模型过拟合于15种语言,又保留了XLM-V在其余101种预训练语言上的能力,同时大幅降低训练成本。
训练参数
采用Hugging Face训练器,关键超参数如下:
训练参数 = TrainingArguments(
训练轮数=3,
学习率=2e-05,
单设备训练批大小=32,
单设备评估批大小=120,
学习率预热比例=0.06,
权重衰减=0.01,
)
评估结果
在XNLI测试集(15种语言,每种5010条,总计75150条)上评估。需注意多语言NLI模型具备跨语言迁移能力,即使未接受特定语言的NLI训练数据也能进行分类。对于XNLI未覆盖的101种语言,模型性能可能较低。
原论文报告XLM-V平均XNLI准确率为0.76(参见表2),本实现达到0.78,提升可能源于MNLI数据的加入。mDeBERTa-v3-base-mnli-xnli平均性能0.808,体积更小(560MB vs 3GB)且速度更快(得益于精简词表),其优势可能来自改进的预训练目标。实际应用中可根据任务需求选择,但XLM-V在部分语言上可能表现更优。
数据集 |
平均 |
ar |
bg |
de |
el |
en |
es |
fr |
hi |
ru |
sw |
th |
tr |
ur |
vi |
zh |
准确率 |
0.780 |
0.757 |
0.808 |
0.796 |
0.79 |
0.856 |
0.814 |
0.806 |
0.751 |
0.782 |
0.725 |
0.757 |
0.766 |
0.729 |
0.784 |
0.782 |
A100处理速度(文本/秒) |
不适用 |
3501 |
3324 |
3438 |
3174 |
3713 |
3500 |
3129 |
3042 |
3419 |
3468 |
3782 |
3772 |
3099 |
3117 |
4217 |
数据集 |
mnli_m(英) |
mnli_mm(英) |
准确率 |
0.852 |
0.854 |
A100处理速度(文本/秒) |
2098 |
2170 |
局限性与偏差
请参考原始XLM-V论文及各类NLI数据集相关文献了解潜在偏差。
引用
若使用本模型,请引用:Laurer, Moritz等. 2022.《减少标注,增加分类——基于深度迁移学习和BERT-NLI解决监督机器学习的数据稀缺问题》. 预印本. Open Science Framework. https://osf.io/74b8k.
合作或咨询
请联系:m.lauer@vu.nl 或访问LinkedIn