Transformers 文件
HerBERT
並獲得增強的文件體驗
開始使用
HerBERT
概述
HerBERT 模型由 Piotr Rybak、Robert Mroczkowski、Janusz Tracz 和 Ireneusz Gawlik 在論文 KLEJ: 波蘭語理解綜合基準 中提出。它是一個基於 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 在空格和標點符號上分割詞元。每個標點符號的出現都將被單獨處理。
這種預分詞後的輸入會進行 BPE 子詞元化
該分詞器繼承自 XLMTokenizer,其中包含大部分方法。使用者應參考超類以獲取有關方法的更多資訊。
build_inputs_with_special_tokens
< 來源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → List[int]
透過連線和新增特殊詞元,為序列分類任務從一個序列或一對序列構建模型輸入。XLM 序列具有以下格式
- 單個序列:
<s> X </s>
- 序列對:
<s> A </s> B </s>
將標記序列(字串)轉換為單個字串。
get_special_tokens_mask
< 來源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) → List[int]
從沒有新增特殊標記的標記列表中檢索序列ID。此方法在使用分詞器prepare_for_model
方法新增特殊標記時呼叫。
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 )
為 HerBERT 構建一個“快速” BPE 分詞器 (由 HuggingFace 的 *tokenizers* 庫支援)。
特點
- 使用 BERT 的預分詞器:BertPreTokenizer 在空格和標點符號上分割詞元。每個標點符號的出現都將被單獨處理。
該分詞器繼承自 PreTrainedTokenizer,其中包含大部分方法。使用者應參考超類以獲取有關方法的更多資訊。
build_inputs_with_special_tokens
< 來源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → List[int]
透過連線和新增特殊詞元,為序列分類任務從一個序列或一對序列構建模型輸入。HerBERT,像 BERT 序列一樣,具有以下格式
- 單個序列:
<s> X </s>
- 序列對:
<s> A </s> B </s>
get_special_tokens_mask
< 來源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) → List[int]
從沒有新增特殊標記的標記列表中檢索序列ID。此方法在使用分詞器prepare_for_model
方法新增特殊標記時呼叫。