Tokenizers 文档

后处理器

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

后处理器

Python
Rust
Node

BertProcessing

class tokenizers.processors.BertProcessing

( sep cls )

参数

  • sep (Tuple[str, int]) — 包含 SEP token 的字符串表示及其 id 的元组
  • cls (Tuple[str, int]) — 包含 CLS token 的字符串表示及其 id 的元组

此后处理器负责添加 Bert 模型所需的特殊 token

  • 一个 SEP token
  • 一个 CLS token

ByteLevel

class tokenizers.processors.ByteLevel

( trim_offsets = True )

参数

  • trim_offsets (bool) — 是否从生成的 offsets 中修剪空格。

此后处理器负责修剪 offsets。

默认情况下,ByteLevel BPE 可能会在生成的 token 中包含空格。如果您不希望 offsets 包含这些空格,则必须使用此 PostProcessor。

RobertaProcessing

class tokenizers.processors.RobertaProcessing

( sep cls trim_offsets = True add_prefix_space = True )

参数

  • sep (Tuple[str, int]) — 包含 SEP token 的字符串表示及其 id 的元组
  • cls (Tuple[str, int]) — 包含 CLS token 的字符串表示及其 id 的元组
  • trim_offsets (bool, 可选, 默认为 True) — 是否从生成的 offsets 中修剪空格。
  • add_prefix_space (bool, 可选, 默认为 True) — 是否在 pre-tokenization 期间启用了 add_prefix_space 选项。这很重要,因为它定义了 offsets 的修剪方式。

此后处理器负责添加 Roberta 模型所需的特殊 token

  • 一个 SEP token
  • 一个 CLS token

它还负责修剪 offsets。默认情况下,ByteLevel BPE 可能会在生成的 token 中包含空格。如果您不希望 offsets 包含这些空格,则应使用 trim_offsets=True 初始化此 PostProcessor

TemplateProcessing

class tokenizers.processors.TemplateProcessing

( single pair special_tokens )

参数

  • single (Template) — 用于单个序列的模板
  • pair (Template) — 当指定两个序列时使用的模板
  • special_tokens (Tokens) — 每个序列中使用的特殊 token 列表

提供了一种指定模板的方法,以便根据需要将特殊 token 添加到每个输入序列中。

我们以 BERT tokenizer 为例。它使用两个特殊 token 来分隔每个序列。[CLS] 始终用于第一个序列的开头,而 [SEP] 添加到第一个序列和配对序列的末尾。最终结果如下所示

  • 单个序列: [CLS] Hello there [SEP]
  • 配对序列: [CLS] My name is Anthony [SEP] What is my name? [SEP]

类型 id 如下

[CLS]   ...   [SEP]   ...   [SEP]
0      0      0      1      1

您可以使用 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 与使用此 PostProcessorTokenizer 中的完全不同的内容相对应,则可能会导致意外结果。

类型

Template (strList)

  • 如果提供 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 期望提供的 idstokens 列表具有相同的长度。

< > 在 GitHub 上更新