后处理器
Python
Rust
Node
BertProcessing
ByteLevel
此后处理器负责修剪偏移量。
默认情况下,ByteLevel BPE 可能会在生成的标记中包含空格。如果您不希望偏移量包含这些空格,则必须使用此后处理器。
RobertaProcessing
此后处理程序负责添加Roberta模型所需的特殊标记。
- 一个 SEP 标记
- 一个 CLS 标记
它还负责修剪偏移量。默认情况下,字节级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将添加到编码中,无需进一步检查。如果给定的ID与使用此后处理器的标记器中完全不同的内容相对应,则可能导致意外结果。
类型
Template (str
或 List
)
- 如果提供
str
,则空格用作标记之间的分隔符。 - 如果提供
List[str]
,则为标记列表。
Tokens (List[Union[Tuple[int, str], Tuple[str, int], dict]]
)
一个
Tuple
包含标记及其关联的ID,顺序任意。一个包含以下键的
dict
- “id”:
str
=> 特殊标记ID,如模板中指定。 - “ids”:
List[int]
=> 关联的ID。 - “tokens”:
List[str]
=> 关联的标记。
给定的dict期望提供的
ids
和tokens
列表具有相同的长度。- “id”: