项目介绍:CANINE-s
CANINE-s(CANINE 使用子词损失进行预训练)是一个经过预训练的CANINE模型,它支持104种语言,并使用掩码语言模型(MLM)目标进行训练。CANINE于一篇名为《CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation》的论文中被首次介绍,并在一个公开的代码库中首次发布。与其他需要明确分词器(如WordPiece或SentencePiece)的模型如BERT和RoBERTa不同,CANINE的独特之处在于其不需要显式分词器,而是直接在字符层面进行操作。每个字符被转换为其Unicode码点,这使得输入处理十分简单。
模型描述
CANINE是一种变换器模型,它在大型多语言数据集上以自监督的方式进行预训练。类似于BERT,该模型仅在原始文本上进行预训练,无需人工标注数据,因此可以使用大量公共可用数据。具体而言,CANINE使用了两个预训练目标:
- 掩码语言模型(MLM):随机掩盖部分输入字符,模型需要预测其内容。CANINE-s通过子词损失进行训练,意味着模型需要在识别子词标记的同时,以字符作为输入来进行预测。
- 下一句预测(NSP):在预训练过程中,模型将两句话作为输入,判断它们是否在原文中相邻。
通过这些目标,模型学习到多种语言的内部表示,可以用于提取对下游任务有用的特征。例如,如果用户有一个已标注句子的数据库,可以使用CANINE模型作为输入特征来训练标准分类器。
使用目的与限制
虽然可以直接使用原始模型进行掩码语言建模或下一句预测,但主要是为了在下游任务上进行微调。感兴趣的用户可以访问模型库,以寻找已在特定任务上微调的版本。请注意,该模型主要用于对整句进行决策的任务(如句子分类、标记分类或问答),而生成文本等任务应考虑使用像GPT2这样的模型。
如何使用
以下是使用此模型的基本方法:
from transformers import CanineTokenizer, CanineModel
model = CanineModel.from_pretrained('google/canine-s')
tokenizer = CanineTokenizer.from_pretrained('google/canine-s')
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种语言。
参考信息
如果需要引用CANINE的相关信息,可以参考以下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}
}