分詞器文件

分詞器

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

分詞器

Python
Rust
Node

分詞器

class tokenizers.Tokenizer

( model )

引數

  • model (Model) — 此 Tokenizer 應使用的核心演算法。

Tokenizer 作為一個流程工作。它處理一些原始文字作為輸入,並輸出一個 Encoding

property decoder

分詞器中使用的*可選* Decoder

property model

分詞器使用的 Model

property normalizer

分詞器中使用的*可選* Normalizer

property padding

返回

dict,*可選*)

如果啟用了填充,則為包含當前填充引數的字典

獲取當前填充引數

無法設定,請改用 enable_padding()

property post_processor

分詞器中使用的*可選* PostProcessor

property pre_tokenizer

分詞器中使用的*可選* PreTokenizer

property truncation

返回

dict,*可選*)

如果啟用了截斷,則為包含當前截斷引數的字典

獲取當前設定的截斷引數

無法設定,請改用 enable_truncation()

add_special_tokens

( tokens ) int

引數

  • tokens (一個 AddedTokenstrList) — 我們想要新增到詞彙表中的特殊詞元列表。每個詞元可以是一個字串,也可以是一個 AddedToken 的例項以進行更多自定義。

返回

int

在詞彙表中建立的詞元數量

將給定的特殊詞元新增到分詞器中。

如果這些詞元已經是詞彙表的一部分,它只是讓分詞器知道它們。如果它們不存在,分詞器會建立它們,並給它們一個新的 ID。

這些特殊詞元永遠不會被模型處理(即不會被分割成多個詞元),並且可以在解碼時從輸出中移除。

add_tokens

( tokens ) int

引數

  • tokens (一個 AddedTokenstrList) — 我們想要新增到詞彙表中的詞元列表。每個詞元可以是一個字串,也可以是一個 AddedToken 的例項以進行更多自定義。

返回

int

在詞彙表中建立的詞元數量

將給定的詞元新增到詞彙表中

只有當給定的詞元在詞彙表中尚不存在時,它們才會被新增。然後每個詞元都會獲得一個新分配的 ID。

decode

( ids skip_special_tokens = True ) str

引數

  • ids (List/Tuple of int) — 我們想要解碼的 ID 列表
  • skip_special_tokens (bool, 預設為 True) — 是否應從解碼後的字串中移除特殊詞元

返回

字串

解碼後的字串

將給定的 ID 列表解碼回字符串

這用於解碼任何從語言模型返回的內容

decode_batch

( sequences skip_special_tokens = True ) List[str]

引數

  • sequences (List of List[int]) — 我們想要解碼的序列批次
  • skip_special_tokens (bool, 預設為 True) — 是否應從解碼後的字串中移除特殊詞元

返回

List[str]

解碼後的字串列表

將一批 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) — 填充的方向。可以是 rightleft
  • 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, *可選*) — 如果指定,則為填充到的長度。如果未指定,則使用批次中最長序列的長度進行填充。

啟用填充

enable_truncation

( max_length stride = 0 strategy = 'longest_first' direction = 'right' )

引數

  • max_length (int) — 截斷的最大長度
  • stride (int, *可選*) — 在溢位序列中包含的前一個第一個序列的長度
  • strategy (str, *可選*,預設為 longest_first) — 用於截斷的策略。可以是 longest_firstonly_firstonly_second 之一。
  • direction (str, 預設為 right) — 截斷方向

啟用截斷

編碼

( 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("A single sequence")*
encode("A sequence", "And its pair")*
encode([ "A", "pre", "tokenized", "sequence" ], is_pretokenized=True)`
encode(
[ "A", "pre", "tokenized", "sequence" ], [ "And", "its", "pair" ],
is_pretokenized=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([
"A single sequence",
("A tuple with a sequence", "And its pair"),
[ "A", "pre", "tokenized", "sequence" ],
([ "A", "pre", "tokenized", "sequence" ], "And its pair")
])

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* 更快,因為它不跟蹤偏移量,偏移量將全部為零。

示例

以下是一些可接受輸入的示例

encode_batch_fast([
"A single sequence",
("A tuple with a sequence", "And its pair"),
[ "A", "pre", "tokenized", "sequence" ],
([ "A", "pre", "tokenized", "sequence" ], "And its pair")
])

from_buffer

( buffer ) Tokenizer

引數

  • buffer (bytes) — 一個包含先前序列化的 Tokenizer 的緩衝區

返回

分詞器

新的分詞器

從給定的緩衝區例項化一個新的 Tokenizer

from_file

( path ) Tokenizer

引數

  • path (str) — 一個本地 JSON 檔案的路徑,該檔案代表先前序列化的 Tokenizer

返回

分詞器

新的分詞器

從給定路徑的檔案中例項化一個新的 Tokenizer

from_pretrained

( identifier revision = 'main' token = None ) Tokenizer

引數

  • identifier (str) — Hugging Face Hub 上模型的識別符號,其中包含一個 tokenizer.json 檔案
  • revision (str, 預設為 *main*) — 分支或提交 ID
  • token (str, *可選*,預設為 *None*) — 一個可選的身份驗證令牌,用於訪問 Hugging Face Hub 上的私有倉庫

返回

分詞器

新的分詞器

從 Hugging Face Hub 上的現有檔案例項化一個新的 Tokenizer

from_str

( json ) Tokenizer

引數

  • json (str) — 一個有效的 JSON 字串,代表先前序列化的 Tokenizer

返回

分詞器

新的分詞器

從給定的 JSON 字串例項化一個新的 Tokenizer

get_added_tokens_decoder

( ) Dict[int, AddedToken]

返回

Dict[int, AddedToken]

詞彙表

獲取底層的詞彙表

get_vocab

( with_added_tokens = True ) Dict[str, int]

引數

  • with_added_tokens (bool, 預設為 True) — 是否包含新增的詞元

返回

Dict[str, int]

詞彙表

獲取底層的詞彙表

get_vocab_size

( with_added_tokens = True ) int

引數

  • with_added_tokens (bool, 預設為 True) — 是否包含新增的詞元

返回

int

詞彙表的大小

獲取底層詞彙表的大小

id_to_token

( id ) Optional[str]

引數

  • id (int) — 要轉換的 ID

返回

Optional[str]

一個可選的詞元,如果超出詞彙表範圍則為 None

如果存在,將給定的 ID 轉換為其對應的詞元

no_padding

( )

停用填充

no_truncation

( )

停用截斷

num_special_tokens_to_add

( is_pair )

返回將為單句/句對新增的特殊詞元數量。:param is_pair: 布林值,指示輸入是單個句子還是一個句對 :return

post_process

( encoding pair = None add_special_tokens = True ) Encoding

引數

  • encoding (Encoding) — 對應於主序列的 Encoding
  • pair (Encoding, *可選*) — 一個可選的 Encoding,對應於配對序列。
  • add_special_tokens (bool) — 是否新增特殊詞元

返回

編碼

最終經過後處理的編碼

將所有後處理步驟應用於給定的編碼。

各個步驟是

  1. 根據設定的截斷引數進行截斷(透過 enable_truncation() 提供)
  2. 應用 PostProcessor
  3. 根據設定的填充引數進行填充(透過 enable_padding() 提供)

save

( path pretty = True )

引數

  • path (str) — 用於儲存序列化分詞器的檔案路徑。
  • pretty (bool, 預設為 True) — 是否將 JSON 檔案進行美化格式化。

Tokenizer 儲存到給定路徑的檔案中。

to_str

( pretty = False ) str

引數

  • pretty (bool, 預設為 False) — 是否將 JSON 字串進行美化格式化。

返回

字串

一個表示序列化分詞器的字串

獲取一個表示此 Tokenizer 的序列化字串。

token_to_id

( token ) Optional[int]

引數

  • token (str) — 要轉換的詞符

返回

Optional[int]

一個可選的 id,如果詞符不在詞彙表中則為 None

如果給定的詞符存在,則將其轉換為對應的 id

train

( files trainer = None )

引數

  • files (List[str]) — 用於訓練的檔案路徑列表
  • trainer (~tokenizers.trainers.Trainer, optional) — 一個可選的訓練器,用於訓練我們的模型

使用給定的檔案訓練分詞器。

逐行讀取檔案,同時保留所有空白字元,甚至是換行符。如果你想從記憶體中儲存的資料進行訓練,可以檢視 train_from_iterator()

train_from_iterator

( iterator trainer = None length = None )

引數

  • iterator (Iterator) — 任何可迭代字串或字串列表的迭代器
  • trainer (~tokenizers.trainers.Trainer, optional) — 一個可選的訓練器,用於訓練我們的模型
  • length (int, optional) — 迭代器中序列的總數。這用於提供有意義的進度跟蹤

使用提供的迭代器訓練分詞器。

您可以提供任何 Python 迭代器

  • 序列列表 List[str]
  • 生成 strList[str] 的生成器
  • Numpy 字串陣列
  • ...
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.