分詞器文件
後處理器
並獲得增強的文件體驗
開始使用
後處理器
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` 列表長度相同。