模型:
google/canine-c
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。这意味着它只对原始文本进行了预训练,而没有采用任何方式人工标记这些文本(这就是为什么它可以使用大量公开可用的数据),并通过自动化的过程从这些文本中生成输入和标签。更准确地说,它通过两个目标进行预训练:
这样,模型学习了多种语言的内部表示,可以用于提取对下游任务有用的特征:如果您有一个标记句子的数据集,可以使用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种语言。
@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} }