bert-base-multilingual-cased
简介
基于掩码语言建模(MLM)目标,在维基百科规模最大的前104种语言上预训练的模型。该模型首次发表于此论文,并在此仓库中首次发布。此模型区分大小写:例如,它能够识别"english"与"English"之间的差异。
模型卡片
模型配置
模型详情
已翻译BERT multilingual base model (cased)
基于掩码语言建模(MLM)目标,在包含最大规模Wikipedia的104种语言上预训练的模型。
该模型在此论文中提出,并首次发布在
此仓库中。本模型区分大小写:它能识别
"english"和"English"之间的差异。
免责声明:发布BERT的团队并未为该模型编写模型卡,因此本模型卡由
Hugging Face团队编写。
模型描述
BERT是一个transformer模型,以自监督方式在大型多语言语料库上进行预训练。这意味着
它仅基于原始文本进行预训练,没有任何人工标注(因此可以使用大量
公开数据),并通过自动流程从这些文本中生成输入和标签。更具体地说,
它通过两个目标进行预训练:
- 掩码语言建模(MLM):给定一个句子,模型随机遮蔽输入中15%的词,然后
将整个被遮蔽的句子输入模型,并需要预测被遮蔽的词。这与传统的
循环神经网络(RNN)不同,后者通常逐个词处理,也与GPT等自回归模型不同,
后者在内部遮蔽未来的token。这种方法使模型能够学习句子的双向表示。 - 下一句预测(NSP):在预训练期间,模型将两个被遮蔽的句子拼接作为输入。有时
它们对应原始文本中相邻的句子,有时则不是。模型随后需要
预测这两个句子是否前后相连。
通过这种方式,模型学习了训练集中语言的内部表示,可用于
提取下游任务所需的特征:例如,如果你有一个带标签的句子数据集,你可以
使用BERT模型生成的特征作为输入来训练一个标准分类器。
预期用途与局限性
你可以将原始模型用于掩码语言建模或下一句预测,但它主要面向
在下游任务上进行微调。请参阅模型中心查找
你感兴趣任务的微调版本。
请注意,该模型主要面向需要利用整个句子(可能被遮蔽)进行决策的任务进行微调,
例如序列分类、token分类或问答。对于文本生成等任务,
你应该考虑GPT2等模型。
如何使用
你可以直接使用带有掩码语言建模pipeline的模型:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-multilingual-cased')
>>> unmasker("Hello I'm a [MASK] model.")
[{'sequence': "[CLS] Hello I'm a model model. [SEP]",
'score': 0.10182085633277893,
'token': 13192,
'token_str': 'model'},
{'sequence': "[CLS] Hello I'm a world model. [SEP]",
'score': 0.052126359194517136,
'token': 11356,
'token_str': 'world'},
{'sequence': "[CLS] Hello I'm a data model. [SEP]",
'score': 0.048930276185274124,
'token': 11165,
'token_str': 'data'},
{'sequence': "[CLS] Hello I'm a flight model. [SEP]",
'score': 0.02036019042134285,
'token': 23578,
'token_str': 'flight'},
{'sequence': "[CLS] Hello I'm a business model. [SEP]",
'score': 0.020079681649804115,
'token': 14155,
'token_str': 'business'}]
以下是如何在PyTorch中使用该模型获取给定文本的特征:
from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-multilingual-cased')
model = BertModel.from_pretrained("bert-base-multilingual-cased")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
以及在TensorFlow中:
from transformers import BertTokenizer, TFBertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-multilingual-cased')
model = TFBertModel.from_pretrained("bert-base-multilingual-cased")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
训练数据
BERT模型在Wikipedia规模最大的104种语言上进行了预训练。你可以在
此处找到完整列表。
训练流程
预处理
文本经过小写化处理,并使用WordPiece进行token化,共享词汇表大小为110,000。Wikipedia规模较大的语言被欠采样,
资源较少的语言则被过采样。对于中文、日文汉字和韩文汉字等没有空格的语言,
每个字符周围会添加一个CJK Unicode块。
模型的输入格式如下:
[CLS] Sentence A [SEP] Sentence B [SEP]
以0.5的概率,句子A和句子B对应原始语料中两个连续的句子,
在其他情况下,则是语料中的另一个随机句子。请注意,这里所谓的"句子"是指
一段连续的文本,通常比单个句子更长。唯一的限制是这两个"句子"的
组合长度不超过512个token。
每个句子的遮蔽流程细节如下:
- 15%的token被遮蔽。
- 在80%的情况下,被遮蔽的token被替换为[MASK]。
- 在10%的情况下,被遮蔽的token被替换为(与原文不同的)随机token。
- 在剩余的10%情况下,被遮蔽的token保持不变。
BibTeX条目与引用信息
@article{DBLP:journals/corr/abs-1810-04805,
author = {Jacob Devlin and
Ming{-}Wei Chang and
Kenton Lee and
Kristina Toutanova},
title = {{BERT:} Pre-training of Deep Bidirectional Transformers for Language
Understanding},
journal = {CoRR},
volume = {abs/1810.04805},
year = {2018},
url = {http://arxiv.org/abs/1810.04805},
archivePrefix = {arXiv},
eprint = {1810.04805},
timestamp = {Tue, 30 Oct 2018 20:39:56 +0100},
biburl = {https://dblp.org/rec/journals/corr/abs-1810-04805.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
正在翻译中,请稍候...
标签
操作
详细信息
- 厂商
- google-bert
- 任务
- fill-mask
- 框架
- transformers
- 模型类型
- bert
- 许可(HF)
- apache-2.0
- 语言
- multilingual, af, sq, ar, an, hy, ast, az, ba, eu, bar, be, bn, inc, bs, br, bg, my, ca, ceb, ce, zh, cv, hr, cs, da, nl, en, et, fi, fr, gl, ka, de, el, gu, ht, he, hi, hu, is, io, id, ga, it, ja, jv, kn, kk, ky, ko, la, lv, lt, roa, nds, lm, mk, mg, ms, ml, mr, mn, min, ne, new, nb, nn, oc, fa, pms, pl, pt, pa, ro, ru, sco, sr, hr, scn, sk, sl, aze, es, su, sw, sv, tl, tg, th, ta, tt, te, tr, uk, ud, uz, vi, vo, war, cy, fry, pnb, yo