模型简介
模型特点
模型能力
使用案例
🚀 多语言 ernie-m-large-mnli-xnli
本多语言模型可对100种语言进行自然语言推理(NLI),因此也适用于多语言零样本分类。该模型能有效解决不同语言间自然语言推理和零样本分类的数据稀缺问题,为多语言文本处理提供了强大的工具。
🚀 快速开始
本模型可进行自然语言推理(NLI),适用于多语言零样本分类。以下是使用示例:
简单的零样本分类管道
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model="MoritzLaurer/ernie-m-large-mnli-xnli")
sequence_to_classify = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
candidate_labels = ["politics", "economy", "entertainment", "environment"]
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 torch.device("cpu")
model_name = "MoritzLaurer/ernie-m-large-mnli-xnli"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name).to(device)
premise = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
hypothesis = "Emmanuel Macron is the President of France"
input = tokenizer(premise, hypothesis, truncation=True, return_tensors="pt")
output = model(input["input_ids"].to(device)) # device = "cuda:0" or "cpu"
prediction = torch.softmax(output["logits"][0], -1).tolist()
label_names = ["entailment", "neutral", "contradiction"]
prediction = {name: round(float(pred) * 100, 1) for pred, name in zip(prediction, label_names)}
print(prediction)
✨ 主要特性
- 该多语言模型可以对100种语言进行自然语言推理(NLI),适用于多语言零样本分类。
- 基础模型由百度基于Meta的RoBERTa进行预训练,预训练数据为CC100多语言数据集。
- 模型在包含15种语言的假设 - 前提对的XNLI数据集以及英文MNLI数据集上进行了微调。
- 该模型在论文this paper中被百度提出,性能优于同等规模的RoBERTa模型。
📦 安装指南
ernie - m架构仅支持transformers==4.27或更高版本(截至2023年3月3日尚未发布,会在推理小部件中导致错误)。在4.27版本发布之前运行该模型,你需要从源代码安装transformers:
pip install git+https://github.com/huggingface/transformers
同时安装sentencepiece分词器:
pip install sentencepiece
发布之后,你可以运行:
pip install transformers[sentencepiece]>=4.27
📚 详细文档
模型描述
这个多语言模型能够对100种语言进行自然语言推理(NLI),因此也适用于多语言零样本分类。基础模型由百度基于Meta的RoBERTa进行预训练,预训练数据为CC100多语言数据集。然后,它在XNLI数据集(包含15种语言的假设 - 前提对)以及英文MNLI数据集上进行了微调。该模型由百度在this paper中提出,性能优于同等规模的RoBERTa模型。
如果你正在寻找一个速度更快(但性能稍低)的模型,可以尝试[multilingual - MiniLMv2 - L6 - mnli - xnli](https://huggingface.co/MoritzLaurer/multilingual - MiniLMv2 - L6 - mnli - xnli)。如果你正在寻找一个在性能和速度之间取得良好平衡的基础规模模型,可以尝试[mDeBERTa - v3 - base - mnli - xnli](https://huggingface.co/MoritzLaurer/mDeBERTa - v3 - base - mnli - xnli)。
训练数据
该模型在XNLI开发数据集和MNLI训练数据集上进行训练。XNLI开发集由2490篇从英语专业翻译为其他14种语言的文本组成(总共37350篇文本)(参见this paper)。请注意,XNLI包含15种语言的MNLI数据集的15个机器翻译版本的训练集,但由于这些机器翻译存在质量问题,该模型仅在XNLI开发集的专业翻译和原始英文MNLI训练集(392702篇文本)上进行训练。不使用机器翻译文本可以避免模型对这15种语言过拟合;避免对ernie - m预训练的其他85种语言的灾难性遗忘;并显著降低训练成本。
训练过程
ernie - m - large - mnli - xnli使用Hugging Face训练器进行训练,使用了以下超参数:
training_args = TrainingArguments(
num_train_epochs=3, # 总训练轮数
learning_rate=3e-05,
per_device_train_batch_size=16, # 训练期间每个设备的批量大小
gradient_accumulation_steps=2,
per_device_eval_batch_size=16, # 评估批量大小
warmup_ratio=0.1, # 学习率调度器的热身步数
weight_decay=0.01, # 权重衰减强度
fp16=True,
)
评估结果
该模型在XNLI测试集的15种语言上进行了评估(每种语言5010篇文本,总共75150篇)。请注意,多语言NLI模型能够在不接收特定语言的NLI训练数据的情况下对NLI文本进行分类(跨语言迁移)。这意味着该模型也能够对mDeBERTa训练的其他85种语言进行NLI,但性能很可能低于XNLI中可用的语言。
还请注意,如果模型中心的其他多语言模型声称在非英语语言上的性能约为90%,作者很可能在测试过程中犯了错误,因为最新的论文中没有一篇显示在XNLI上的多语言平均性能比80%高出几个百分点(参见here或here)。
数据集 | 平均XNLI | MNLI_m | MNLI_mm | 阿拉伯语 | 保加利亚语 | 德语 | 希腊语 | 英语 | 西班牙语 | 法语 | 印地语 | 俄语 | 斯瓦希里语 | 泰语 | 土耳其语 | 乌尔都语 | 越南语 | 中文 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
准确率 | 0.822 | 0.881 | 0.878 | 0.818 | 0.853 | 0.84 | 0.837 | 0.882 | 0.855 | 0.849 | 0.799 | 0.83 | 0.751 | 0.809 | 0.818 | 0.76 | 0.826 | 0.799 |
推理速度(文本/秒,A100,批量大小=120) | 1415.0 | 783.0 | 774.0 | 1487.0 | 1396.0 | 1430.0 | 1206.0 | 1623.0 | 1482.0 | 1291.0 | 1302.0 | 1366.0 | 1484.0 | 1500.0 | 1609.0 | 1344.0 | 1403.0 | 1302.0 |
🔧 技术细节
模型的训练和评估涉及到自然语言推理(NLI)和多语言处理的相关技术。在训练过程中,通过选择合适的预训练模型和微调数据集,避免了使用机器翻译文本带来的问题,如过拟合、灾难性遗忘和高训练成本等。评估时利用XNLI测试集对模型在15种语言上的性能进行了评估,同时考虑了模型的跨语言迁移能力。
📄 许可证
本项目采用Apache - 2.0许可证。
⚠️ 重要提示
请参考原始ernie - m论文和不同NLI数据集的相关文献,以了解潜在的偏差。
💡 使用建议
- 如果你需要更快的推理速度但对性能要求不高,可以尝试[multilingual - MiniLMv2 - L6 - mnli - xnli](https://huggingface.co/MoritzLaurer/multilingual - MiniLMv2 - L6 - mnli - xnli)。
- 如果你希望在性能和速度之间取得平衡,可以尝试[mDeBERTa - v3 - base - mnli - xnli](https://huggingface.co/MoritzLaurer/mDeBERTa - v3 - base - mnli - xnli)。
📖 引用
如果你使用了这个模型,请引用:Laurer, Moritz, Wouter van Atteveldt, Andreu Salleras Casas, and Kasper Welbers. 2022. ‘Less Annotating, More Classifying – Addressing the Data Scarcity Issue of Supervised Machine Learning with Deep Transfer Learning and BERT - NLI’. Preprint, June. Open Science Framework. https://osf.io/74b8k.
💬 合作建议或问题咨询
如果你有问题或合作想法,请通过m{dot}laurer{at}vu{dot}nl联系我,或者在[LinkedIn](https://www.linkedin.com/in/moritz - laurer/)上与我交流。



