Transformers 4.37 中文文档(二十二)

2024-06-26 15:33:16 浏览数 (2)

原文:huggingface.co/docs/transformers

BARThez

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/barthez

概述

BARThez 模型是由 Moussa Kamal Eddine、Antoine J.-P. Tixier 和 Michalis Vazirgiannis 于 2020 年 10 月 23 日提出的BARThez: a Skilled Pretrained French Sequence-to-Sequence Model。

论文摘要:

归纳传递学习,通过自监督学习实现,已经席卷了整个自然语言处理(NLP)领域,像 BERT 和 BART 这样的模型在无数自然语言理解任务上取得了新的最先进水平。尽管有一些显著的例外,但大多数可用的模型和研究都是针对英语进行的。在这项工作中,我们介绍了 BARThez,这是法语语言的第一个 BART 模型(据我们所知)。BARThez 在过去研究中从一个非常大的单语法语语料库上进行了预训练,我们对其进行了调整以适应 BART 的扰动方案。与已经存在的基于 BERT 的法语语言模型(如 CamemBERT 和 FlauBERT)不同,BARThez 特别适用于生成任务,因为它的编码器和解码器都经过了预训练。除了 FLUE 基准测试中的判别任务,我们还在一个新的摘要数据集 OrangeSum 上评估 BARThez,我们在本文中发布了这个数据集。我们还继续在 BARThez 的语料库上对已经预训练的多语言 BART 进行预训练,并展示了由此产生的模型,我们称之为 mBARTHez,比普通的 BARThez 提供了显著的提升,并且与 CamemBERT 和 FlauBERT 相媲美或者表现更好。

这个模型是由moussakam贡献的。作者的代码可以在这里找到。

BARThez 的实现与 BART 相同,除了标记化。有关配置类及其参数的信息,请参考 BART 文档。BARThez 特定的标记器如下所述。

资源

  • BARThez 可以像 BART 一样在序列到序列任务上进行微调,查看:examples/pytorch/summarization/。

BarthezTokenizer

class transformers.BarthezTokenizer

< source >

代码语言:javascript复制
( vocab_file bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' sp_model_kwargs: Optional = None **kwargs )

参数

  • vocab_file (str) — 包含实例化标记器所需词汇表的SentencePiece文件(通常具有*.spm*扩展名)。
  • bos_token (str, 可选,默认为"<s>") — 在预训练期间使用的序列开始标记。可以用作序列分类器标记。 在构建使用特殊标记的序列时,这不是用于序列开头的标记。使用的标记是cls_token
  • eos_token (str, 可选,默认为"</s>") — 序列结束标记。 在构建使用特殊标记的序列时,这不是用于序列结尾的标记。使用的标记是sep_token
  • sep_token (str, 可选,默认为"</s>") — 分隔符标记,用于从多个序列构建序列,例如用于序列分类的两个序列或用于文本和问题的问题回答。它也用作使用特殊标记构建的序列的最后一个标记。
  • cls_token (str, 可选,默认为"<s>") — 在进行序列分类(对整个序列而不是每个标记进行分类)时使用的分类器标记。当使用特殊标记构建序列时,它是序列的第一个标记。
  • unk_token (str, 可选,默认为"<unk>") — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。
  • pad_token (str, optional, 默认为 "<pad>") — 用于填充的标记,例如在批处理不同长度的序列时。
  • mask_token (str, optional, 默认为 "<mask>") — 用于屏蔽值的标记。在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
  • sp_model_kwargs (dict, optional) — 将传递给SentencePieceProcessor.__init__()方法。SentencePiece 的 Python 包装器可用于设置:
    • enable_sampling: 启用子词正则化。
    • nbest_size: unigram 采样参数。对于 BPE-Dropout 无效。
      • nbest_size = {0,1}: 不执行采样。
      • nbest_size > 1: 从 nbest_size 结果中进行采样。
      • nbest_size < 0: 假设 nbest_size 为无限,并使用前向过滤和后向采样算法从所有假设(格)中进行采样。
    • alpha: 用于 unigram 采样的平滑参数,以及 BPE-dropout 的合并操作的丢弃概率。
  • sp_model (SentencePieceProcessor) — 用于每次转换(字符串、标记和 ID)的SentencePiece处理器。

改编自 CamembertTokenizer 和 BartTokenizer。构建一个 BARThez 标记器。基于SentencePiece。

此标记器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

< source >

代码语言:javascript复制
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0 (List[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选第二个 ID 列表。

返回

List[int]

具有适当特殊标记的 input IDs 列表。

通过连接和添加特殊标记从序列或序列对构建用于序列分类任务的模型输入。BARThez 序列具有以下格式:

  • 单个序列: <s> X </s>
  • 一对序列: <s> A </s></s> B </s>
convert_tokens_to_string

< source >

代码语言:javascript复制
( tokens )

将一系列标记(字符串)转换为单个字符串。

create_token_type_ids_from_sequences

< source >

代码语言:javascript复制
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选第二个 ID 列表。

返回

List[int]

零的列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。

get_special_tokens_mask

< source >

代码语言:javascript复制
( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选第二个 ID 列表。
  • already_has_special_tokens (bool, optional, 默认为 False) — 标记列表是否已经使用特殊标记格式化为模型。

返回

List[int]

一个整数列表,范围为[0, 1]:特殊标记为 1,序列标记为 0。

从没有添加特殊标记的标记列表中检索序列 ID。在使用标记器的prepare_for_model方法添加特殊标记时调用此方法。

BarthezTokenizerFast

class transformers.BarthezTokenizerFast

< source >

代码语言:javascript复制
( vocab_file = None tokenizer_file = None bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' **kwargs )

参数

  • vocab_file (str) — 包含实例化分词器所需词汇表的SentencePiece文件(通常具有*.spm*扩展名)。
  • bos_token (str, optional, defaults to "<s>") — 在预训练期间使用的序列开头标记。可用作序列分类器标记。 在使用特殊标记构建序列时,这不是用于序列开头的标记。用于开头的标记是cls_token
  • eos_token (str, optional, defaults to "</s>") — 序列结束标记。 在使用特殊标记构建序列时,这不是用于序列结尾的标记。用于结尾的标记是sep_token
  • sep_token (str, optional, defaults to "</s>") — 分隔符标记,在从多个序列构建序列时使用,例如用于序列分类的两个序列或用于文本和问题的问题回答。它还用作使用特殊标记构建的序列的最后一个标记。
  • cls_token (str, optional, defaults to "<s>") — 在进行序列分类(整个序列的分类而不是每个标记的分类)时使用的分类器标记。当使用特殊标记构建序列时,它是序列的第一个标记。
  • unk_token (str, optional, defaults to "<unk>") — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • pad_token (str, optional, defaults to "<pad>") — 用于填充的标记,例如在批处理不同长度的序列时使用。
  • mask_token (str, optional, defaults to "<mask>") — 用于屏蔽值的标记。在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
  • additional_special_tokens (List[str], optional, defaults to ["<s>NOTUSED", "</s>NOTUSED"]) — 分词器使用的其他特殊标记。

改编自 CamembertTokenizer 和 BartTokenizer。构建一个“快速”BARThez 分词器。基于SentencePiece。

此分词器继承自 PreTrainedTokenizerFast,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

< source >

代码语言:javascript复制
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0 (List[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选第二个 ID 列表。

返回

List[int]

带有适当特殊标记的输入 ID 列表。

通过连接和添加特殊标记构建用于序列分类任务的序列或序列对的模型输入。BARThez 序列具有以下格式:

  • 单个序列:<s> X </s>
  • 序列对:<s> A </s></s> B </s>
create_token_type_ids_from_sequences

< source >

代码语言:javascript复制
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], optional) — 序列对的可选第二个 ID 列表。

返回

List[int]

零的列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。

BARTpho

原始文本: huggingface.co/docs/transformers/v4.37.2/en/model_doc/bartpho

概述

BARTpho 模型是由 Nguyen Luong Tran, Duong Minh Le 和 Dat Quoc Nguyen 在《BARTpho: Pre-trained Sequence-to-Sequence Models for Vietnamese》中提出的。

论文摘要如下:

我们提供了两个版本的 BARTpho — BARTpho_word 和 BARTpho_syllable — 这是为越南语预训练的首个公开大规模单语序列到序列模型。我们的 BARTpho 使用了 BART 序列到序列去噪模型的“large”架构和预训练方案,因此特别适用于生成式 NLP 任务。在越南语文本摘要的下游任务上的实验表明,在自动和人工评估中,我们的 BARTpho 优于强基线 mBART,并改进了最新技术。我们发布 BARTpho 以促进未来的生成式越南语 NLP 任务的研究和应用。

这个模型是由dqnguyen贡献的。原始代码可以在这里找到。

用法示例

代码语言:javascript复制
>>> import torch
>>> from transformers import AutoModel, AutoTokenizer

>>> bartpho = AutoModel.from_pretrained("vinai/bartpho-syllable")

>>> tokenizer = AutoTokenizer.from_pretrained("vinai/bartpho-syllable")

>>> line = "Chúng tôi là những nghiên cứu viên."

>>> input_ids = tokenizer(line, return_tensors="pt")

>>> with torch.no_grad():
...     features = bartpho(**input_ids)  # Models outputs are now tuples

>>> # With TensorFlow 2.0 :
>>> from transformers import TFAutoModel

>>> bartpho = TFAutoModel.from_pretrained("vinai/bartpho-syllable")
>>> input_ids = tokenizer(line, return_tensors="tf")
>>> features = bartpho(**input_ids)

用法提示

  • 与 mBART 一样,BARTpho 使用 BART 的“large”架构,并在编码器和解码器的顶部增加了一个额外的层归一化层。因此,在 BART 文档中的用法示例,在适应 BARTpho 时,应通过用 mBART 专用类替换 BART 专用类来进行调整。例如:
代码语言:javascript复制
>>> from transformers import MBartForConditionalGeneration

>>> bartpho = MBartForConditionalGeneration.from_pretrained("vinai/bartpho-syllable")
>>> TXT = "Chúng tôi là <mask> nghiên cứu viên."
>>> input_ids = tokenizer([TXT], return_tensors="pt")["input_ids"]
>>> logits = bartpho(input_ids).logits
>>> masked_index = (input_ids[0] == tokenizer.mask_token_id).nonzero().item()
>>> probs = logits[0, masked_index].softmax(dim=0)
>>> values, predictions = probs.topk(5)
>>> print(tokenizer.decode(predictions).split())
  • 这个实现仅用于标记化:“monolingual_vocab_file”包含从多语言 XLM-RoBERTa 的预训练 SentencePiece 模型“vocab_file”中提取的越南语专用类型。其他语言,如果使用这个预训练的多语言 SentencePiece 模型“vocab_file”进行子词分割,可以重用 BartphoTokenizer 与自己的语言专用“monolingual_vocab_file”。

BartphoTokenizer

class transformers.BartphoTokenizer

< source >

代码语言:javascript复制
( vocab_file monolingual_vocab_file bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' sp_model_kwargs: Optional = None **kwargs )

参数

  • vocab_file (str) — 词汇文件的路径。这个词汇是来自多语言 XLM-RoBERTa 的预训练 SentencePiece 模型,也被 mBART 使用,包含 250K 种类型。
  • monolingual_vocab_file (str) — 单语词汇文件的路径。这个单语词汇包含从 250K 种类型的多语言词汇vocab_file中提取的越南语专用类型。
  • bos_token (str, 可选, 默认为 "<s>") — 在预训练期间使用的序列开始标记。可以用作序列分类器标记。 在构建序列时使用特殊标记时,这不是用于序列开头的标记。使用的标记是cls_token
  • eos_token (str, 可选, 默认为 "</s>") — 序列结束标记。 在构建序列时使用特殊标记时,这不是用于序列结尾的标记。使用的标记是sep_token
  • sep_token (str, 可选, 默认为 "</s>") — 分隔符标记,用于从多个序列构建序列,例如用于序列分类的两个序列或用于文本和问题的问题回答。它也用作使用特殊标记构建的序列的最后一个标记。
  • cls_token (str, 可选, 默认为 "<s>") — 用于进行序列分类(对整个序列而不是每个标记进行分类)时使用的分类器标记。在使用特殊标记构建序列时,它是序列的第一个标记。
  • unk_token (str, 可选, 默认为 "<unk>") — 未知标记。词汇中不存在的标记无法转换为 ID,而是设置为此标记。
  • pad_tokenstr可选,默认为"<pad>")- 用于填充的标记,例如在批处理不同长度的序列时。
  • mask_tokenstr可选,默认为"<mask>")- 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
  • sp_model_kwargsdict可选)- 将传递给SentencePieceProcessor.__init__()方法。SentencePiece 的 Python 包装器可用于设置:
    • enable_sampling:启用子词正则化。
    • nbest_size:unigram 的抽样参数。对于 BPE-Dropout 无效。
      • nbest_size = {0,1}:不执行抽样。
      • nbest_size > 1:从 nbest_size 结果中抽样。
      • nbest_size < 0: 假设 nbest_size 是无限的,并使用前向过滤和后向抽样算法从所有假设(格子)中抽样。
    • alpha:unigram 抽样的平滑参数,以及 BPE-dropout 合并操作的丢失概率。
  • sp_modelSentencePieceProcessor)- 用于每次转换(字符串、标记和 ID)的SentencePiece处理器。

改编自 XLMRobertaTokenizer。基于SentencePiece。

此标记器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

<来源>

代码语言:javascript复制
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])- 将添加特殊标记的 ID 列表。
  • token_ids_1List[int]可选)- 序列对的可选第二个 ID 列表。

返回

List[int]

具有适当特殊标记的 input IDs 列表。

通过连接和添加特殊标记构建用于序列分类任务的序列或序列对的模型输入。BARTPho 序列的格式如下:

  • 单个序列:<s> X </s>
  • 序列对:<s> A </s></s> B </s>
convert_tokens_to_string

<来源>

代码语言:javascript复制
( tokens )

将一系列标记(子词的字符串)转换为单个字符串。

create_token_type_ids_from_sequences

<来源>

代码语言:javascript复制
( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])- ID 列表。
  • token_ids_1List[int]可选)- 序列对的可选第二个 ID 列表。

返回

List[int]

零的列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。BARTPho 不使用标记类型 ID,因此返回一个零的列表。

get_special_tokens_mask

<来源>

代码语言:javascript复制
( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])- ID 列表。
  • token_ids_1List[int]可选)- 序列对的可选第二个 ID 列表。
  • already_has_special_tokensbool可选,默认为False)- 标记列表是否已经格式化为模型的特殊标记。

返回

List[int]

一个整数列表,范围为[0, 1]:1 表示特殊标记,0 表示序列标记。

从没有添加特殊标记的标记列表中检索序列 ID。在使用标记器prepare_for_model方法添加特殊标记时调用此方法。

BERT

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/bert

概述

BERT 模型是由 Jacob Devlin、Ming-Wei Chang、Kenton Lee 和 Kristina Toutanova 在BERT:用于语言理解的深度双向 Transformer 的预训练中提出的。它是一个双向 Transformer,在大型语料库(包括多伦多书籍语料库和维基百科)上使用掩码语言建模目标和下一个句子预测进行预训练。

论文的摘要如下:

我们介绍了一种名为 BERT 的新语言表示模型,它代表双向编码器从变压器中获得的表示。与最近的语言表示模型不同,BERT 旨在通过在所有层中联合调节左右上下文来预训练深度双向表示,从未标记的文本中。因此,预训练的 BERT 模型只需一个额外的输出层就可以进行微调,从而创建用于各种任务的最先进模型,例如问答和语言推理,而无需进行实质性的任务特定架构修改。

BERT 在概念上简单且在经验上强大。它在十一个自然语言处理任务中取得了新的最先进结果,包括将 GLUE 得分提高到 80.5%(绝对改进 7.7 个百分点),MultiNLI 准确率提高到 86.7%(绝对改进 4.6%),SQuAD v1.1 问答测试 F1 提高到 93.2(绝对改进 1.5 个百分点)和 SQuAD v2.0 测试 F1 提高到 83.1(绝对改进 5.1 个百分点)。

此模型由thomwolf贡献。原始代码可以在这里找到。

使用提示

  • BERT 是一个带有绝对位置嵌入的模型,因此通常建议在右侧而不是左侧填充输入。
  • BERT 是通过掩码语言建模(MLM)和下一个句子预测(NSP)目标进行训练的。它在预测掩码令牌和 NLU 方面效率高,但不适用于文本生成。
  • 使用随机掩码破坏输入,更准确地说,在预训练期间,给定的令牌百分比(通常为 15%)被掩盖:
    • 具有概率 0.8 的特殊掩码令牌
    • 与被掩盖的令牌不同的随机令牌的概率为 0.1
    • 具有概率 0.1 的相同令牌
  • 模型必须预测原始句子,但有第二个目标:输入是两个句子 A 和 B(中间有一个分隔令牌)。以 50%的概率,这些句子在语料库中是连续的,在剩下的 50%中它们不相关。模型必须预测这些句子是否连续。

资源

一份官方 Hugging Face 和社区(由

0 人点赞