分詞器文件

後處理器

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

後處理器

Python
Rust
Node

BertProcessing

class tokenizers.processors.BertProcessing

( sep cls )

引數

  • sep (Tuple[str, int]) — 一個包含 SEP 詞符的字串表示及其 ID 的元組
  • cls (Tuple[str, int]) — 一個包含 CLS 詞符的字串表示及其 ID 的元組

此後處理器負責新增 Bert 模型所需的特殊詞符:

  • 一個 SEP 詞符
  • 一個 CLS 詞符

ByteLevel

class tokenizers.processors.ByteLevel

( trim_offsets = True )

引數

  • trim_offsets (bool) — 是否從生成的偏移量中修剪空格。

此後處理器負責修剪偏移量。

預設情況下,位元組級 BPE(ByteLevel BPE)可能會在生成的詞符中包含空格。如果您不希望偏移量包含這些空格,則必須使用此後處理器。

RobertaProcessing

class tokenizers.processors.RobertaProcessing

( sep cls trim_offsets = True add_prefix_space = True )

引數

  • sep (Tuple[str, int]) — 一個包含 SEP 詞符的字串表示及其 ID 的元組
  • cls (Tuple[str, int]) — 一個包含 CLS 詞符的字串表示及其 ID 的元組
  • trim_offsets (bool, 可選, 預設為 True) — 是否從生成的偏移量中修剪空格。
  • add_prefix_space (bool, 可選, 預設為 True) — 在預分詞期間是否啟用了 add_prefix_space 選項。這很重要,因為它定義了修剪偏移量的方式。

此後處理器負責新增 Roberta 模型所需的特殊詞符。

  • 一個 SEP 詞符
  • 一個 CLS 詞符

它還負責修剪偏移量。預設情況下,位元組級 BPE(ByteLevel BPE)可能會在生成的詞符中包含空格。如果您不希望偏移量包含這些空格,則應使用 `trim_offsets=True` 初始化此後處理器。

TemplateProcessing

class tokenizers.processors.TemplateProcessing

( single pair special_tokens )

引數

  • single (Template) — 用於單個序列的模板
  • pair (Template) — 當指定了兩個序列時使用的模板
  • special_tokens (Tokens) — 每個序列中使用的特殊詞符列表

提供一種指定模板的方法,以便為每個輸入序列新增相關的特殊詞符。

以 `BERT` 分詞器為例。它使用兩個特殊詞符來界定每個序列。`[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`,……

特殊詞符也使用相同的結構:`<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` 列表長度相同。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.