# トークナイザー用のユーティリティ

このページでは、トークナイザーで使用されるすべてのユーティリティ関数をリストしています。主に、[PreTrainedTokenizer](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.PythonBackend)と[PreTrainedTokenizerFast](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.TokenizersBackend)の間に共通するメソッドを実装するクラス[PreTrainedTokenizerBase](/docs/transformers/v5.23.0/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase)についてです。

それらの多くは、ライブラリのトークナイザーのコードを研究している場合にのみ有用です。

## PreTrainedTokenizerBase[[transformers.PreTrainedTokenizerBase]]

#### transformers.PreTrainedTokenizerBase[[transformers.PreTrainedTokenizerBase]]

```python
transformers.PreTrainedTokenizerBase(**kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L967)

**パラメータ:**

model_max_length (`int`, *optional*) : The maximum length (in number of tokens) for the inputs to the transformer model. When the tokenizer is loaded with [from_pretrained()](/docs/transformers/v5.23.0/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.from_pretrained), this will be set to the value stored for the associated model in `max_model_input_sizes` (see above). If no value is provided, will default to VERY_LARGE_INTEGER (`int(1e30)`).

padding_side (`str`, *任意*) : モデルにパディングを適用する側です。['right', 'left'] から選択する必要があります。デフォルト値は、同名のクラス属性から取得されます。

truncation_side (`str`, *任意*) : モデルに切り詰めを適用する側です。['right', 'left'] から選択する必要があります。デフォルト値は、同名のクラス属性から取得されます。

chat_template (`str`, *任意*) : チャットメッセージのリストを整形するために使用される Jinja テンプレート文字列です。詳細については、https://huggingface.co/docs/transformers/chat_templating を参照してください。

model_input_names (`list[string]`、*任意*) : モデルのフォワードパスが受け入れる入力の一覧（`"token_type_ids"` や `"attention_mask"` など）。デフォルト値は、同名のクラス属性から選択されます。

bos_token (`str` または `tokenizers.AddedToken`、*任意*) : 文の開始を表す特殊トークン。

eos_token (`str` または `tokenizers.AddedToken`、*省略可能*) : 文の終わりを表す特殊トークン。

unk_token (`str` または `tokenizers.AddedToken`、*省略可*) : 語彙外トークンを表す特殊トークン。

sep_token (`str` または `tokenizers.AddedToken`、*省略可能*) : 同じ入力内の2つの異なる文を区切るための特殊トークン（BERTなどで使用されます）。

pad_token (`str` または `tokenizers.AddedToken`、*省略可*) : バッチ処理のためにトークン配列のサイズを揃える際に使用される特殊トークン。アテンション機構や損失計算では無視されます。

cls_token (`str` または `tokenizers.AddedToken`、*省略可能*) : 入力のクラスを表す特殊トークン（BERT などで使用されます）。

mask_token (`str` または `tokenizers.AddedToken`、*省略可*) : マスクされたトークンを表す特殊トークン（BERT などのマスク言語モデリング事前学習目的で使用されます）。`self.mask_token` および `self.mask_token_id` に関連付けられます。

extra_special_tokens `str` または `tokenizers.AddedToken` のリスト、*任意*) : モデル固有の追加の特殊トークンのリストです。`skip_special_tokens` が True に設定されている場合、デコード時にこれらがスキップされることを保証するために、ここに追加してください。語彙の一部でない場合は、語彙の末尾に追加されます。

split_special_tokens (`bool`, *任意*, デフォルトは `False`) : トークナイズ処理中に特殊トークンを分割するかどうかを指定します。この引数を渡すと、トークナイザーの内部状態に影響します。デフォルトの動作は、特殊トークンを分割しないことです。つまり、`<s>` が `bos_token` である場合、`tokenizer.tokenize("<s>") = ['<s>`'] となります。一方、`split_special_tokens=True` の場合、`tokenizer.tokenize("<s>")` は `['<','s', '>']` を返します。

すべてのトークナイザーバックエンドの基底クラス。

クラス属性（派生クラスによって上書きされる）

- **vocab_files_names** (`dict[str, str]`) -- モデルに必要な各語彙ファイルの`__init__`キーワード名をキーとし、対応するファイルを保存するためのファイル名（文字列）を値とする辞書。
- **pretrained_vocab_files_map** (`dict[str, dict[str, str]]`) -- 辞書の辞書です。上位のキーは、モデルが要求する各語彙ファイルの `__init__` キーワード引数名で、下位のキーは事前学習済みモデルの `short-cut-names` です。対応する値は、関連する事前学習済み語彙ファイルへの `url` です。
- **model_input_names** (`list[str]`) -- モデルの forward pass で期待される入力のリスト。
- **padding_side** (`str`) -- モデルにパディングを適用する側のデフォルト値。`'right'` または `'left'` を指定する必要があります。
- **truncation_side** (`str`) -- モデルに切り詰めを適用する側のデフォルト値。`'right'` または `'left'` を指定します。

#### __call__[[transformers.PreTrainedTokenizerBase.__call__]]

```python
__call__(text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, is_split_into_words: bool = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2448)

**パラメータ:**

text (`str`、`list[str]`、`list[list[str]]`、*任意*) : エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは文字列、または文字列のリスト（プレトークナイズ済み文字列）であることができます。シーケンスが文字列のリスト（プレトークナイズ済み）として提供される場合、`is_split_into_words=True` を設定する必要があります（シーケンスのバッチとの曖昧さを解消するため）。

text_pair (`str`、`list[str]`、`list[list[str]]`、*任意*) : エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは文字列、または文字列のリスト（プレトークナイズ済み文字列）であることができます。シーケンスが文字列のリスト（プレトークナイズ済み）として提供される場合、`is_split_into_words=True` を設定する必要があります（シーケンスのバッチとの曖昧さを解消するため）。

text_target (`str`、`list[str]`、`list[list[str]]`、*任意*) : ターゲットテキストとしてエンコードするシーケンスまたはシーケンスのバッチです。各シーケンスは文字列または文字列のリスト（プレトークナイズされた文字列）であることができます。シーケンスが文字列のリスト（プレトークナイズ）として提供される場合、`is_split_into_words=True` を設定する必要があります（シーケンスのバッチとの曖昧さを解消するため）。

text_pair_target (`str`、`list[str]`、`list[list[str]]`、*任意*) : ターゲットテキストとしてエンコードするシーケンスまたはシーケンスのバッチです。各シーケンスは文字列または文字列のリスト（プレトークナイズされた文字列）であることができます。シーケンスが文字列のリスト（プレトークナイズ）として提供される場合、`is_split_into_words=True` を設定する必要があります（シーケンスのバッチとの曖昧さを解消するため）。

tokenizer_kwargs (`dict[str, Any]`、*省略可*) : トークナイザーに渡す追加の kwargs です。これらは明示的なパラメータやその他の kwargs とマージされますが、明示的なパラメータが優先されます。

add_special_tokens (`bool`、*任意*、デフォルトは`True`) : シーケンスをエンコードする際に特殊トークンを追加するかどうか。これは、入力 ID に自動的に追加されるトークンを定義する基盤となる`PretrainedTokenizerBase.build_inputs_with_special_tokens`関数を使用します。`bos`または`eos`トークンを自動的に追加したい場合に便利です。

padding (`bool`、`str` または [PaddingStrategy](/docs/transformers/v5.23.0/ja/internal/file_utils#transformers.utils.PaddingStrategy)、*optional*、デフォルトは `False`) : パディングの有効化と制御を行います。以下の値を受け取ります:  - `True` または `'longest'`: バッチ内の最長のシーケンスの長さにパディングします（単一のシーケンスのみが提供された場合は、パディングを行いません）。 - `'max_length'`: 引数 `max_length` で指定された最大長、またはその引数が提供されていない場合はモデルが受け入れ可能な最大入力長までパディングします。 - `False` または `'do_not_pad'`（デフォルト）: パディングを行いません（つまり、長さが異なるシーケンスのバッチを出力できます）。

truncation (`bool`、`str` または [TruncationStrategy](/docs/transformers/v5.23.0/ja/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)、*optional*、デフォルトは `False`) : トランケーションを有効化し、制御します。以下の値を受け取ります: - `True` または `'longest_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの中で最も長いシーケンスからトークン単位で1トークンずつ削除します。 - `'only_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの最初のシーケンスのみを切り詰めます。 - `'only_second'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの2番目のシーケンスのみを切り詰めます。 - `False` または `'do_not_truncate'`（デフォルト）: トランケーションを行いません（つまり、モデルが許容する最大入力サイズを超えるシーケンス長を持つバッチを出力する可能性があります）。

max_length (`int`, *optional*) : 切り詰め/パディングパラメータのいずれかによって使用される最大長を制御します。 未設定のまま、または `None` に設定されている場合、切り詰め/パディングパラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。 モデルに特定の最大入力長がない場合（XLNet など）、最大長への切り詰め/パディングは無効になります。

stride (`int`、*optional*、デフォルト値は 0) : `max_length` とともに数値が設定されている場合、`return_overflowing_tokens=True` のときに返されるオーバーフローしたトークンは、切り詰められたシーケンスの末尾の一部のトークンを含み、切り詰められたシーケンスとオーバーフローしたシーケンスの間に重複部分を持たせます。この引数の値は、重複するトークンの数を定義します。

is_split_into_words (`bool`、*任意*、デフォルトは `False`) : 入力がすでに事前トークン化済み（例：単語に分割済み）かどうかを示します。`True` に設定すると、トークナイザーは入力がすでに単語に分割済み（たとえば空白で分割済み）であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。

pad_to_multiple_of (`int`, *optional*) : 設定すると、シーケンスを指定された値の倍数にパディングします。`padding` が有効になっている必要があります。これは、計算能力が `>= 7.5` (Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。

padding_side (`str`, *任意*) : モデルにパディングを適用する側です。['right', 'left'] から選択する必要があります。デフォルト値は、同名のクラス属性から取得されます。

return_tensors (`str` または [TensorType](/docs/transformers/v5.23.0/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定されている場合、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです。 - `'pt'`: PyTorch の `torch.Tensor` オブジェクトを返します。 - `'np'`: Numpy の `np.ndarray` オブジェクトを返します。

return_token_type_ids (`bool`、*省略可*) : トークンタイプIDを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、トークンタイプIDを返します。  [トークンタイプIDとは?](../glossary#token-type-ids)

return_attention_mask (`bool`、*省略可*) : アテンションマスクを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、アテンションマスクを返します。  [アテンションマスクとは?](../glossary#attention-mask)

return_overflowing_tokens (`bool`, *任意*, デフォルトは `False`) : 溢れたトークンシーケンスを返すかどうかを指定します。入力 ID のシーケンスのペア（またはペアのバッチ）が `truncation_strategy = longest_first` または `True` とともに提供された場合、溢れたトークンを返す代わりにエラーが発生します。

return_special_tokens_mask (`bool`, *任意*, デフォルトは `False`) : 特殊トークンのマスク情報を返すかどうか。

return_offsets_mapping (`bool`、*任意*、デフォルトは`False`) : 各トークンについて`(char_start, char_end)`を返すかどうか。これは[PreTrainedTokenizerFast](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.TokenizersBackend)を継承する fast tokenizer のみで利用可能であり、Python の tokenizer を使用している場合、このメソッドは`NotImplementedError`を送出します。

return_length (`bool`、*任意*、デフォルトは`False`) : エンコードされた入力の長さを返すかどうか。

verbose (`bool`、*任意*、デフォルトは `True`) : 詳細な情報や警告を表示するかどうか。

- ****kwargs** : `self.tokenize()` メソッドに渡されます

**戻り値:** [BatchEncoding](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.BatchEncoding)

以下のフィールドを持つ[BatchEncoding](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.BatchEncoding):

- **input_ids** -- モデルに渡すトークンIDのリスト。

  [入力IDとは何ですか？](../glossary#input-ids)

- **token_type_ids** -- モデルに渡すトークンタイプIDのリスト（`return_token_type_ids=True`の場合、または`self.model_input_names`に*"token_type_ids"*が含まれる場合）。

  [トークンタイプIDとは?](../glossary#token-type-ids)

- **attention_mask** -- モデルがどのトークンに注意すべきかを指定するインデックスのリスト（`return_attention_mask=True` の場合、または `self.model_input_names` に *"attention_mask"* が含まれている場合）。

  [アテンションマスクとは?](../glossary#attention-mask)

- **overflowing_tokens** -- 溢れ出したトークンシーケンスのリスト（`max_length`が指定され、`return_overflowing_tokens=True`の場合）。
- **num_truncated_tokens** -- トークンが切り詰められた数（`max_length`が指定され、`return_overflowing_tokens=True`の場合）。
- **special_tokens_mask** -- 0 と 1 のリスト。1 は追加された特殊トークンを、0 は通常のシーケンストークンを示します（`add_special_tokens=True` かつ `return_special_tokens_mask=True` の場合）。
- **length** -- 入力データの長さ（`return_length=True`の場合）

1 つ以上のシーケンス、または 1 つ以上のシーケンスのペアをトークナイズし、モデル用に準備するための主要なメソッドです。

#### add_special_tokens[[transformers.PreTrainedTokenizerBase.add_special_tokens]]

```python
add_special_tokens(special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]], replace_extra_special_tokens = True)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L1112)

**パラメータ:**

special_tokens_dict (*str* から *str*、`tokenizers.AddedToken`、または `Sequence[Union[str, AddedToken]]` への辞書) : キーは、事前定義された特殊属性のリスト [`bos_token`、`eos_token`、`unk_token`、`sep_token`、`pad_token`、`cls_token`、`mask_token`、`extra_special_tokens`] に含まれる必要があります。 トークンは、すでに語彙に存在しない場合のみ追加されます（`unk_token` のインデックスがそれらに割り当てられているかどうかを確認してテストします）。

replace_extra_special_tokens (`bool`、*任意*、デフォルトは `True`) : `True` の場合、既存の追加特殊トークンのリストは、`special_tokens_dict` で提供されたリストに置き換えられます。それ以外の場合、`extra_special_tokens` が拡張されます。前者の場合、トークンはトークナイザーの完全な語彙から削除されません。単に非特殊トークンとしてフラグが付けられるだけです。なお、これはデコーディング時にスキップされるトークンに影響するだけで、`added_tokens_encoder` および `added_tokens_decoder` には影響しません。つまり、以前の `extra_special_tokens` は依然として追加トークンであり、モデルによって分割されません。

**戻り値:** `int`

語彙に追加されるトークンの数。

特殊トークン（eos、pad、cls など）の辞書をエンコーダーに追加し、クラス属性にリンクします。特殊トークンが語彙に存在しない場合は、現在の語彙の最後のインデックスからインデックスを付けて語彙に追加されます。

語彙に新しいトークンを追加する際は、モデルのトークン埋め込み行列をリサイズし、埋め込み行列がトークナイザーと一致するようにしてください。

そのためには、[resize_token_embeddings()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel.resize_token_embeddings) メソッドを使用してください。

`add_special_tokens` を使用すると、特別なトークンを以下の複数の方法で使用できます。

- `skip_special_tokens = True` を使用すると、デコード時に特殊トークンをスキップできます。
- 特殊トークンは、`AddedTokens`と同様に、トークナイザーによって慎重に処理されます（分割されることはありません）。
- `tokenizer.cls_token` などの tokenizer クラスの属性を使用して、特殊トークンを簡単に参照できます。これにより、モデル非依存の学習およびファインチューニングスクリプトの開発が容易になります。

可能な場合、提供される事前学習済みモデルには、特別なトークンがすでに登録されています（例えば、[BertTokenizer](/docs/transformers/v5.23.0/ja/model_doc/lxmert#transformers.BertTokenizer) の `cls_token` は `'[CLS]'` として、XLM のものは `'</s>'` として、それぞれ登録済みです）。

例:

```python
# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")

special_tokens_dict = {"cls_token": "<CLS>"}

num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))

assert tokenizer.cls_token == "<CLS>"
```

#### add_tokens[[transformers.PreTrainedTokenizerBase.add_tokens]]

```python
add_tokens(new_tokens: str | AddedToken | Sequence[str | AddedToken], special_tokens: bool = False)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L1217)

**パラメータ:**

new_tokens (`str`、`tokenizers.AddedToken`、または *str* または `tokenizers.AddedToken` のシーケンス) : トークンは、語彙にまだ存在しない場合のみ追加されます。`tokenizers.AddedToken` は文字列トークンをラップし、その動作をカスタマイズできます。例えば、このトークンが単一の単語にのみマッチすべきか、左側の潜在的な空白をすべて除去すべきか、右側の潜在的な空白をすべて除去すべきかなどです。

special_tokens (`bool`、*任意*、デフォルトは`False`) : トークンが特殊トークンかどうかを指定します。主に正規化の動作に影響します。詳細は、HuggingFace tokenizers ライブラリの`tokenizers.AddedToken`を参照してください。

**戻り値:** `int`

語彙に追加されるトークンの数。

#TODO ここから削除すること！ PreTrainedTokenizerBase は AddedToken を意識しないようにすべきです。

新しいトークンのリストを追加します。新しいトークンが語彙に存在しない場合、末尾に追加されます。そのため、追加されたトークンとトークン化アルゴリズムの語彙からのトークンは、同じように扱われません。

`Metaspace` プリトークナイザーを使用し、`prepend_scheme="always"` を指定した高速トークナイザー（NLLB など）は、追加トークンの後に続くテキストの先頭に `"▁"` を付加します。`tokenizer.add_tokens(["abcd"])` を実行した後、`"abcdgym"` は `["abcd", "▁gym"]` にトークン化され、デコードすると `"abcd gym"` になります。追加トークンが単語の内部に出現し得る場合は、プリトークナイザーを切り替えてください

`prepend_scheme="first"` に設定し、入力のはじめの部分にのみプレフィックスを付与するようにします:

```python
from tokenizers import pre_tokenizers

pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer
tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace(
    replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split
)
```

例:

```python
# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")

num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))
```

#### apply_chat_template[[transformers.PreTrainedTokenizerBase.apply_chat_template]]

```python
apply_chat_template(conversation: list[dict[str, str]] | list[list[dict[str, str]]], tools: list[dict | Callable] | None = None, documents: list[dict[str, str]] | None = None, chat_template: str | None = None, add_generation_prompt: bool = False, continue_final_message: bool | str = False, tokenize: bool = True, sanitize_control_tokens: bool = False, padding: bool | str | PaddingStrategy = False, truncation: bool = False, max_length: int | None = None, return_tensors: str | TensorType | None = None, return_dict: bool = True, return_assistant_tokens_mask: bool = False, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L3020)

**パラメータ:**

conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) : "role" と "content" キーを持つ辞書のリストで、これまでに蓄積されたチャット履歴を表します。

tools (`list[Union[Dict, Callable]]`、*任意*) : モデルが利用可能なツール（呼び出し可能な関数）のリストです。テンプレートが関数呼び出しをサポートしていない場合、この引数は無効になります。各ツールは、ツールの名前、説明、引数の型を指定した JSON Schema として渡す必要があります。詳細については、[ツール使用ガイド](https://huggingface.co/docs/transformers/en/chat_extras#passing-tools)を参照してください。

documents (`list[dict[str, str]]`、*任意*) : モデルが RAG（検索拡張生成）を実行する場合にモデルがアクセスできるドキュメントを表す dict のリストです。テンプレートが RAG をサポートしていない場合、この引数は無効になります。各ドキュメントは、"title" と "text" キーを含む dict であることが推奨されます。

chat_template (`str`, *省略可*) : この変換に使用する Jinja テンプレートです。モデルのテンプレートがデフォルトで使用されるため、通常この引数に何かを渡す必要はありません。

add_generation_prompt (bool, *optional*) : この値が設定されている場合、アシスタントメッセージの開始を示すトークンを含むプロンプトが、整形された出力に追加されます。モデルから応答を生成したい場合に便利です。なお、この引数はチャットテンプレートに渡されるため、この引数が効果を発揮するには、テンプレート側でのサポートが必要です。

continue_final_message (bool or str, *任意*) : これが設定されている場合、チャットは最終メッセージがオープンエンドになるようにフォーマットされ、EOS トークンが付きません。モデルは新しいメッセージを開始するのではなく、このメッセージを続行します。これにより、モデルの応答の一部を「プリフィル」できます。文字列が渡された場合、続行するフィールドのキーとして使用されます（例: "reasoning_content"）。`add_generation_prompt` と同時に使用することはできません。

tokenize (`bool`、デフォルトは`True`) : 出力をトークン化するかを指定します。`False`の場合、出力は文字列になります。

sanitize_control_tokens (`bool`、デフォルトは`False`) : 設定すると、メッセージ、ツール、ドキュメント、または`**kwargs`として渡されるテンプレート変数に含まれる制御トークンは通常のテキストとしてエンコードされ、チャットテンプレート自体が書き込む制御トークンのみがトークンとしてエンコードされます。制御トークンとは、トークナイザーの特殊トークンと、`tokenizer.chat_control_tokens`内の追加トークンのことです。この変数が設定されていない場合、チャットテンプレートのテキストと文字列リテラル中出现する追加トークンから制御トークンが推測されます。サニタイズされるのは完全な制御トークンのみであるため、テンプレートが入力から文字列を結合して制御トークン（`'<|' + message['role'] + '|>'`など）を生成している場合は、それらの文字列は別途検証する必要があります。辞書のキーもサニタイズされません。

padding (`bool`、`str`または[PaddingStrategy](/docs/transformers/v5.23.0/ja/internal/file_utils#transformers.utils.PaddingStrategy)、*省略可能*、デフォルトは`False`) : 返されるシーケンスのパディング戦略を選択します（モデルのパディング側とパディングインデックスに従います）。選択肢は以下の通りです。 - `True`または`'longest'`: バッチ内の最も長いシーケンスまでパディングします（単一のシーケンスのみが提供された場合は、パディングを行いません）。 - `'max_length'`: 引数`max_length`で指定された最大長までパディングします。この引数が提供されていない場合は、モデルが受け入れられる最大入力長までパディングします。 - `False`または`'do_not_pad'`（デフォルト）: パディングを行いません（つまり、長さが異なるシーケンスのバッチを出力できます）。

truncation (`bool`、デフォルトは`False`) : シーケンスを最大長で切り詰めるかどうか。`False`の場合、この引数は無効です。

max_length (`int`, *任意*) : パディングや切り詰めのために使用する最大長（トークン数）。tokenize が `False` の場合は無効です。指定しない場合、デフォルトとしてトークナイザーの `max_length` 属性が使用されます。

return_tensors (`str` または [TensorType](/docs/transformers/v5.23.0/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定した場合、特定のフレームワークのテンソルを返します。tokenize が `False` の場合は効果がありません。許可される値は以下の通りです: - `'pt'`: PyTorch の `torch.Tensor` オブジェクトを返します。 - `'np'`: NumPy の `np.ndarray` オブジェクトを返します。

return_dict (`bool`、デフォルトは`True`) : 名前付き出力を含む辞書を返すかどうか。`False`の場合、この引数は無効になります。

tokenizer_kwargs (`dict[str : Any]`、*任意*)：トークナイザーに渡す追加の kwargs。

return_assistant_tokens_mask (`bool`、デフォルトは`False`) : アシスタントが生成したトークンのマスクを返すかどうかを指定します。アシスタントが生成したトークンに対しては、マスクに1が含まれます。ユーザーおよびシステムのトークンに対しては、マスクに0が含まれます。この機能は、`{% generation %}`キーワードを通じてサポートされているチャットテンプレートのみに利用可能です。

- ****kwargs** : テンプレートレンダラーに渡す追加の kwargs です。チャットテンプレートからアクセスできます。

**戻り値:** `Union[list[int], Dict]`

これまでにトークン化されたチャットを表するトークン ID のリストです。制御トークンも含まれます。この出力は、`generate()` のようなメソッドを介して、または直接モデルに渡す準備ができています。`return_dict` が設定されている場合、代わりにトークナイザーの出力の dict が返されます。

`"role"`キーと`"content"`キーを持つ辞書のリストを、トークンIDのリストに変換します。このメソッドはチャットモデルでの使用を想定しており、変換時に使用するフォーマットおよび制御トークンを決定するために、トークナイザーのchat_template属性を読み取ります。

#### batch_decode[[transformers.PreTrainedTokenizerBase.batch_decode]]

```python
batch_decode(sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2932)

**パラメータ:**

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : トークン化された入力 ID のリスト。`__call__` メソッドを使用して取得できます。

skip_special_tokens (`bool`、*任意*、デフォルトは`False`) : デコーディング時に特殊トークンを削除するかどうか。

clean_up_tokenization_spaces (`bool`、*任意*) : トークナイズのスペースをクリーンアップするかどうか。`None`の場合、`self.clean_up_tokenization_spaces`がデフォルトとして使用されます。

kwargs （追加のキーワード引数、*任意*）：基礎となるモデル固有のデコードメソッドに渡されます。

**戻り値:** `list[str]`

デコードされた文のリスト。

decode を呼び出して、トークン ID のリストのリストを文字列のリストに変換します。

このメソッドは後方互換性のために提供されています。`decode`メソッドは現在、バッチ入力をネイティブで処理するため、`batch_decode`の代わりに`decode`を直接使用できます。

#### clean_up_tokenization[[transformers.PreTrainedTokenizerBase.clean_up_tokenization]]

```python
clean_up_tokenization(text: str)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2203)

与えられたテキスト内のトークン化スペースを整理します。このメソッドは主にリモートコードのサポートのために使用されます。

#### convert_ids_to_tokens[[transformers.PreTrainedTokenizerBase.convert_ids_to_tokens]]

```python
convert_ids_to_tokens(ids: int | list[int], skip_special_tokens: bool = False)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L1498)

**パラメータ:**

ids (`int` または `list[int]`) : トークンに変換するトークン ID（またはトークン ID のリスト）。

skip_special_tokens (`bool`、*任意*、デフォルトは`False`) : デコーディング時に特殊トークンを削除するかどうか。

**戻り値:** `str` または `list[str]`

デコードされたトークン。

トークンまたはトークンのシーケンスの単一のインデックス、またはインデックスのシーケンスを、語彙と追加トークンを使用して変換します。

#### convert_tokens_to_ids[[transformers.PreTrainedTokenizerBase.convert_tokens_to_ids]]

```python
convert_tokens_to_ids(tokens: str | list[str])
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L1482)

**パラメータ:**

tokens (`str` または `list[str]`) : トークン ID に変換する 1 つ以上のトークン。

**戻り値:** `int` または `list[int]`

トークンIDまたはトークンIDのリスト。

語彙を使用して、トークン文字列（またはトークンのシーケンス）を単一の整数 ID（または ID のシーケンス）に変換します。

#### convert_tokens_to_string[[transformers.PreTrainedTokenizerBase.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens: list[str])
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2871)

**パラメータ:**

tokens (`list[str]`) : 文字列に結合するトークン。

**戻り値:** `str`

結合されたトークン。

単一の文字列内のトークンシーケンスを結合します。最もシンプルな方法は`" ".join(tokens)`ですが、同時にサブワードトークン化のアーティファクトを除去したい場合が多いです。

#### decode[[transformers.PreTrainedTokenizerBase.decode]]

```python
decode(token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2884)

**パラメータ:**

token_ids (`Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]`) : トークン化された入力 ID の単一シーケンス、またはシーケンスのバッチ（シーケンスのリスト）。`__call__` メソッドを使用して取得できます。

skip_special_tokens (`bool`、*任意*、デフォルトは`False`) : デコーディング時に特殊トークンを削除するかどうか。

kwargs （追加のキーワード引数、*任意*）：基礎となるモデル固有のデコードメソッドに渡されます。

**戻り値:** `Union[str, list[str]]`

単一のシーケンスに対するデコード済み文字列、またはシーケンスのバッチに対するデコード済み文字列のリスト。

トークナイザーと語彙を使用して、id のシーケンスを文字列に変換します。また、シーケンスのリストを文字列のリストに変換することもできます。特殊トークンの削除や、トークン化スペースのクリーンアップなどのオプションが利用可能です。

`self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))` を実行するのと似ています。

#### encode[[transformers.PreTrainedTokenizerBase.encode]]

```python
encode(text: TextInput | PreTokenizedInput | EncodedInput, text_pair: TextInput | PreTokenizedInput | EncodedInput | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, padding_side: str | None = None, return_tensors: str | TensorType | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2262)

**パラメータ:**

text (`str`、`list[str]` または `list[int]`) : エンコードする最初のシーケンスです。これは、文字列、文字列のリスト（`tokenize` メソッドでトークン化された文字列）、または整数のリスト（`convert_tokens_to_ids` メソッドでトークン化された文字列 ID）のいずれかです。

text_pair (`str`、`list[str]`または`list[int]`、*省略可能*) : エンコード対象の任意の第2のシーケンスです。これは、文字列、文字列のリスト（`tokenize`メソッドによるトークン化済み文字列）、または整数のリスト（`convert_tokens_to_ids`メソッドによるトークン化済み文字列ID）のいずれかです。

add_special_tokens (`bool`、*任意*、デフォルトは`True`) : シーケンスをエンコードする際に特殊トークンを追加するかどうか。これは、入力 ID に自動的に追加されるトークンを定義する基盤となる`PretrainedTokenizerBase.build_inputs_with_special_tokens`関数を使用します。`bos`または`eos`トークンを自動的に追加したい場合に便利です。

padding (`bool`、`str` または [PaddingStrategy](/docs/transformers/v5.23.0/ja/internal/file_utils#transformers.utils.PaddingStrategy)、*optional*、デフォルトは `False`) : パディングの有効化と制御を行います。以下の値を受け取ります:  - `True` または `'longest'`: バッチ内の最長のシーケンスの長さにパディングします（単一のシーケンスのみが提供された場合は、パディングを行いません）。 - `'max_length'`: 引数 `max_length` で指定された最大長、またはその引数が提供されていない場合はモデルが受け入れ可能な最大入力長までパディングします。 - `False` または `'do_not_pad'`（デフォルト）: パディングを行いません（つまり、長さが異なるシーケンスのバッチを出力できます）。

truncation (`bool`、`str` または [TruncationStrategy](/docs/transformers/v5.23.0/ja/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)、*optional*、デフォルトは `False`) : トランケーションを有効化し、制御します。以下の値を受け取ります: - `True` または `'longest_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの中で最も長いシーケンスからトークン単位で1トークンずつ削除します。 - `'only_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの最初のシーケンスのみを切り詰めます。 - `'only_second'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの2番目のシーケンスのみを切り詰めます。 - `False` または `'do_not_truncate'`（デフォルト）: トランケーションを行いません（つまり、モデルが許容する最大入力サイズを超えるシーケンス長を持つバッチを出力する可能性があります）。

max_length (`int`, *optional*) : 切り詰め/パディングパラメータのいずれかによって使用される最大長を制御します。 未設定のまま、または `None` に設定されている場合、切り詰め/パディングパラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。 モデルに特定の最大入力長がない場合（XLNet など）、最大長への切り詰め/パディングは無効になります。

stride (`int`、*optional*、デフォルト値は 0) : `max_length` とともに数値が設定されている場合、`return_overflowing_tokens=True` のときに返されるオーバーフローしたトークンは、切り詰められたシーケンスの末尾の一部のトークンを含み、切り詰められたシーケンスとオーバーフローしたシーケンスの間に重複部分を持たせます。この引数の値は、重複するトークンの数を定義します。

is_split_into_words (`bool`、*任意*、デフォルトは `False`) : 入力がすでに事前トークン化済み（例：単語に分割済み）かどうかを示します。`True` に設定すると、トークナイザーは入力がすでに単語に分割済み（たとえば空白で分割済み）であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。

pad_to_multiple_of (`int`, *optional*) : 設定すると、シーケンスを指定された値の倍数にパディングします。`padding` が有効になっている必要があります。これは、計算能力が `>= 7.5` (Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。

padding_side (`str`, *任意*) : モデルにパディングを適用する側です。['right', 'left'] から選択する必要があります。デフォルト値は、同名のクラス属性から取得されます。

return_tensors (`str` または [TensorType](/docs/transformers/v5.23.0/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定されている場合、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです。 - `'pt'`: PyTorch の `torch.Tensor` オブジェクトを返します。 - `'np'`: Numpy の `np.ndarray` オブジェクトを返します。

- ****kwargs** : `.tokenize()` メソッドに渡されます。

**戻り値:** `list[int]`、`torch.Tensor`、または `np.ndarray`

テキストのトークン化されたIDです。

トークナイザーと語彙を使用して、文字列をid（整数）のシーケンスに変換します。

`self.convert_tokens_to_ids(self.tokenize(text))` を実行するのと同じです。

#### encode_message_with_chat_template[[transformers.PreTrainedTokenizerBase.encode_message_with_chat_template]]

```python
encode_message_with_chat_template(message: dict[str, str], conversation_history: list[dict[str, str]] | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L3259)

**パラメータ:**

message (`dict`) : トークナイズするメッセージを表す、"role" と "content" をキーとする辞書。

conversation_history (`list[dict]`, *任意*) : "role" と "content" キーを持つ dict のリストで、これまでに蓄積されたチャット履歴を表します。メッセージを1件ずつトークナイズする場合は、会話内の以前のメッセージをここに渡す必要があります。

- ****kwargs** : `apply_chat_template` メソッドに渡す追加のキーワード引数。

**戻り値:** `list[int]`

トークン化されたメッセージを表すトークン ID のリスト。

単一のメッセージをトークン化します。このメソッドは`apply_chat_template`の簡便なラッパーであり、メッセージを1つずつトークン化できるようにします。トークン単位のストリーミング処理などに便利です。このメソッドが完璧であるとは保証されていません。一部のモデルでは、単一のメッセージを堅牢にトークン化することが不可能な場合があります。例えば、チャットテンプレートが各メッセージの後にトークンを追加する一方で、チャット全体にプレフィックスを追加する場合、チャット開始トークンとメッセージ開始トークンを区別することができません。このような場合、このメソッドは正しいトークン化を見つけるために最善を尽くしますが、完璧ではない可能性があります。**注:** このメソッドは`add_generation_prompt`をサポートしていません。生成プロンプトを追加する場合は、会話のトークン化後に別途行ってください。

#### from_pretrained[[transformers.PreTrainedTokenizerBase.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, *init_inputs, cache_dir: str | os.PathLike | None = None, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', trust_remote_code = False, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L1514)

**パラメータ:**

pretrained_model_name_or_path (`str` または `os.PathLike`) : 以下のいずれかです。 - huggingface.co のモデルリポジトリにホストされている事前定義されたトークナイザーの *model id* を示す文字列。 - トークナイザーに必要な語彙ファイルを含む *ディレクトリ* へのパス。例えば、[save_pretrained()](/docs/transformers/v5.23.0/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained) メソッドを使用して保存されたものなど。例: `./my_model_directory/`。 - (**非推奨**、すべての派生クラスに適用されるわけではありません) 単一の保存済み語彙ファイルへのパス（Bert や XLNet のように、トークナイザーが単一の語彙ファイルのみを必要とする場合のみ）。例: `./my_model_directory/vocab.txt`。

cache_dir (`str` または `os.PathLike`、*省略可*) : 標準のキャッシュを使用しない場合、ダウンロードされた事前定義されたトークナイザの語彙ファイルをキャッシュするディレクトリのパス。

force_download (`bool`、*任意*、デフォルトは`False`) : 語彙ファイルの(再)ダウンロードを強制し、キャッシュされたバージョンが存在する場合にそれを上書きするかどうか。

proxies (`dict[str, str]`, *省略可*) : プロトコルまたはエンドポイントごとに使用するプロキシサーバーの辞書です。例: `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`。各リクエストでこれらのプロキシが使用されます。

token (`str` または *bool*、*省略可能*) : リモートファイルの HTTP ベアラ認証に使用するトークン。`True` の場合、`hf auth login` を実行した際に生成されたトークン（`~/.huggingface` に保存）が使用されます。

local_files_only (`bool`、*任意*、デフォルトは `False`) : ローカルファイルのみを使用し、ファイルのダウンロードを試みないかどうかを指定します。

revision (`str`、*任意*、デフォルトは `"main"`) : 使用する特定のモデルのバージョンです。huggingface.co ではモデルやその他の成果物を保存するために git ベースのシステムを使用しているため、`revision` には git で許可されている任意の識別子（ブランチ名、タグ名、コミット ID など）を指定できます。

subfolder (`str`、*任意*) : 関連するファイルが huggingface.co 上のモデルリポジトリ内のサブフォルダに配置されている場合（例: facebook/rag-token-base）、ここで指定します。

inputs （追加の位置引数、*任意*）: Tokenizerの`__init__`メソッドに渡されます。

trust_remote_code (`bool`、*任意*、デフォルトは `False`) : Hub 上で独自の modeling ファイルに定義されたカスタムモデルを許可するかどうか。このオプションは、`True` に設定すると Hub 上のコードがローカルマシンで実行されるため、信頼できるリポジトリで、かつコードを確認済みの場合にのみ設定すべきです。

kwargs （追加のキーワード引数、*任意*）: Tokenizer の `__init__` メソッドに渡されます。`bos_token`、`eos_token`、`unk_token`、`sep_token`、`pad_token`、`cls_token`、`mask_token`、`extra_special_tokens` などの特殊トークンを設定するために使用できます。詳細は `__init__` のパラメータを参照してください。

[PreTrainedTokenizerBase](/docs/transformers/v5.23.0/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase)（またはその派生クラス）を、事前定義されたトークナイザーからインスタンス化します。

プライベートモデルを使用する場合は、`token=True` を渡す必要があります。

例:

```python
# We can't instantiate directly the base class *PreTrainedTokenizerBase* so let's show our examples on a derived class: BertTokenizer
# Download vocabulary from huggingface.co and cache.
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")

# Download vocabulary from huggingface.co (user-uploaded) and cache.
tokenizer = BertTokenizer.from_pretrained("dbmdz/bert-base-german-cased")

# If vocabulary files are in a directory (e.g. tokenizer was saved using *save_pretrained('./test/saved_model/')*)
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/")

# If the tokenizer uses a single vocabulary file, you can point directly to this file
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/my_vocab.txt")

# You can link tokens to special vocabulary when instantiating
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased", unk_token="<unk>")
# You should be sure '<unk>' is in the vocabulary when doing that.
# Otherwise use tokenizer.add_special_tokens({'unk_token': '<unk>'}) instead)
assert tokenizer.unk_token == "<unk>"
```

#### get_chat_template[[transformers.PreTrainedTokenizerBase.get_chat_template]]

```python
get_chat_template(chat_template: str | None = None, tools: list[dict] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L3319)

**パラメータ:**

chat_template (`str`, *任意*) : この変換に使用する Jinja テンプレート、またはテンプレートの名前です。デフォルトでモデルのテンプレートが使用されるため、通常この引数に何かを渡す必要はありません。

tools (`list[Dict]`、*任意*) : モデルからアクセス可能なツール(呼び出し可能な関数)のリストです。テンプレートが関数呼び出しをサポートしていない場合、この引数は無効になります。各ツールは、ツールの名前、説明、引数の型を指定した JSON Schema として渡す必要があります。詳細は、[チャットテンプレートガイド](https://huggingface.co/docs/transformers/main/en/chat_templating#automated-function-conversion-for-tool-use)を参照してください。

**戻り値:** `str`

チャットテンプレートの文字列。

チャットメッセージのトークン化に使用されるチャットテンプレートの文字列を取得します。このテンプレートは`apply_chat_template`メソッドによって内部で使用されるほか、生成の追跡をより適切に行うために、モデルのチャットテンプレートを外部から取得する際にも使用できます。

#### get_response_parser[[transformers.PreTrainedTokenizerBase.get_response_parser]]

```python
get_response_parser(response_template: dict | None = None, prefix: str | list[int] | np.ndarray | torch.Tensor | None = None, tools: list[dict | Callable] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L3516)

ストリーミングレスポンスを逐次的にパースするためのステートフルな`ResponseParser`を返します。上書きされない限り、トークナイザーの`response_template`属性を使用します。

`prefix`（文字列、トークン ID のリスト、または 1 次元テンソル）は必須です。ストリームは、チャットプロンプトのコンテキストが示す状態（仕様の `start_anchor` 以降を右側から切り捨てた状態）で初期化されるため、`stream.feed()` 経由で供給される生成チャンクは、チャットテンプレートがアシスタントターン用のコンテンツ（例: `<think>\n`）を出力し、モデルがそこから継続する場合でも正しく分類されます。省略すると例外が発生します。ストリームが完全にクリーンなアシスタントターンから始まる場合は、`prefix=""` を渡してこの機能を無効にしてください。

`tools` (`list[Union[Dict, Callable]]`、*省略可*): モデルが利用可能なツール。`apply_chat_template` が受け入れるのと同じ形式です。設定すると、各リージョンがクローズするたびに、呼び出されたツールの JSON スキーマを使用してツール呼び出しの引数がキャストされるため、ストリーミングの `region_close` イベントには型付きの引数が含まれます。

#### get_special_tokens_mask[[transformers.PreTrainedTokenizerBase.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list[int], token_ids_1: list[int] | None = None, already_has_special_tokens: bool = False)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L1337)

**パラメータ:**

token_ids_0 : (すでにフォーマット済みの可能性がある) シーケンスの ID のリスト。

token_ids_1 `already_has_special_tokens=True` の場合は使用されません。その場合は None でなければなりません。

already_has_special_tokens : シーケンスがすでに特殊トークンでフォーマットされているかどうか。

**戻り値:** 範囲 [0, 1] 内の整数のリスト

特殊トークンには1、シーケンストークンには0を指定します。

特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。

高速なトークナイザーでは、データコラテーターは`already_has_special_tokens=True`を指定してこの関数を呼び出し、すでに整形済みのシーケンスに対してマスクを構築します。その場合、`all_special_ids`への所属を確認することによってマスクを計算します。

#### get_vocab[[transformers.PreTrainedTokenizerBase.get_vocab]]

```python
get_vocab()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L1470)

**戻り値:** `dict[str, int]`

語彙。

トークンからインデックスへの辞書として語彙を返します。

`token`が語彙に含まれている場合、`tokenizer.get_vocab()[token]`は`tokenizer.convert_tokens_to_ids(token)`と同等です。

#### pad[[transformers.PreTrainedTokenizerBase.pad]]

```python
pad(encoded_inputs: BatchEncoding | list[BatchEncoding] | dict[str, EncodedInput] | dict[str, list[EncodedInput]] | list[dict[str, EncodedInput]], padding: bool | str | PaddingStrategy = True, max_length: int | None = None, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_attention_mask: bool | None = None, return_tensors: str | TensorType | None = None, verbose: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2599)

**パラメータ:**

encoded_inputs ([BatchEncoding](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.BatchEncoding)、[BatchEncoding](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.BatchEncoding) のリスト、`dict[str, list[int]]`、`dict[str, list[list[int]]` または `list[dict[str, list[int]]]`) : トークン化された入力です。1 つの入力 ([BatchEncoding](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.BatchEncoding) または `dict[str, list[int]]`) またはトークン化された入力のバッチ ([BatchEncoding](/docs/transformers/v5.23.0/ja/main_classes/tokenizer#transformers.BatchEncoding) のリスト、*dict[str, list[list[int]]]* または *list[dict[str, list[int]]]*) を表すことができます。そのため、前処理時だけでなく、PyTorch の Dataloader の collate 関数としても使用できます。 `list[int]` の代わりにテンソル (NumPy 配列や PyTorch テンソル) を持つ場合があり、戻り値の型については上記の注記を参照してください。

padding (`bool`、`str` または [PaddingStrategy](/docs/transformers/v5.23.0/ja/internal/file_utils#transformers.utils.PaddingStrategy)、*optional*、デフォルトは `True`) : 返されるシーケンスのパディング戦略を選択します（モデルのパディング側とパディングインデックスに従います）。選択肢は以下の通りです。 - `True` または `'longest'`（デフォルト）: バッチ内の最も長いシーケンスの長さにパディングします（単一のシーケンスのみが提供された場合は、パディングしません）。 - `'max_length'`: 引数 `max_length` で指定された最大長、またはその引数が提供されていない場合はモデルが受け入れられる最大入力長までパディングします。 - `False` または `'do_not_pad'`: パディングなし（つまり、長さが異なるシーケンスのバッチを出力できます）。

max_length (`int`, *optional*) : 返されるリストの最大長、および必要に応じてパディング長（上記を参照）。

pad_to_multiple_of (`int`, *optional*) : 設定すると、シーケンスを指定された値の倍数にパディングします。これは、計算能力が `>= 7.5` (Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。

padding_side (`str`, *任意*) : モデルにパディングを適用する側です。['right', 'left'] から選択する必要があります。デフォルト値は、同名のクラス属性から取得されます。

return_attention_mask (`bool`、*省略可*) : アテンションマスクを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、アテンションマスクを返します。  [アテンションマスクとは?](../glossary#attention-mask)

return_tensors (`str` または [TensorType](/docs/transformers/v5.23.0/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定されている場合、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです。 - `'pt'`: PyTorch の `torch.Tensor` オブジェクトを返します。 - `'np'`: Numpy の `np.ndarray` オブジェクトを返します。

verbose (`bool`、*任意*、デフォルトは `True`) : 詳細な情報や警告を表示するかどうか。

単一のエンコード済み入力、またはエンコード済み入力のバッチを、事前に定義された長さまたはバッチ内の最大シーケンス長までパディングします。

Padding side (left/right)のpaddingトークンIDは、tokenizerレベルで定義されています（`self.padding_side`、`self.pad_token_id`、`self.pad_token_type_id`）。

高速トークナイザを使用する場合、`__call__` メソッドを使用する方が、テキストをエンコードするメソッドを呼び出した後に `pad` メソッドを呼び出してパディング付きエンコーディングを取得するよりも高速です。

`encoded_inputs` に渡された値が NumPy 配列の辞書、または PyTorch テンソルの場合は、`return_tensors` で別のテンソル型を指定しない限り、結果も同じ型になります。ただし、PyTorch テンソルの場合は、テンソルが配置されていた特定のデバイス情報が失われます。

#### parse_response[[transformers.PreTrainedTokenizerBase.parse_response]]

```python
parse_response(response: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensor, schema: dict | None = None, prefix: str | list[int] | list[str] | list[list[int]] | np.ndarray | torch.Tensor | None = None, tools: list[dict | Callable] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L3431)

**パラメータ:**

response (`str`、トークン ID、1 次元/2 次元テンソル、またはこれらのリスト) : モデルによって生成された出力。デコードされたテキストまたはトークン ID を、単一のシーケンス (`str` / `list[int]` / 1 次元配列 / 1 次元テンソル) として、またはバッチ (`list[str]` / `list[list[int]]` / 2 次元配列 / 2 次元テンソル) として指定します。なお、ここにはモデルの出力のみを含める必要があり、それ以前のプロンプトテキストは含めません (プロンプトテキストは `prefix` に指定します)。

schema (`dict`、*任意*) : 期待される出力形式とパース方法を示すレスポンステンプレートです。指定しない場合、トークナイザーの`response_template`属性が使用されます。

prefix (`str`、トークン ID、1 次元/2 次元テンソル、またはこれらのリスト) : 生成の前にあったプロンプトです。多くのチャットテンプレートはメッセージの一部を事前に書き込むため、正しくパースするにはプロンプトを確認する必要があります。`response`がバッチ化されている場合は、単一のプレフィックス（すべてのアイテムにブロードキャストされる）またはアイテムごとのプレフィックスを渡します。

tools (`list[Union[Dict, Callable]]`、*省略可*) : モデルが利用可能なツールを、`apply_chat_template` が受け取るのと同じ形式で指定します。指定すると、ツール呼び出しの引数は、呼び出されるツールの JSON スキーマに基づいてキャストされます。例えば、整数パラメータの場合は `"7"` が `7` に変換されますが、文字列パラメータの場合は `"7"` のままです。

**戻り値:**

単一のシーケンスに対する解析済みメッセージの`dict`、またはバッチに対するそのようなdictの`list`。

モデルからテキストを生成して作成された出力文字列を、解析済みのメッセージ辞書に変換します。このメソッドはチャットモデルでの使用を想定しており、`schema` 引数が直接渡されない限り、トークナイザーの `response_template` 属性を読み取って解析を制御します。

単一のシーケンスまたはバッチを受け取ります。単一のシーケンス（文字列、またはトークン ID の 1 次元シーケンス）は、単一の解析済みメッセージ `dict` を返します。一方、バッチ（文字列のリスト、トークン ID シーケンスのリスト、または 2 次元テンソル / 配列）は、各アイテムに対応する解析済みメッセージ dict の `list` を返します。

#### push_to_hub[[transformers.PreTrainedTokenizerBase.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, commit_description: str | None = None, private: bool | None = None, token: bool | str | None = None, revision: str | None = None, create_pr: bool = False, max_shard_size: int | str | None = '50GB', tags: list[str] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/utils/hub.py#L822)

**パラメータ:**

repo_id (`str`) : トークナイザーをプッシュするリポジトリの名前です。特定の組織にプッシュする場合は、組織名を含む必要があります。

commit_message (`str`, *任意*) : push 時にコミットするメッセージ。デフォルトは `"Upload tokenizer"` です。

commit_description (`str`, *任意*) : 作成されるコミットの説明

private (`bool`, *optional*) : リポジトリを非公開にするかどうか。`None`（デフォルト）の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。

token (`bool` または `str`、*省略可*) : リモートファイルの HTTP ベアラ認証に使用するトークン。`True`（デフォルト）の場合、`hf auth login` を実行した際に生成されたトークン（`~/.huggingface` に保存）が使用されます。

revision (`str`, *任意*) : アップロードしたファイルをプッシュするブランチ。

create_pr (`bool`, *任意*, デフォルトは `False`) : アップロードしたファイルで PR を作成するか、直接コミットするかどうかを指定します。

max_shard_size (`int` または `str`、*任意*、デフォルトは `"50GB"`) : モデルにのみ適用されます。シャード化される前のチェックポイントの最大サイズ。シャード化されたチェックポイントは、それぞれがこのサイズ未満になります。文字列で指定する場合は、数字の後に単位（`"5MB"` など）を続ける必要があります。

tags (`list[str]`、*任意*) : Hub にプッシュするタグのリスト。

🤗 Model Hub にトークナイザーのファイルをアップロードします。

例:

```python
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")

# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")

# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")
```

#### register_for_auto_class[[transformers.PreTrainedTokenizerBase.register_for_auto_class]]

```python
register_for_auto_class(auto_class = 'AutoTokenizer')
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L3000)

**パラメータ:**

auto_class (`str` または `type`、*省略可能*、デフォルトは `"AutoTokenizer"`) : この新しいトークナイザーを登録する auto クラス。

このクラスを指定された auto クラスに登録します。ライブラリ内のものはすでに`AutoTokenizer`にマッピングされているため、このメソッドはカスタムトークナイザーでのみ使用すべきです。

#### save_chat_templates[[transformers.PreTrainedTokenizerBase.save_chat_templates]]

```python
save_chat_templates(save_directory: str | os.PathLike, tokenizer_config: dict, filename_prefix: str | None, save_jinja_files: bool)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L3373)

新しい形式を使用している場合は、チャットテンプレートを保存ディレクトリに書き出し、tokenizer の設定に存在する場合は削除します。レガシー形式を使用している場合は、ファイルを書き出さず、代わりにテンプレートを正しい形式で tokenizer の設定に書き出します。

#### save_pretrained[[transformers.PreTrainedTokenizerBase.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, legacy_format: bool | None = None, filename_prefix: str | None = None, push_to_hub: bool = False, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2005)

**パラメータ:**

save_directory (`str` または `os.PathLike`) : トークナイザーを保存するディレクトリのパス。

legacy_format (`bool`, *任意*) : fast tokenizer の場合にのみ適用されます。未設定（デフォルト）の場合、legacy 形式が存在する場合（つまり、tokenizer 固有の語彙と、独立した added_tokens ファイルを持つ形式）には legacy 形式でも保存し、統合 JSON 形式で tokenizer を保存します。 `False` の場合、統合 JSON 形式でのみ tokenizer を保存します。この形式は "slow" tokenizer（*tokenizers* ライブラリによって動作しないもの）と互換性がなく、対応する "slow" tokenizer で読み込むことができません。 `True` の場合、legacy 形式で tokenizer を保存します。"slow" tokenizer が存在しない場合、value error が発生します。

filename_prefix (`str`, *任意*) : トークナイザーが保存するファイル名に付加するプレフィックス。

push_to_hub (`bool`、*任意*、デフォルトは`False`) : モデルを保存した後、Hugging Face モデルハブにプッシュするかどうかを指定します。プッシュ先のリポジトリは`repo_id`で指定できます（指定しない場合、`save_directory`の名前があなたのネームスペース内でデフォルトとして使用されます）。

kwargs (`dict[str, Any]`、*省略可*) : [push_to_hub()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub) メソッドに渡される追加のキーワード引数。

**戻り値:** `str` のタプル

保存されたファイル。

トークナイザーの完全な状態を保存します。

このメソッドにより、`~tokenization_utils_base.PreTrainedTokenizer.from_pretrained` クラスメソッドを使用して完全なトークナイザを再読み込みできることを確認できます。

Warning,None インスタンス化後にトークナイザーに行った変更（作成後に`tokenizer.do_lower_case`を変更した場合など）は保存されません。

#### save_vocabulary[[transformers.PreTrainedTokenizerBase.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2224)

**パラメータ:**

save_directory (`str`) : 語彙を保存するディレクトリ。

filename_prefix (`str`, *任意*) : 保存されるファイルの名前に追加する任意のプレフィックス。

**戻り値:** `tuple(str)`

保存されたファイルへのパス。

tokenizerの語彙のみを保存します（語彙 + 追加トークン）。

このメソッドでは、tokenizer の設定や特殊トークンのマッピングは保存されません。tokenizer の状態全体を保存するには、`_save_pretrained()` を使用してください。

#### tokenize[[transformers.PreTrainedTokenizerBase.tokenize]]

```python
tokenize(text: str, pair: str | None = None, add_special_tokens: bool = False, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L2242)

**パラメータ:**

text (`str`) : エンコード対象のシーケンス。

pair (`str`, *任意*) : 最初のシーケンスとともにエンコードされる2番目のシーケンス。

add_special_tokens (`bool`、*任意*、デフォルトは`False`) : 対応するモデルに関連する特殊トークンを追加するかどうか。

kwargs （追加のキーワード引数、*任意*）：基礎となるモデル固有のエンコードメソッドに渡されます。詳細は [__call__()](/docs/transformers/v5.23.0/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。

**戻り値:** `list[str]`

トークンのリスト。

文字列をトークンの列に変換し、不明なトークンは`unk_token`に置き換えます。

## Enum と namedtuple[[transformers.tokenization_utils_base.TruncationStrategy]]

#### transformers.tokenization_utils_base.TruncationStrategy[[transformers.tokenization_utils_base.TruncationStrategy]]

```python
transformers.tokenization_utils_base.TruncationStrategy(value, names = None, module = None, qualname = None, type = None, start = 1, boundary = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L159)

[PreTrainedTokenizerBase.__call__()](/docs/transformers/v5.23.0/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) の `truncation` 引数に指定可能な値。IDE でのタブ補完に便利です。

#### transformers.CharSpan[[transformers.CharSpan]]

```python
transformers.CharSpan(start: ForwardRef('int'), end: ForwardRef('int'))
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L171)

**パラメータ:**

start (`int`) : 元の文字列における最初の文字のインデックス。

end (`int`) : 元の文字列の最後の文字の直後の文字のインデックス。

元の文字列における文字スパン。

#### transformers.TokenSpan[[transformers.TokenSpan]]

```python
transformers.TokenSpan(start: ForwardRef('int'), end: ForwardRef('int'))
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/tokenization_utils_base.py#L184)

**パラメータ:**

start (`int`) : スパン内の最初のトークンのインデックス。

end (`int`) : スパン内の最後のトークンの直後のトークンのインデックス。

エンコードされた文字列内のトークンスパン(トークンのリスト)。

