HuggingFace镜像/bert-base-multilingual-cased
模型介绍文件和版本分析
下载使用量0

BERT 多语言基础模型(大小写敏感)

基于掩码语言模型(MLM)目标,在拥有最大 Wikipedia 的前 104 种语言上预训练的模型。 该模型在此论文中被介绍,并首次在 此仓库中发布。此模型区分大小写:它对“english”和“English”进行区分。

免责声明:发布 BERT 的团队未为此模型编写模型卡片,因此本模型卡片由 Hugging Face 团队编写。

模型描述

BERT 是一个在大型多语言语料库上以自监督方式预训练的 transformers 模型。这意味着 它仅在原始文本上进行预训练,无需人类以任何方式对其进行标记(这也是它能够使用大量 公开可用数据的原因),并通过自动过程从这些文本生成输入和标签。更准确地说,它通过两个目标进行预训练:

  • 掩码语言模型(MLM):给定一个句子,模型随机掩盖输入中 15% 的单词,然后将整个被掩盖的句子输入模型,模型需要预测被掩盖的单词。这与传统的循环神经网络(RNNs)通常逐个处理单词,或者像 GPT 这样的自回归模型在内部掩盖未来标记的方式不同。它允许模型学习句子的双向表示。
  • 下一句预测(NSP):模型在预训练期间将两个被掩盖的句子连接起来作为输入。有时它们对应于原始文本中相邻的句子,有时则不是。然后模型需要预测这两个句子是否是连续的。

通过这种方式,模型学习训练集中语言的内部表示,这些表示随后可用于提取对下游任务有用的特征:例如,如果您有一个带标签的句子数据集,您可以使用 BERT 模型生成的特征作为输入来训练标准分类器。

预期用途和局限性

您可以将原始模型用于掩码语言建模或下一句预测任务,但该模型主要旨在针对下游任务进行微调。请查看模型中心,寻找您感兴趣任务的微调版本。

请注意,此模型主要用于在需要使用整个句子(可能包含掩码)进行决策的任务上进行微调,例如序列分类、标记分类或问答任务。对于文本生成等任务,您应考虑使用如GPT2之类的模型。

使用方法

您可以直接通过pipeline将此模型用于掩码语言建模:

>>> from mindnlp.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'}]

以下是如何在 MindSpore 中使用此模型获取给定文本特征的方法:

from mindnlp.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)

或

from mindnlp.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 模型在拥有最大维基百科的 104 种语言上进行了预训练。完整列表可参见此处。

训练过程

预处理

文本经过小写转换,并使用 WordPiece 进行分词,共享词汇表大小为 110,000。维基百科规模较大的语言会进行欠采样,而资源较少的语言则会进行过采样。对于中文、日文汉字和韩文汉字这类没有空格的语言,会在每个字符周围添加 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 entry and citation info

@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}
}