分词器文档
分词器
并获得增强的文档体验
开始使用
分词器
分词器
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()