基于 104 种语言、使用掩码语言建模(MLM)目标预训练的 CANINE 模型。该模型在论文 CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation 中被提出,并首次在 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 模型生成的特征作为输入来训练标准分类器。
您可以将原始模型用于掩码语言建模或下一句预测,但它主要旨在针对下游任务进行微调。请参阅 模型中心,查找您感兴趣的任务的微调版本。
请注意,此模型主要用于在需要利用整个句子(可能带有掩码)来做决策的任务上进行微调,例如序列分类、 token 分类或问答。对于文本生成等任务,您应该考虑 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}
}