Transformers documentation
HerBERT
该模型于 2020-05-01 在 HF papers 上发布,并于 2020-11-16 贡献至 Hugging Face Transformers。
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", device_map="auto")
encoded_input = tokenizer.encode("Kto ma lepszą sztukę, ma lepszy rząd – to jasne.", return_tensors="pt").to(model.device)
outputs = model(encoded_input)
# HerBERT can also be loaded using AutoTokenizer and AutoModel:
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
model = AutoModel.from_pretrained("allegro/herbert-klej-cased-v1", device_map="auto")Herbert 的实现与
BERT相同,只是分词方法不同。有关 API 参考和示例,请参阅 BERT 文档。
HerbertTokenizer
class transformers.HerbertTokenizer
< source >( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Nonecls_token: str = '<s>'unk_token: str = '<unk>'pad_token: str = '<pad>'mask_token: str = '<mask>'sep_token: str = '</s>'vocab_file: str | None = Nonemerges_file: str | None = None**kwargs )
参数
- vocab_file (
str) — 词汇表文件的路径。 - merges_file (
str) — 合并文件的路径。 - cls_token (
str,可选,默认为"<s>") — 分类器标记。 - unk_token (
str,可选,默认为"<unk>") — 未知标记。 - pad_token (
str,可选,默认为"<pad>") — 填充标记。 - mask_token (
str,可选,默认为"<mask>") — 掩码标记。 - sep_token (
str,可选,默认为"</s>") — 分隔符 token。 - vocab (
str、dict或list,可选) — 自定义词汇表。 - merges(
str或list[str],可选)— 自定义合并列表。
为 HerBERT 构建一个 BPE 分词器(基于 HuggingFace 的 tokenizers 库)。
特殊之处:
- 使用 BERT 的预分词器:BertPreTokenizer 会按空格和标点符号拆分 token。每个标点字符的出现都会被单独处理。
该分词器继承自 TokenizersBackend,其中包含了大部分方法。有关方法的更多信息,用户应参考其父类。