分词器文档

分词器

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

分词器

Python
Rust
Node

分词器

tokenizers.Tokenizer

( model )

参数

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

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

属性 decoder

分词器使用的可选 Decoder

属性 model

分词器使用的 模型

属性 normalizer

分词器使用的可选 规范化器

属性 padding

返回

(dict, 可选)

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

获取当前填充参数

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

属性 post_processor

分词器使用的可选 PostProcessor

属性 pre_tokenizer

分词器使用的可选 预分词器

属性 truncation

返回

(dict, 可选)

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

获取当前设置的截断参数

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

add_special_tokens

( tokens ) int

参数

  • tokens (List 类型 AddedTokenstr) — 我们想要添加到词汇表的特殊标记列表。每个标记可以是字符串,也可以是 AddedToken 的实例,以便进行更多自定义。

返回

int

在词汇表中创建的标记数量

将给定的特殊标记添加到分词器。

如果这些标记已经是词汇表的一部分,它只会让分词器知道它们。如果它们不存在,分词器会创建它们,并为它们分配一个新的 ID。

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

add_tokens

( tokens ) int

参数

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

返回

int

在词汇表中创建的标记数量

将给定的标记添加到词汇表中

仅当给定标记不存在于词汇表中时才会添加。然后,每个标记都会获得一个新的属性 ID。

解码

( ids skip_special_tokens = True ) str

参数

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

返回

str

解码后的字符串

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

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

批量解码

( sequences skip_special_tokens = True ) List[str]

参数

  • sequences (intListList) — 我们想要解码的序列批次
  • skip_special_tokens (bool,默认为 True) — 是否应从解码后的字符串中删除特殊标记

返回

List[str]

解码后的字符串列表

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

启用填充

( 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
  • 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) — 截断方向

启用截断

encode

( sequence pair = None is_pretokenized = False add_special_tokens = True ) Encoding

参数

  • sequence (~tokenizers.InputSequence) — 我们想要编码的主要输入序列。根据 is_pretokenized 参数,此序列可以是原始文本或预标记的文本:

    • 如果 is_pretokenized=FalseTextInputSequence
    • 如果 is_pretokenized=TruePreTokenizedInputSequence()
  • 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

参数

  • 输入 (List/`Tuple of ~tokenizers.EncodeInput) — 要编码的单个序列或序列对列表。每个序列可以是原始文本或预标记化的,具体取决于 is_pretokenized 参数:

    • 如果 is_pretokenized=FalseTextEncodeInput()
    • 如果 is_pretokenized=TruePreTokenizedEncodeInput()
  • is_pretokenized (bool, 默认为 False) — 输入是否已预标记化
  • add_special_tokens (bool, 默认为 True) — 是否添加特殊标记

返回

一个 [`~tokenizers.Encoding“] 的 List

编码后的批次

编码给定的输入批次。此方法接受原始文本序列以及已预标记化的序列。

示例

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

encode_batch([
"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) — 表示先前序列化 Tokenizer 的本地 JSON 文件的路径

返回

分词器

新的分词器

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

from_pretrained

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

参数

  • identifier (str) — Hugging Face Hub 上包含 tokenizer.json 文件的模型的标识符
  • revision (str, 默认为 main) — 分支或提交 ID
  • auth_token (str, 可选, 默认为 None) — 用于访问 Hugging Face Hub 上私有存储库的可选身份验证令牌

返回

分词器

新的分词器

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

from_str

( json ) Tokenizer

参数

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

返回

分词器

新的分词器

从给定的 JSON 字符串实例化一个新的 Tokenizer

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字符串是否应该格式化。

返回

str

表示序列化分词器的字符串

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

token_to_id

(

参数

  • token (str) — 要转换的词元

返回

可选[int]

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

将给定的词元转换为其对应的 ID(如果存在)

训练

( files trainer = None )

参数

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

使用给定的文件训练分词器。

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

从迭代器训练

( iterator trainer = None length = None )

参数

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

使用提供的迭代器训练分词器。

您可以提供任何 Python 迭代器。

  • 序列列表 List[str]
  • 生成 strList[str] 的生成器
  • 字符串的 Numpy 数组