英文

CANINE-c (使用自回归字符损失进行CANINE预训练)

CANINE模型是在104种语言上使用掩码语言建模(MLM)目标进行预训练的。它首次在 this repository 中发布,并在 CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation 论文中进行了介绍。

CANINE的特殊之处在于它不需要像BERT和RoBERTa这样的显式分词器(如WordPiece或SentencePiece)。相反,它直接在字符级别上操作:每个字符都被转换为其 Unicode code point

这意味着输入处理非常简单,通常可以完成以下操作:

input_ids = [ord(char) for char in text]

ord()函数是Python的一部分,它将每个字符转换为其Unicode代码点。

免责声明:发布CANINE的团队并没有为这个模型编写模型卡,所以这个模型卡是由Hugging Face团队编写的。

模型描述

CANINE是一个transformers模型,它在大规模多语言数据上进行了自监督预训练,类似于BERT。这意味着它只对原始文本进行了预训练,而没有采用任何方式人工标记这些文本(这就是为什么它可以使用大量公开可用的数据),并通过自动化的过程从这些文本中生成输入和标签。更准确地说,它通过两个目标进行预训练:

  • 掩码语言建模(MLM):随机掩盖部分输入,模型需要对其进行预测。这个模型(CANINE-c)是通过使用自回归字符损失进行训练的。模型会对每个序列内的多个字符跨度进行掩盖,然后自回归地预测。
  • 下一个句子预测(NSP):模型在预训练期间将两个句子连接作为输入。有时,它们对应于原始文本中紧邻的两个句子,有时则不是。然后模型必须预测这两个句子是否相邻。

这样,模型学习了多种语言的内部表示,可以用于提取对下游任务有用的特征:如果您有一个标记句子的数据集,可以使用CANINE模型生成的特征作为输入来训练标准分类器。

预期用途和限制

您可以使用原始模型进行掩码语言建模或下一个句子预测,但它主要用于在下游任务上进行微调。查看 model hub 查找您感兴趣的任务上进行微调的版本。

请注意,该模型主要旨在在使用整个句子(可能掩码)来做决策的任务上进行微调,如序列分类、标记分类或问题回答。对于文本生成之类的任务,您应该查看GPT2等模型。

如何使用

以下是如何使用该模型的方法:

from transformers import CanineTokenizer, CanineModel

model = CanineModel.from_pretrained('google/canine-c')
tokenizer = CanineTokenizer.from_pretrained('google/canine-c')

inputs = ["Life is like a box of chocolates.", "You never know what you gonna get."]
encoding = tokenizer(inputs, padding="longest", truncation=True, return_tensors="pt")

outputs = model(**encoding) # forward pass
pooled_output = outputs.pooler_output
sequence_output = outputs.last_hidden_state

训练数据

CANINE模型是在 mBERT 的多语言维基百科数据上进行训练的,其中包括104种语言。

BibTeX条目和引用信息

@article{DBLP:journals/corr/abs-2103-06874,
  author    = {Jonathan H. Clark and
               Dan Garrette and
               Iulia Turc and
               John Wieting},
  title     = {{CANINE:} Pre-training an Efficient Tokenization-Free Encoder for
               Language Representation},
  journal   = {CoRR},
  volume    = {abs/2103.06874},
  year      = {2021},
  url       = {https://arxiv.org/abs/2103.06874},
  archivePrefix = {arXiv},
  eprint    = {2103.06874},
  timestamp = {Tue, 16 Mar 2021 11:26:59 +0100},
  biburl    = {https://dblp.org/rec/journals/corr/abs-2103-06874.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}