HuggingFace镜像/canine-c
模型介绍文件和版本分析
下载使用量0

CANINE-c(采用自回归字符损失预训练的 CANINE)

基于 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 类似。这意味着它仅在原始文本上进行预训练,无需人类以任何方式对其进行标注(这也是它能够利用大量公开可用数据的原因),并通过自动流程从这些文本中生成输入和标签。更准确地说,它通过两个目标进行预训练:

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

通过这种方式,模型学习多种语言的内部表示,这些表示可用于提取对下游任务有用的特征:例如,如果您有一个带标签的句子数据集,您可以使用 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 种语言。

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}
}