分词器文档
后处理器
并获得增强的文档体验
开始使用
后处理器
BertProcessing
此后处理器负责添加 Bert 模型所需的特殊词符:
- 一个 SEP 词符
- 一个 CLS 词符
ByteLevel
此后处理器负责修剪偏移量。
默认情况下,字节级 BPE(ByteLevel BPE)可能会在生成的词符中包含空格。如果您不希望偏移量包含这些空格,则必须使用此后处理器。
RobertaProcessing
class tokenizers.processors.RobertaProcessing
( sep cls trim_offsets = True add_prefix_space = True )
此后处理器负责添加 Roberta 模型所需的特殊词符。
- 一个 SEP 词符
- 一个 CLS 词符
它还负责修剪偏移量。默认情况下,字节级 BPE(ByteLevel BPE)可能会在生成的词符中包含空格。如果您不希望偏移量包含这些空格,则应使用 `trim_offsets=True` 初始化此后处理器。
TemplateProcessing
提供一种指定模板的方法,以便为每个输入序列添加相关的特殊词符。
以 `BERT` 分词器为例。它使用两个特殊词符来界定每个序列。`[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`,……
特殊词符也使用相同的结构:`<identifier>(:<type_id>)?`。
警告:您必须确保提供正确的词符/ID,因为它们将被添加到编码中而不再进行任何检查。如果给定的 ID 在使用此 *PostProcessor* 的 *Tokenizer* 中对应完全不同的内容,可能会导致意外结果。
类型
Template (`str` 或 `List`)
- 如果提供的是 `str`,则使用空格作为词符之间的分隔符。
- 如果提供的是 `List[str]`,则为词符列表。
Tokens (`List[Union[Tuple[int, str], Tuple[str, int], dict]]`)
一个包含词符及其关联 ID 的 `Tuple`,顺序不限。
一个包含以下键的 `dict`:
- “id”: `str` => 模板中指定的特殊词符 ID
- “ids”: `List[int]` => 关联的 ID
- “tokens”: `List[str]` => 关联的词符
给定的字典要求提供的 `ids` 和 `tokens` 列表长度相同。