Tokenizers 文档

分词器

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

分词器

Python
Rust
Node

Tokenizer

class tokenizers.Tokenizer

( model )

参数

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

Tokenizer 作为一个流程线工作。它处理一些原始文本作为输入,并输出一个 Encoding

property decoder

Tokenizer 使用的可选 Decoder

property model

Tokenizer 使用的 Model

property normalizer

Tokenizer 使用的可选 Normalizer

property padding

返回

(dict, 可选)

如果启用了填充,则返回包含当前填充参数的字典

获取当前填充参数

无法设置,请使用 enable_padding() 代替

property post_processor

Tokenizer 使用的可选 PostProcessor

property pre_tokenizer

Tokenizer 使用的可选 PreTokenizer

property truncation

返回

(dict, 可选)

如果启用了截断,则返回包含当前截断参数的字典

获取当前设置的截断参数

无法设置,请使用 enable_truncation() 代替

add_special_tokens

( tokens ) int

参数

  • tokens (AddedTokenstrList) — 我们要添加到词汇表的特殊 tokens 列表。每个 token 可以是字符串或 AddedToken 的实例,以进行更多自定义。

返回

int

词汇表中创建的 tokens 数量

将给定的特殊 tokens 添加到 Tokenizer。

如果这些 tokens 已经是词汇表的一部分,它只会让 Tokenizer 知道它们。如果它们不存在,Tokenizer 会创建它们,并赋予它们新的 id。

这些特殊 tokens 永远不会被模型处理(即不会被拆分成多个 tokens),并且在解码时可以从输出中删除。

add_tokens

( tokens ) int

参数

  • tokens (AddedTokenstrList) — 我们要添加到词汇表的 tokens 列表。每个 token 可以是字符串或 AddedToken 的实例,以进行更多自定义。

返回

int

词汇表中创建的 tokens 数量

将给定的 tokens 添加到词汇表

仅当给定的 tokens 尚不存在于词汇表中时,才会添加它们。然后,每个 token 都会获得一个新的属性 id。

decode

( ids skip_special_tokens = True ) str

参数

  • ids (intList/Tuple) — 我们要解码的 ids 列表
  • skip_special_tokens (bool,默认为 True) — 特殊 tokens 是否应从解码后的字符串中删除

返回

str

解码后的字符串

将给定的 ids 列表解码回字符串

这用于解码来自语言模型的任何内容

decode_batch

( sequences skip_special_tokens = True ) List[str]

参数

  • sequences (List[int]List) — 我们要解码的序列批次
  • skip_special_tokens (bool,默认为 True) — 特殊 tokens 是否应从解码后的字符串中删除

返回

List[str]

解码后的字符串列表

将一批 ids 解码回其对应的字符串

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]) — 填充时使用的 pad token
  • length (int, 可选) — 如果指定,则为填充的长度。如果未指定,我们将使用批次中最长序列的大小进行填充。

启用填充

enable_truncation

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

参数

  • max_length (int) — 要截断的最大长度
  • stride (int, 可选) — 要包含在溢出序列中的先前第一个序列的长度
  • strategy (str, optional, defaults to longest_first) — 用于截断的策略。 可以是 longest_first, only_firstonly_second 中的一个。
  • direction (str, defaults to right) — 截断方向

启用截断

encode

( 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, optional) — 可选的输入序列。 预期格式与 sequence 相同。
  • is_pretokenized (bool, defaults to False) — 指示输入是否已预分词
  • add_special_tokens (bool, defaults to True) — 是否添加特殊 token

返回

Encoding

编码结果

编码给定的序列和序列对。此方法可以处理原始文本序列以及已预分词的序列。

示例

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

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, defaults to False) — 指示输入是否已预分词
  • add_special_tokens (bool, defaults to True) — 是否添加特殊 token

返回

[`~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, defaults to False) — 指示输入是否已预分词
  • add_special_tokens (bool, defaults to True) — 是否添加特殊 token

返回

[`~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

从给定的缓冲区实例化一个新的 Tokenizer

from_file

( path ) Tokenizer

参数

  • path (str) — 本地 JSON 文件的路径,该文件表示先前序列化的 Tokenizer

返回

分词器

新的 tokenizer

从给定路径的文件实例化一个新的 Tokenizer

from_pretrained

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

参数

  • identifier (str) — Hugging Face Hub 上模型的标识符,其中包含 tokenizer.json 文件
  • revision (str, defaults to main) — 分支或提交 ID
  • token (str, optional, defaults to None) — 可选的身份验证 token,用于访问 Hugging Face Hub 上的私有仓库

返回

分词器

新的 tokenizer

从 Hugging Face Hub 上的现有文件实例化一个新的 Tokenizer

from_str

( json ) Tokenizer

参数

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

返回

分词器

新的 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, defaults to True) — 是否包含添加的 token

返回

Dict[str, int]

词汇表

获取底层词汇表

get_vocab_size

( with_added_tokens = True ) int

参数

  • with_added_tokens (bool, defaults to True) — 是否包含添加的 token

返回

int

词汇表的大小

获取底层词汇表的大小

id_to_token

( id ) Optional[str]

参数

  • id (int) — 要转换的 ID

返回

Optional[str]

可选的 token,如果超出词汇表则为 None

如果存在,则将给定的 ID 转换为其对应的 token

no_padding

( )

禁用填充

no_truncation

( )

禁用截断

num_special_tokens_to_add

( is_pair )

返回为单个/成对句子添加的特殊 token 的数量。 :param is_pair: 布尔值,指示输入是单个句子还是句子对 :return

post_process

( encoding pair = None add_special_tokens = True ) Encoding

参数

  • encoding (Encoding) — 与主序列对应的 Encoding
  • pair (Encoding, optional) — 可选的 Encoding,对应于序列对。
  • add_special_tokens (bool) — 是否添加特殊 token

返回

Encoding

最终的后处理编码

将所有后处理步骤应用于给定的编码。

各种步骤是

  1. 根据设置的截断参数(使用 enable_truncation() 提供)进行截断
  2. 应用 PostProcessor
  3. 根据设置的填充参数(使用 enable_padding() 提供)进行填充

save

( path pretty = True )

参数

  • path (str) — 用于保存序列化 tokenizer 的文件路径。
  • pretty (bool, defaults to True) — JSON 文件是否应进行美化格式化。

Tokenizer 保存到给定路径的文件中。

to_str

( pretty = False ) str

参数

  • pretty (bool, 默认为 False) — JSON 字符串是否应格式化输出。

返回

str

表示序列化 Tokenizer 的字符串

获取表示此 Tokenizer 的序列化字符串。

token_to_id

( token ) Optional[int]

参数

  • token (str) — 要转换的 token

返回

Optional[int]

一个可选的 id,如果 token 超出词汇表则为 None

如果给定的 token 存在,则将其转换为对应的 id

train

( files trainer = None )

参数

  • files (List[str]) — 应该用于训练的文件的路径列表
  • trainer (~tokenizers.trainers.Trainer, 可选) — 可选的 trainer,应该用于训练我们的 Model

使用给定的文件训练 Tokenizer。

逐行读取文件,同时保留所有空格,甚至包括换行符。 如果你想从内存中存储的数据进行训练,你可以查看 train_from_iterator()

train_from_iterator

( iterator trainer = None length = None )

参数

  • iterator (Iterator) — 任何字符串或字符串列表的迭代器
  • trainer (~tokenizers.trainers.Trainer, 可选) — 可选的 trainer,应该用于训练我们的 Model
  • length (int, 可选) — 迭代器中序列的总数。 这用于提供有意义的进度跟踪

使用提供的迭代器训练 Tokenizer。

你可以提供任何作为 Python 迭代器的对象

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