Transformers 文档

HerBERT

HerBERT

概述

HerBERT模型由Piotr Rybak、Robert Mroczkowski、Janusz Tracz和Ireneusz Gawlik在KLEJ: Comprehensive Benchmark for Polish Language Understanding中提出。它是一个基于BERT的语言模型,使用波兰语语料库进行训练,仅使用MLM目标,并对整个单词进行动态掩码。

论文的摘要如下:

近年来,一系列基于Transformer的模型在通用自然语言理解(NLU)任务中取得了重大进展。如果没有通用的NLU基准测试,这种快速的研究步伐是不可能实现的,这些基准测试允许对所提出的方法进行公平比较。然而,这些基准测试仅适用于少数语言。为了缓解这一问题,我们引入了一个全面的波兰语理解多任务基准测试,并附带一个在线排行榜。它由一系列多样化的任务组成,这些任务改编自现有的命名实体识别、问答、文本蕴含等数据集。我们还引入了一个新的电子商务领域的情感分析任务,名为Allegro Reviews(AR)。为了确保一个共同的评估方案并推广能够泛化到不同NLU任务的模型,该基准测试包括了来自不同领域和应用的数据集。此外,我们发布了HerBERT,这是一个专门为波兰语训练的基于Transformer的模型,它在平均性能上表现最佳,并在九个任务中的三个任务中取得了最佳结果。最后,我们提供了一个广泛的评估,包括几个标准基线和最近提出的多语言基于Transformer的模型。

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

使用示例

>>> from transformers import HerbertTokenizer, RobertaModel

>>> tokenizer = HerbertTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
>>> model = RobertaModel.from_pretrained("allegro/herbert-klej-cased-v1")

>>> encoded_input = tokenizer.encode("Kto ma lepszą sztukę, ma lepszy rząd – to jasne.", return_tensors="pt")
>>> outputs = model(encoded_input)

>>> # HerBERT can also be loaded using AutoTokenizer and AutoModel:
>>> import torch
>>> from transformers import AutoModel, AutoTokenizer

>>> tokenizer = AutoTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
>>> model = AutoModel.from_pretrained("allegro/herbert-klej-cased-v1")

Herbert 的实现与 BERT 相同,除了分词方法。请参阅 BERT 文档 获取 API 参考和示例。

HerbertTokenizer

transformers.HerbertTokenizer

< >

( vocab_file merges_file tokenizer_file = None cls_token = '' unk_token = '' pad_token = '' mask_token = '' sep_token = '' bos_token = '' do_lowercase_and_remove_accent = False additional_special_tokens = ['', '', '', '', '', '', '', '', '', ''] lang2id = None id2lang = None **kwargs )

为HerBERT构建一个BPE分词器。

特点:

  • 使用BERT的预分词器:BaseTokenizer在空格和标点符号上分割标记。每个标点符号的出现将被单独处理。

  • 这种预分词的输入是BPE子词分词的

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

build_inputs_with_special_tokens

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

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

返回

List[int]

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

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

  • 单一序列: X
  • 序列对: A B

convert_tokens_to_string

< >

( tokens )

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

create_token_type_ids_from_sequences

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

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

返回

List[int]

根据给定序列的token type IDs列表。

从传递给序列对分类任务的两个序列中创建一个掩码。一个XLM序列

pair mask 的格式如下:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

如果 token_ids_1None,此方法仅返回掩码的第一部分(0s)。

get_special_tokens_mask

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None already_has_special_tokens: bool = False ) List[int]

参数

  • token_ids_0 (List[int]) — ID列表.
  • token_ids_1 (List[int], optional) — 可选的第二个序列对的ID列表。
  • already_has_special_tokens (bool, optional, defaults to False) — 令牌列表是否已经用模型的特殊令牌格式化。

返回

List[int]

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

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

HerbertTokenizerFast

transformers.HerbertTokenizerFast

< >

( vocab_file = None merges_file = None tokenizer_file = None cls_token = '' unk_token = '' pad_token = '' mask_token = '' sep_token = '' **kwargs )

参数

  • vocab_file (str) — 词汇表文件的路径。
  • merges_file (str) — 合并文件的路径。

为HerBERT构建一个“快速”的BPE分词器(由HuggingFace的tokenizers库支持)。

特点:

  • 使用BERT的预分词器:BertPreTokenizer在空格和标点符号上分割标记。每个标点字符的出现将被单独处理。

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

build_inputs_with_special_tokens

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

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

返回

List[int]

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

通过连接和添加特殊标记,从序列或序列对构建序列分类任务的模型输入。像BERT序列一样,HerBERT序列具有以下格式:

  • 单一序列: X
  • 序列对: A B

create_token_type_ids_from_sequences

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None ) List[int]

参数

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

返回

List[int]

根据给定序列的token type IDs列表。

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

BERT序列对掩码具有以下格式:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence    | second sequence |

get_special_tokens_mask

< >

( token_ids_0: typing.List[int] token_ids_1: typing.Optional[typing.List[int]] = None already_has_special_tokens: bool = False ) List[int]

参数

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

返回

List[int]

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

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

< > Update on GitHub