Tokenizers 文档
后处理器
并获得增强的文档体验
开始使用
后处理器
BertProcessing
此后处理器负责添加 Bert 模型所需的特殊 token
- 一个 SEP token
- 一个 CLS token
ByteLevel
此后处理器负责修剪 offsets。
默认情况下,ByteLevel BPE 可能会在生成的 token 中包含空格。如果您不希望 offsets 包含这些空格,则必须使用此 PostProcessor。
RobertaProcessing
class tokenizers.processors.RobertaProcessing
( sep cls trim_offsets = True add_prefix_space = True )
此后处理器负责添加 Roberta 模型所需的特殊 token
- 一个 SEP token
- 一个 CLS token
它还负责修剪 offsets。默认情况下,ByteLevel BPE 可能会在生成的 token 中包含空格。如果您不希望 offsets 包含这些空格,则应使用 trim_offsets=True
初始化此 PostProcessor
TemplateProcessing
提供了一种指定模板的方法,以便根据需要将特殊 token 添加到每个输入序列中。
我们以 BERT
tokenizer 为例。它使用两个特殊 token 来分隔每个序列。[CLS]
始终用于第一个序列的开头,而 [SEP]
添加到第一个序列和配对序列的末尾。最终结果如下所示
- 单个序列:
[CLS] Hello there [SEP]
- 配对序列:
[CLS] My name is Anthony [SEP] What is my name? [SEP]
您可以使用 TemplateProcessing 实现这种行为
TemplateProcessing(
single="[CLS] $0 [SEP]",
pair="[CLS] $A [SEP] $B:1 [SEP]:1",
special_tokens=[("[CLS]", 1), ("[SEP]", 0)],
)
在此示例中,每个输入序列都使用 $
构造标识。此标识符使我们能够指定每个输入序列和要使用的 type_id。当未指定任何内容时,它将使用默认值。以下是指定它的不同方式
- 指定序列,默认
type_id == 0
:$A
或$B
- 指定 type_id,默认
sequence == A
:$0
,$1
,$2
, … - 同时指定两者:
$A:0
,$B:1
, …
相同的构造用于特殊 token: <identifier>(:<type_id>)?
。
警告:您必须确保您提供正确的 token/ids,因为这些 token/ids 将在没有任何进一步检查的情况下添加到 Encoding 中。如果给定的 ids 与使用此 PostProcessor 的 Tokenizer 中的完全不同的内容相对应,则可能会导致意外结果。
类型
Template (str
或 List
)
- 如果提供
str
,则空格用作 token 之间的分隔符 - 如果提供
List[str]
,则为 token 列表
Tokens (List[Union[Tuple[int, str], Tuple[str, int], dict]]
)
一个
Tuple
,其中包含 token 及其关联的 ID,顺序不限一个
dict
,包含以下键- “id”:
str
=> 特殊 token id,如 Template 中指定 - “ids”:
List[int]
=> 关联的 IDs - “tokens”:
List[str]
=> 关联的 tokens
给定的 dict 期望提供的
ids
和tokens
列表具有相同的长度。- “id”: