Transformers 多语言模型 | 十一
本文是全系列中第4 / 13篇:Transformers
- Transformers 词汇表 | 二
- Transformers 从pytorch-pretrained-bert迁移 | 十
- Transformers 库常见的用例 | 三
- Transformers 多语言模型 | 十一
- Transformers 中使用 TorchScript | 四
- Transformers 模型上传和共享 | 五
- Transformers 示例 | 六
- Transformers 简介(上)
- Transformers 加载预训练模型 | 七
- Transformers 简介(下)
- Transformers 保存并加载模型 | 八
- Transformers 快速入门 | 一
- Transformers 转换Tensorflow的Checkpoints | 九
作者|huggingface
编译|VK
来源|Github
该库中可用的大多数模型都是单语言模型(英语,中文和德语)。有一些多语言模型可用,并且与单语言模型具有不同的机制。本页详细介绍了这些模型的用法。
当前支持多种语言的两个模型是BERT和XLM。
XLM
XLM共有10个不同的checkpoints,其中只有一个是单语言的。剩下的9个模型checkpoints可以分为两类:使用语言嵌入的checkpoints和不使用语言嵌入的checkpoints
XLM和语言嵌入
本节涉及以下checkpoints:
xlm-mlm-ende-1024
(掩码语言建模,英语-德语)xlm-mlm-enfr-1024
(掩码语言建模,英语-法语)xlm-mlm-enro-1024
(掩码语言建模,英语-罗马尼亚语)xlm-mlm-xnli15-1024
(掩码语言建模,XNLI语言)xlm-mlm-tlm-xnli15-1024
(掩码语言建模+翻译,XNLI语言)xlm-clm-enfr-1024
(因果语言建模,英语-法语)xlm-clm-ende-1024
(因果语言建模,英语-德语)
这些checkpoints需要语言嵌入,这些语言嵌入将指定推理时使用的语言。这些语言嵌入表示为张量,其形状与传递给模型的输入idS相同。这些张量中的值取决于所使用的语言,并且可以使用tokenizers中的lang2id
和 id2lang
属性
这是一个使用xlm-clm-enfr-1024checkpoints
的示例(因果语言建模,英语-法语):
import torch
from transformers import XLMTokenizer, XLMWithLMHeadModel
tokenizer = XLMTokenizer.from_pretrained("xlm-clm-1024-enfr")
该模型/tokenizer处理不同语言以及这些语言的ID可以使用lang2id
属性标明:
print(tokenizer.lang2id) # {'en': 0, 'fr': 1}
在模型传递语言参数时,应使用这些ID。让我们定义输入:
input_ids = torch.tensor([tokenizer.encode("Wikipedia was used to")]) # batch大小为1
现在,我们应该使用先前定义的语言ID来定义语言嵌入。我们想创建一个张量填充适当的语言ID,其大小与input_ids相同。对于英语,id为0:
language_id = tokenizer.lang2id['en'] # 0
langs = torch.tensor([language_id] * input_ids.shape[1]) # torch.tensor([0, 0, 0, ..., 0])
langs = langs.view(1, -1) # 现在是 [1, sequence_length]
然后,你可以将其作为模型的输入:
outputs = model(input_ids, langs=langs)
示例run_generation.py
可以使用语言嵌入从XLM使用CLM checkpoints生成文本。
没有语言嵌入的XLM
本节涉及以下checkpoints:
–xlm-mlm-17-1280
(掩码语言建模,17种语言)
–xlm-mlm-100-1280
(掩码语言建模,100种语言)
这些checkpoints在推理时不需要语言嵌入。这些模型用于具有通用句子表示形式,与前面提到的XLM checkpoints不同。
BERT
BERT具有两个可用于多语言任务的checkpoints:
–bert-base-multilingual-uncased
(掩码语言建模+下一个句子预测,102种语言)
–基于bert-base-multilingual-cased
(掩码语言建模+下一句预测,104种语言)
这些checkpoints在推理时不需要语言嵌入。他们会识别在上下文中使用的语言并据此进行推断。
原文链接:https://huggingface.co/transformers/multilingual.html
原创文章,作者:磐石,如若转载,请注明出处:https://panchuang.net/2020/05/05/transformers-%e5%a4%9a%e8%af%ad%e8%a8%80%e6%a8%a1%e5%9e%8b-%e5%8d%81%e4%b8%80/