HerBERT
概述
HerBERT 模型在 Piotr Rybak、Robert Mroczkowski、Janusz Tracz 和 Ireneusz Gawlik 发表的论文 KLEJ: 波兰语理解的综合基准 中提出。它是一个基于 BERT 的语言模型,仅使用 MLM 目标和整个单词的动态掩码在波兰语语料库上训练。
论文摘要如下:
近年来,一系列基于 Transformer 的模型在通用自然语言理解 (NLU) 任务中取得了重大改进。如果没有通用的 NLU 基准,这种快速的研究步伐将是不可能的,因为基准允许对提出的方法进行公平的比较。然而,此类基准仅适用于少数几种语言。为了缓解这个问题,我们引入了一个用于波兰语理解的综合多任务基准,并附带了一个在线排行榜。它由一组不同的任务组成,这些任务是从现有的命名实体识别、问答、文本蕴含等数据集采用的。我们还为电子商务领域引入了一个新的情感分析任务,称为 Allegro Reviews (AR)。为了确保一个通用的评估方案并促进能够推广到不同 NLU 任务的模型,该基准包含来自不同领域和应用的数据集。此外,我们发布了 HerBERT,一个专门为波兰语训练的基于 Transformer 的模型,它具有最佳的平均性能,并在九个任务中的三个任务中获得了最佳结果。最后,我们提供了一个广泛的评估,包括几个标准基线和最近提出的多语言基于 Transformer 的模型。
此模型由 rmroczkowski 贡献。原始代码可以在这里找到 here。
使用示例
>>> 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
类 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 在空格处以及标点符号处拆分标记。每个标点符号的出现将被单独处理。
此类预分词输入将进行 BPE 子词分词。
此分词器继承自 XLMTokenizer,其中包含大部分方法。用户应参考超类以获取有关方法的更多信息。
build_inputs_with_special_tokens
< 源代码 >( token_ids_0: 列表 token_ids_1: 可选 = None ) → 列表[整数]
通过连接和添加特殊标记,为序列分类任务从序列或一对序列构建模型输入。XLM 序列具有以下格式
- 单个序列:
<s> X </s>
- 序列对:
<s> A </s> B </s>
将一系列标记(字符串)转换为单个字符串。
create_token_type_ids_from_sequences
< 源代码 >( token_ids_0: 列表 token_ids_1: 可选 = None ) → 列表[整数]
创建一个从两个传递的序列中生成的掩码,用于序列对分类任务。XLM 序列
如果 token_ids_1
为 None
,则此方法仅返回掩码的第一部分(0)。
get_special_tokens_mask
< 源代码 >( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → List[int]
从未添加特殊标记的标记列表中检索序列 ID。当使用分词器 prepare_for_model
方法添加特殊标记时,会调用此方法。
HerbertTokenizerFast
构建 HerBERT 的“快速”BPE 分词器(由 HuggingFace 的 tokenizers 库支持)。
特性
- 使用 BERT 的预分词器:BertPreTokenizer 在空格和标点符号处分割标记。每个标点符号的出现将被单独处理。
此分词器继承自 PreTrainedTokenizer,其中包含大多数方法。有关方法的更多信息,用户应参考超类。
build_inputs_with_special_tokens
< 源代码 > ( token_ids_0: 列表 token_ids_1: 可选 = None ) → 列表[整数]
通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。HerBERT 与 BERT 序列具有以下格式
- 单个序列:
<s> X </s>
- 序列对:
<s> A </s> B </s>
create_token_type_ids_from_sequences
< 源代码 > ( token_ids_0: 列表 token_ids_1: 可选 = None ) → 列表[整数]
创建从两个传递的序列中生成的掩码,以用于序列对分类任务。HerBERT 与
get_special_tokens_mask
< 源代码 >
( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → List[int]
从未添加特殊标记的标记列表中检索序列 ID。当使用分词器 prepare_for_model
方法添加特殊标记时,会调用此方法。