基于 104 种语言,通过掩码语言模型(MLM)目标预训练的 CANINE 模型。该模型在论文《CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation》(https://arxiv.org/abs/2103.06874)中被提出,并首次在 this repository 发布。
CANINE 的特别之处在于,它不像 BERT 和 RoBERTa 等其他模型那样需要显式的分词器(如 WordPiece 或 SentencePiece)。相反,它直接在字符级别进行操作:每个字符都被转换为其 Unicode 代码点。
这意味着输入处理非常简单,通常可以通过以下方式完成:
input_ids = [ord(char) for char in text]ord() 函数是 Python 的一部分,它能将每个字符转换为其 Unicode 码点。
免责声明:发布 CANINE 的团队并未为此模型编写模型卡片,因此本模型卡片由 Hugging Face 团队编写。
CANINE 是一个基于 Transformer 的模型,它通过自监督的方式在大型多语言语料库上进行预训练,这一点与 BERT 类似。这意味着它仅在原始文本上进行预训练,无需人工以任何方式对文本进行标注(这也是它能够利用大量公开可用数据的原因),并通过自动流程从这些文本中生成输入和标签。更准确地说,它在预训练时采用了两个目标:
通过这种方式,模型学习到多种语言的内部表示,这些表示可用于提取对下游任务有用的特征:例如,如果您有一个带标签的句子数据集,您可以使用 CANINE 模型生成的特征作为输入来训练一个标准分类器。
您可以将原始模型用于掩码语言建模或下一句预测,但它主要旨在针对下游任务进行微调。请查看模型中心,以寻找您感兴趣的任务上的微调版本。
请注意,此模型主要用于在需要利用整个句子(可能包含掩码)进行决策的任务上进行微调,例如序列分类、标记分类或问答任务。对于文本生成等任务,您应该考虑 GPT2 等模型。
以下是使用此模型的方法:
import argparse
from openmind import is_torch_npu_available
from transformers import CanineTokenizer, CanineModel
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="Path to model",
default=None,
)
args = parser.parse_args()
return args
def main():
args = parse_args()
model_name_or_path = args.model_name_or_path
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
model = CanineModel.from_pretrained(model_name_or_path)
tokenizer = CanineTokenizer.from_pretrained(model_name_or_path)
model.to(device)
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").to(device)
outputs = model(**encoding) # forward pass
pooled_output = outputs.pooler_output
sequence_output = outputs.last_hidden_state
if __name__ == "__main__":
main()
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}
}