Transformers 文档

HerBERT

Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

开始使用

HerBERT

PyTorch TensorFlow Flax

概述

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 相同,除了分词方法。有关 API 参考和示例,请参阅 BERT 文档

HerbertTokenizer

class transformers.HerbertTokenizer

< >

( vocab_file merges_file tokenizer_file = None cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' sep_token = '</s>' bos_token = '<s>' do_lowercase_and_remove_accent = False additional_special_tokens = ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>'] lang2id = None id2lang = None **kwargs )

为 HerBERT 构建 BPE 分词器。

特性

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

  • 这种预分词的输入是 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]) — 将特殊 token 添加到的 ID 列表。
  • token_ids_1 (List[int], 可选) — 序列对的可选第二个 ID 列表。

返回值

List[int]

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

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

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

convert_tokens_to_string

< >

( tokens )

将 token 序列(字符串)转换为单个字符串。

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], 可选) — 序列对的可选第二个 ID 列表。

返回值

List[int]

根据给定的序列,token 类型 ID 列表。

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

对掩码具有以下格式

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], 可选) — 序列对的可选第二个 ID 列表。
  • already_has_special_tokens (bool, 可选, 默认为 False) — token 列表是否已使用模型的特殊 token 格式化。

返回值

List[int]

范围为 [0, 1] 的整数列表:1 表示特殊 token,0 表示序列 token。

从未添加特殊 token 的 token 列表中检索序列 ID。当使用分词器 prepare_for_model 方法添加特殊 token 时,将调用此方法。

HerbertTokenizerFast

class transformers.HerbertTokenizerFast

< >

( vocab_file = None merges_file = None tokenizer_file = None cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' sep_token = '</s>' **kwargs )

参数

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

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

特性

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

此分词器继承自 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]) — 将特殊 token 添加到的 ID 列表。
  • token_ids_1 (List[int], 可选) — 序列对的可选第二个 ID 列表。

返回值

List[int]

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

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

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

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], 可选) — 序列对的可选第二个 ID 列表。

返回值

List[int]

根据给定的序列,token 类型 ID 列表。

从传递的两个序列创建一个掩码,用于序列对分类任务。 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) — 指示 token 列表是否已针对模型进行了特殊 token 格式化。(默认为 False

返回值

List[int]

范围为 [0, 1] 的整数列表:1 表示特殊 token,0 表示序列 token。

从未添加特殊 token 的 token 列表中检索序列 ID。当使用分词器 prepare_for_model 方法添加特殊 token 时,将调用此方法。

< > 在 GitHub 上更新