分詞器文件
分詞器
並獲得增強的文件體驗
開始使用
分詞器
分詞器
Tokenizer
作為一個流程工作。它處理一些原始文字作為輸入,並輸出一個 Encoding。
分詞器使用的 Model
分詞器中使用的*可選* Normalizer
分詞器中使用的*可選* PreTokenizer
add_special_tokens
( tokens ) → int
引數
- tokens (一個 AddedToken 或
str
的List
) — 我們想要新增到詞彙表中的特殊詞元列表。每個詞元可以是一個字串,也可以是一個 AddedToken 的例項以進行更多自定義。
返回
int
在詞彙表中建立的詞元數量
將給定的特殊詞元新增到分詞器中。
如果這些詞元已經是詞彙表的一部分,它只是讓分詞器知道它們。如果它們不存在,分詞器會建立它們,並給它們一個新的 ID。
這些特殊詞元永遠不會被模型處理(即不會被分割成多個詞元),並且可以在解碼時從輸出中移除。
add_tokens
( tokens ) → int
引數
- tokens (一個 AddedToken 或
str
的List
) — 我們想要新增到詞彙表中的詞元列表。每個詞元可以是一個字串,也可以是一個 AddedToken 的例項以進行更多自定義。
返回
int
在詞彙表中建立的詞元數量
將給定的詞元新增到詞彙表中
只有當給定的詞元在詞彙表中尚不存在時,它們才會被新增。然後每個詞元都會獲得一個新分配的 ID。
enable_padding
( direction = 'right' pad_id = 0 pad_type_id = 0 pad_token = '[PAD]' length = None pad_to_multiple_of = None )
引數
- direction (
str
, *可選*,預設為right
) — 填充的方向。可以是right
或left
- pad_to_multiple_of (
int
, *可選*) — 如果指定,填充長度應始終對齊到給定值的下一個倍數。例如,如果我們要填充長度為 250,但pad_to_multiple_of=8
,那麼我們將填充到 256。 - pad_id (
int
, 預設為 0) — 填充時使用的 ID - pad_type_id (
int
, 預設為 0) — 填充時使用的型別 ID - pad_token (
str
, 預設為[PAD]
) — 填充時使用的填充詞元 - length (
int
, *可選*) — 如果指定,則為填充到的長度。如果未指定,則使用批次中最長序列的長度進行填充。
啟用填充
編碼
( sequence pair = None is_pretokenized = False add_special_tokens = True ) → Encoding
引數
- sequence (
~tokenizers.InputSequence
) — 我們想要編碼的主要輸入序列。根據is_pretokenized
引數,此序列可以是原始文字或預分詞的:- 如果
is_pretokenized=False
:TextInputSequence
- 如果
is_pretokenized=True
:PreTokenizedInputSequence()
- 如果
- pair (
~tokenizers.InputSequence
, *可選*) — 一個可選的輸入序列。預期格式與sequence
相同。 - is_pretokenized (
bool
, 預設為False
) — 輸入是否已經預分詞 - add_special_tokens (
bool
, 預設為True
) — 是否新增特殊詞元
返回
編碼結果
對給定的序列和配對進行編碼。此方法可以處理原始文字序列以及已經預分詞的序列。
示例
encode_batch
( input is_pretokenized = False add_special_tokens = True ) → [`~tokenizers.Encoding`] 的 List
引數
- input (一個
List
/`Tuple
of~tokenizers.EncodeInput
) — 要編碼的單個序列或配對序列的列表。根據is_pretokenized
引數,每個序列可以是原始文字或預分詞的:- 如果
is_pretokenized=False
:TextEncodeInput()
- 如果
is_pretokenized=True
:PreTokenizedEncodeInput()
- 如果
- is_pretokenized (
bool
, 預設為False
) — 輸入是否已經預分詞 - add_special_tokens (
bool
, 預設為True
) — 是否新增特殊詞元
返回
一個 [`~tokenizers.Encoding`] 的 `List`
編碼後的批次
對給定的輸入批次進行編碼。此方法既接受原始文字序列,也接受已經預分詞的序列。我們使用 *PySequence* 的原因是因為它允許零成本的型別檢查(根據 PyO3),因為我們不需要轉換來檢查。
示例
encode_batch_fast
( input is_pretokenized = False add_special_tokens = True ) → [`~tokenizers.Encoding`] 的 List
引數
- input (一個
List
/`Tuple
of~tokenizers.EncodeInput
) — 要編碼的單個序列或配對序列的列表。根據is_pretokenized
引數,每個序列可以是原始文字或預分詞的:- 如果
is_pretokenized=False
:TextEncodeInput()
- 如果
is_pretokenized=True
:PreTokenizedEncodeInput()
- 如果
- is_pretokenized (
bool
, 預設為False
) — 輸入是否已經預分詞 - add_special_tokens (
bool
, 預設為True
) — 是否新增特殊詞元
返回
一個 [`~tokenizers.Encoding`] 的 `List`
編碼後的批次
對給定的輸入批次進行編碼。此方法比 *encode_batch* 更快,因為它不跟蹤偏移量,偏移量將全部為零。
示例
從給定的緩衝區例項化一個新的 Tokenizer。
從給定路徑的檔案中例項化一個新的 Tokenizer。
from_pretrained
( identifier revision = 'main' token = None ) → Tokenizer
從 Hugging Face Hub 上的現有檔案例項化一個新的 Tokenizer。
從給定的 JSON 字串例項化一個新的 Tokenizer。
如果存在,將給定的 ID 轉換為其對應的詞元
返回將為單句/句對新增的特殊詞元數量。:param is_pair: 布林值,指示輸入是單個句子還是一個句對 :return
post_process
( encoding pair = None add_special_tokens = True ) → Encoding
將所有後處理步驟應用於給定的編碼。
各個步驟是
- 根據設定的截斷引數進行截斷(透過
enable_truncation()
提供) - 應用
PostProcessor
- 根據設定的填充引數進行填充(透過
enable_padding()
提供)
將 Tokenizer 儲存到給定路徑的檔案中。
獲取一個表示此 Tokenizer 的序列化字串。
使用給定的檔案訓練分詞器。
逐行讀取檔案,同時保留所有空白字元,甚至是換行符。如果你想從記憶體中儲存的資料進行訓練,可以檢視 train_from_iterator()