Transformers documentation
トークナイザー
トークナイザー
トークナイザーは、モデルへの入力準備を担当します。このライブラリには、すべてのモデル用のトークナイザーが含まれています。ほとんどのトークナイザーは、完全な Python 実装と、Rust ライブラリ 🤗 Tokenizers に基づく「Fast」実装の2つのバリエーションで利用できます。「Fast」実装により、以下が可能になります:
- 特にバッチトークナイゼーションを行う場合
- 元の文字列(文字および単語)とトークン空間(例:特定の文字を含むトークンのインデックス、または特定のトークンに対応する文字のスパン)の間をマッピングするための追加のメソッド。
ベースクラスである PreTrainedTokenizer と PreTrainedTokenizerFast は、文字列入力をモデル入力にエンコードするための共通メソッド(下記を参照)を実装しています。また、ローカルファイルやディレクトリ、またはライブラリが提供する事前学習済みトークナイザー(HuggingFace の AWS S3 リポジトリからダウンロード)から、Python 製および「Fast」トークナイザーをインスタンス化・保存する機能も備えています。両クラスとも、共通メソッドを含む PreTrainedTokenizerBase に依存しています。
したがって、PreTrainedTokenizer と PreTrainedTokenizerFast は、すべてのトークナイザーを使用するための主要なメソッドを実装しています。
- トークナイズ(文字列をサブワードのトークン文字列に分割すること)、トークン文字列をIDに変換することおよびその逆変換、そしてエンコード/デコード(つまり、トークナイズして整数に変換すること)。
- ベースとなる構造(BPE、SentencePiece など)に依存しない方法で、語彙に新しいトークンを追加する。
- 特殊トークン(マスク、文頭トークンなど)の管理:それらを追加し、tokenizer の属性に割り当てて簡単にアクセスできるようにし、トークン化の際に分割されないことを確認します。
BatchEncoding は、PreTrainedTokenizerBase のエンコードメソッド(__call__、encode_plus および batch_encode_plus)の出力を保持し、Python の辞書から派生しています。tokenizer が純粋な Python 製の場合、このクラスは標準的な Python の辞書と同様に動作し、これらのメソッドによって計算されたさまざまなモデル入力(input_ids、attention_mask など)を保持します。tokenizer が「Fast」tokenizer(つまり HuggingFace の tokenizers library をベースにしているもの)の場合、このクラスはさらに、元の文字列(文字や単語)とトークンスペース(例:特定の文字を含むトークンのインデックスを取得したり、特定のトークンに対応する文字の範囲を取得したりする)の間のマッピングに使用できる、いくつかの高度なアライメントメソッドを提供します。
マルチモーダル トークナイザ
それ以外に、各トークナイザーは「マルチモーダル」なトークナイザーとして動作し、トークナイザーの属性として関連するすべての特殊トークンを保持します。これにより、より簡単にアクセスできるようになります。例えば、LLaVAのようなビジョン言語モデルからトークナイザーを読み込んだ場合、プレースホルダーとして使用される特殊な画像トークンを取得するためにtokenizer.image_token_idにアクセスできます。
任意のタイプのtokenizerに追加の特殊トークンを有効にするには、以下の行を追加してtokenizerを保存する必要があります。追加の特殊トークンはモダリティに関連するものである必要はなく、モデルが頻繁にアクセスする必要がある任意のものです。以下のコードでは、output_dirのtokenizerは、3つの追加の特殊トークンに直接アクセスできるようになります。
vision_tokenizer = AutoTokenizer.from_pretrained(
"llava-hf/llava-1.5-7b-hf",
extra_special_tokens={"image_token": "<image>", "boi_token": "<image_start>", "eoi_token": "<image_end>"}
)
print(vision_tokenizer.image_token, vision_tokenizer.image_token_id)
("<image>", 32000)PreTrainedTokenizer
class transformers.PythonBackend
< source >( **kwargs )
パラメータ
- 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(), this will be set to the value stored for the associated model inmax_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]、任意) — モデルの forward pass が受け入れる入力のリスト("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', '>']を返します。
すべてのスロートークナイザーの基底クラス。
PreTrainedTokenizerBaseを継承します。
トークン化および特殊トークンに関するすべての共有メソッド、事前学習済みトークナイザーのダウンロード/キャッシュ/読み込み、および語彙へのトークン追加に関するメソッドを処理します。
このクラスは、すべてのトークナイザーに対して追加トークンを統一的に含めるため、BPE や sentencepiece など、基盤となる辞書構造固有の語彙拡張メソッドを個別に処理する必要がありません。
クラス属性(派生クラスによって上書きされる)
- 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__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
パラメータ
- 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, 省略可, デフォルトはFalse) — パディングの有効化と制御を行います。以下の値を受け入れます:Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。Falseまたは'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
- truncation (
bool,strまたは TruncationStrategy, 省略可能, デフォルトはFalse) — 切り詰めを有効にし、制御します。以下の値を受け取ります:Trueまたは'longest_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。この場合、トークン単位で切り詰めが行われ、ペアのシーケンス(またはペアのバッチ)が提供されている場合は、ペアの中で最も長いシーケンスから1トークンずつ削除します。'only_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れることのできる最大入力長まで切り詰めます。この設定では、ペアのシーケンス(またはペアのバッチ)が提供された場合のみ、ペアの最初のシーケンスだけが切り詰められます。'only_second': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長まで切り詰めます。このモードでは、シーケンスのペア(またはペアのバッチ)が提供された場合のみ、ペアの2番目のシーケンスが切り詰められます。Falseまたは'do_not_truncate'(デフォルト): トランケーションを行いません(つまり、モデルが許容する最大入力サイズを超えるシーケンス長を持つバッチを出力する可能性があります)。
- max_length (
int, 省略可能) — truncation/padding パラメータのいずれかによって使用される最大長を制御します。未設定のまま、または
Noneに設定されている場合、truncation/padding パラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。モデルに特定の最大入力長がない場合(XLNet など)、最大長への truncation/padding は無効になります。 - stride (
int、省略可能、デフォルトは 0) —max_lengthとともに数値が設定されている場合、return_overflowing_tokens=Trueで返されるオーバーフローしたトークンは、切り詰められたシーケンスの末尾の一部のトークンを含み、切り詰められたシーケンスとオーバーフローしたシーケンスの間に重複を確保します。この引数の値は、重複するトークンの数を定義します。 - is_split_into_words (
bool、任意、デフォルトはFalse) — 入力がすでに事前トークン化済み(例:単語に分割済み)かどうかを指定します。Trueに設定すると、トークナイザーは入力がすでに単語に分割済み(たとえば空白で分割済み)であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。 - pad_to_multiple_of (
int, 任意) — 設定すると、指定された値の倍数にシーケンスをパディングします。paddingが有効になっている必要があります。 これは、計算能力が>= 7.5(Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。 - padding_side (
str, 省略可) — モデルにパディングを適用する側です。[‘right’, ‘left’] のいずれかを選択してください。 デフォルト値は、同名のクラス属性から取得されます。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです:'pt': PyTorchのtorch.Tensorオブジェクトを返します。'np': Numpy のnp.ndarrayオブジェクトを返します。
- return_token_type_ids (
bool, 省略可能) — トークンタイプIDを返すかどうか。デフォルトのままにすると、特定のトークナイザーのデフォルトに従ってトークンタイプIDを返します。これはreturn_outputs属性で定義されます。 - return_attention_mask (
bool, 省略可能) — attention mask を返すかどうか。デフォルトのままにすると、return_outputs属性によって定義される、特定の tokenizer のデフォルトに従って 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 を継承する高速トークナイザーでのみ利用可能です。Python のトークナイザーを使用している場合、このメソッドは
NotImplementedErrorを送出します。 - return_length (
bool、任意、デフォルトはFalse) — エンコードされた入力の長さを返すかどうかを指定します。 - verbose (
bool、任意、デフォルトはTrue) — より多くの情報や警告を表示するかどうかを指定します。 - **kwargs —
self.tokenize()メソッドに渡されます
戻り値
以下のフィールドを持つBatchEncoding:
-
input_ids — モデルに与えるトークン ID のリスト。
-
token_type_ids — モデルに渡すトークンタイプIDのリスト(
return_token_type_ids=Trueの場合、またはself.model_input_namesに“token_type_ids”が含まれている場合)。 -
attention_mask — モデルがどのトークンに注意を向けるべきかを指定するインデックスのリスト(
return_attention_mask=Trueの場合、またはself.model_input_namesに “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_tokens
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
パラメータ
- 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"に設定し、入力のはじめの部分にのみプレフィックスを付与するようにします: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 )
例:
# 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))add_special_tokens
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
パラメータ
- 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() メソッドを使用してください。
add_special_tokens を使用すると、特別なトークンを以下の複数の方法で使用できます。
skip_special_tokens = Trueを使用すると、デコード時に特殊トークンをスキップできます。- 特殊トークンは、
AddedTokensと同様に、トークナイザーによって慎重に処理されます(分割されることはありません)。 tokenizer.cls_tokenなどの tokenizer クラスの属性を使用して、特殊トークンに簡単に参照できます。これにより、モデル非依存の学習およびファインチューニングスクリプトの開発が容易になります。
可能な限り、提供される事前学習済みモデルには特別なトークンがすでに登録されています(例えば、BertTokenizer の cls_token は '[CLS]' として、XLM のものは '</s>' として登録されています)。
例:
# 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>"apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
パラメータ
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — “role”キーと“content”キーを持つ辞書のリストで、これまでに蓄積されたチャット履歴を表します。
- tools (
list[Union[Dict, Callable]]、省略可) — モデルからアクセス可能なツール(呼び出し可能な関数)のリストです。テンプレートが関数呼び出しをサポートしていない場合、この引数は無効になります。各ツールは、ツールの名前、説明、引数の型を指定した JSON Schema として渡す必要があります。詳細については、ツール使用ガイドを参照してください。 - documents (
list[dict[str, str]], 任意) — モデルが RAG(検索拡張生成)を実行している場合にアクセス可能な文書を表する dict のリストです。テンプレートが RAG をサポートしていない場合、この引数は無効になります。各文書は、“title” と “text” キーを含む dict であることが推奨されます。 - chat_template (
str、省略可) — この変換に使用する Jinja テンプレートです。モデルのテンプレートがデフォルトで使用されるため、この引数に何かを渡す必要は通常ありません。 - add_generation_prompt (bool, 任意) — この値が設定されている場合、アシスタントメッセージの開始を示すトークンを含むプロンプトが、整形された出力の末尾に追加されます。これは、モデルから応答を生成したい場合に便利です。 なお、この引数はチャットテンプレートに渡されるため、この引数が効果を発揮するには、テンプレート側でのサポートが必要です。
- 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, 省略可, デフォルトはFalse) — 返されるシーケンスのパディング戦略(モデルのパディング側およびパディングインデックスに従う)として、以下から選択します:Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。Falseまたは'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
- truncation (
bool、デフォルトはFalse) — 最大長でシーケンスを切り詰めるかどうか。tokenize がFalseの場合は無効です。 - max_length (
int, 省略可) — パディングや切り詰めのために使用する最大長(トークン数)。tokenize がFalseの場合は無効です。指定しない場合、デフォルトとしてトークナイザーのmax_length属性が使用されます。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。tokenize がFalse. 指定可能な値は次のとおりです:'pt': PyTorchのtorch.Tensorオブジェクトを返します。'np': NumPyのnp.ndarrayオブジェクトを返します。
- return_dict (
bool、デフォルトはTrue) — 名前付き出力を含む辞書を返すかどうかを指定します。Falseの場合は、この引数は無効になります。 - tokenizer_kwargs (
dict[str -- Any]、省略可): トークナイザーに渡す追加のキーワード引数。 - 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
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
パラメータ
- 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を直接使用できます。
decode
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
パラメータ
- 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]]
単一のシーケンスに対するデコード済み文字列、またはシーケンスのバッチに対するデコード済み文字列のリスト。
tokenizerとvocabularyを使用して、idのシーケンスを文字列に変換します。また、シーケンスのリストを文字列のリストに変換することもできます。特殊トークンの削除や、トークン化スペースのクリーンアップなどのオプションが利用可能です。
self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)) を実行するのと似ています。
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
パラメータ
- 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, 省略可, デフォルトはFalse) — パディングの有効化と制御を行います。以下の値を受け入れます:Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。Falseまたは'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
- truncation (
bool,strまたは TruncationStrategy, 省略可能, デフォルトはFalse) — 切り詰めを有効にし、制御します。以下の値を受け取ります:Trueまたは'longest_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。この場合、トークン単位で切り詰めが行われ、ペアのシーケンス(またはペアのバッチ)が提供されている場合は、ペアの中で最も長いシーケンスから1トークンずつ削除します。'only_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れることのできる最大入力長まで切り詰めます。この設定では、ペアのシーケンス(またはペアのバッチ)が提供された場合のみ、ペアの最初のシーケンスだけが切り詰められます。'only_second': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長まで切り詰めます。このモードでは、シーケンスのペア(またはペアのバッチ)が提供された場合のみ、ペアの2番目のシーケンスが切り詰められます。Falseまたは'do_not_truncate'(デフォルト): トランケーションを行いません(つまり、モデルが許容する最大入力サイズを超えるシーケンス長を持つバッチを出力する可能性があります)。
- max_length (
int, 省略可能) — truncation/padding パラメータのいずれかによって使用される最大長を制御します。未設定のまま、または
Noneに設定されている場合、truncation/padding パラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。モデルに特定の最大入力長がない場合(XLNet など)、最大長への truncation/padding は無効になります。 - stride (
int、省略可能、デフォルトは 0) —max_lengthとともに数値が設定されている場合、return_overflowing_tokens=Trueで返されるオーバーフローしたトークンは、切り詰められたシーケンスの末尾の一部のトークンを含み、切り詰められたシーケンスとオーバーフローしたシーケンスの間に重複を確保します。この引数の値は、重複するトークンの数を定義します。 - is_split_into_words (
bool、任意、デフォルトはFalse) — 入力がすでに事前トークン化済み(例:単語に分割済み)かどうかを指定します。Trueに設定すると、トークナイザーは入力がすでに単語に分割済み(たとえば空白で分割済み)であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。 - pad_to_multiple_of (
int, 任意) — 設定すると、指定された値の倍数にシーケンスをパディングします。paddingが有効になっている必要があります。 これは、計算能力が>= 7.5(Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。 - padding_side (
str, 省略可) — モデルにパディングを適用する側です。[‘right’, ‘left’] のいずれかを選択してください。 デフォルト値は、同名のクラス属性から取得されます。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、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)) を実行するのと同じです。
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
パラメータ
- repo_id (
str) — トークナイザーをプッシュするリポジトリの名前です。特定の組織にプッシュする場合は、組織名を含む必要があります。 - commit_message (
str, 任意) — プッシュ時にコミットするメッセージ。デフォルトは"Upload tokenizer"です。 - commit_description (
str, 省略可) — 作成されるコミットの説明 - private (
bool、省略可) — リポジトリを非公開にするかどうか。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 にトークナイザーのファイルをアップロードします。
例:
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")build_inputs_with_special_tokens
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = None ) → list[int]
特殊トークンを追加して、シーケンスまたはシーケンスのペアからモデルの入力を構築します。
このメソッドは、トークナイザーのspecial_tokens_patternに基づいて入力を動的に構築します:
"none": 特別なトークンなし"cls_sep": [CLS] seq0 [SEP] または [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] または seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 または [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] または [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] または [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>(tokenizer に保存されたカスタムの prefix/suffix)
create_token_type_ids_from_sequences
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = None ) → list[int]
シーケンスペア分類タスクで使用するために、渡された2つのシーケンスからマスクを作成します。
このメソッドは、トークナイザーの設定属性に基づいてトークンタイプIDを動的に構築します:
token_type_ids_pattern: 使用するパターン(“all_zeros”または“bert_style”)token_type_ids_include_special_tokens: 長さの計算に特殊トークンを考慮するかどうか
例:
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences
# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs語彙に追加されたトークンを、トークンからインデックスへの辞書として返します。現時点では、トークンがすでに語彙に存在する場合でも常に追加されるため、結果はfast呼び出しと異なる場合があります。これは変更すべき点です。
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。このメソッドは、トークナイザーのprepare_for_modelまたはencode_plusメソッドを使用して特殊トークンを追加する際に呼び出されます。
このメソッドは、トークナイザーのspecial_tokens_patternに基づいて、特殊トークンのマスクを動的に構築します:
"none": 特殊トークンを指定しません(デフォルト、すべて 0 を返します)"cls_sep": [CLS] seq0 [SEP] または [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] または seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 または [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] または [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] または [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>
num_special_tokens_to_add
< source >( pair: bool = False ) → int
特殊トークン付きでシーケンスをエンコードする際に追加されるトークンの数を返します。
これはダミー入力をエンコードし、追加されたトークンの数をチェックするため、効率的ではありません。この処理をトレーニングループ内に配置しないでください。
prepare_for_model
< source >( ids: list[int]pair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )
モデルで使用できるように、入力IDのシーケンスを準備します。特殊トークンの追加、切り詰め、パディングを行います。
prepare_for_tokenization
< source >( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]
パラメータ
- text (
str) — 準備するテキスト。 - is_split_into_words (
bool、任意、デフォルトはFalse) — 入力がすでに事前トークン化済み(例:単語に分割済み)かどうかを指定します。Trueに設定すると、トークナイザーは入力がすでに単語に分割済み(たとえば空白で分割済み)であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。 - kwargs (
dict[str, Any]、省略可) — トークン化に使用するキーワード引数です。
戻り値
tuple[str, dict[str, Any]]
準備されたテキストと、未使用のkwargs。
トークン化の前に、必要な変換を実行します。
このメソッドは、kwargsから引数をポップし、残りのkwargsも返す必要があります。エンコーディング処理の最後にkwargsをテストすることで、すべての引数が使用されたことを確認します。
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]
一般的な語彙保存パターン用のデフォルト実装です。 <self.encoder>/<self.vocab>をJSONとして保存し、必要に応じて<self.bpe_ranks>をmergesとして保存します。 語彙が存在しない場合は空のタプルを返します。
トークナイザーにカスタムの保存ロジック(SentencePieceモデル、複数の語彙ファイル、特殊なファイル形式など)が必要な場合は、このメソッドをオーバーライドしてください。
tokenize
< source >( text: str**kwargs )
トークナイザーを使用して、文字列をトークンのシーケンスに変換します。
truncate_sequences
< source >( ids: list[int]pair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )
指定された戦略に従ってシーケンスを切り詰めます。
PreTrainedTokenizerFast
PreTrainedTokenizerFast は tokenizers ライブラリに依存しています。🤗 tokenizers ライブラリから取得したトークナイザーは、🤗 transformers に非常に簡単に読み込むことができます。その方法については、🤗 tokenizers のトークナイザーの使用 ページを参照してください。
クラス transformers.TokenizersBackend
< source >( *args**kwargs )
パラメータ
- 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(), this will be set to the value stored for the associated model inmax_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]、任意) — モデルの forward pass が受け入れる入力のリスト("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', '>']を返します。 - tokenizer_object (
tokenizers.Tokenizer) — インスタンス化の元となる 🤗 tokenizers のtokenizers.Tokenizerオブジェクト。詳細は 🤗 tokenizers のトークナイザーの使用 を参照してください。 - tokenizer_file (
str) — 🤗 tokenizers の以前にシリアライズされたtokenizers.Tokenizerオブジェクトを表すローカルの JSON ファイルへのパス。
すべての高速トークナイザーの基底クラス(HuggingFace tokenizers ライブラリをラップします)。
PreTrainedTokenizerBaseを継承します。
トークン化と特殊トークンに関する共通メソッド、事前学習済みトークナイザーのダウンロード/キャッシュ/読み込み、および語彙へのトークン追加に関するメソッドをすべて処理します。
このクラスは、すべてのトークナイザーに対して追加トークンを統一的に含めるため、BPE や sentencepiece など、基盤となる辞書構造の固有な語彙拡張メソッドを個別に処理する必要がありません。
クラス属性(派生クラスによって上書きされる)
- 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__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
パラメータ
- 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, 省略可, デフォルトはFalse) — パディングの有効化と制御を行います。以下の値を受け入れます:Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。Falseまたは'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
- truncation (
bool,strまたは TruncationStrategy, 省略可能, デフォルトはFalse) — 切り詰めを有効にし、制御します。以下の値を受け取ります:Trueまたは'longest_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。この場合、トークン単位で切り詰めが行われ、ペアのシーケンス(またはペアのバッチ)が提供されている場合は、ペアの中で最も長いシーケンスから1トークンずつ削除します。'only_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れることのできる最大入力長まで切り詰めます。この設定では、ペアのシーケンス(またはペアのバッチ)が提供された場合のみ、ペアの最初のシーケンスだけが切り詰められます。'only_second': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長まで切り詰めます。このモードでは、シーケンスのペア(またはペアのバッチ)が提供された場合のみ、ペアの2番目のシーケンスが切り詰められます。Falseまたは'do_not_truncate'(デフォルト): トランケーションを行いません(つまり、モデルが許容する最大入力サイズを超えるシーケンス長を持つバッチを出力する可能性があります)。
- max_length (
int, 省略可能) — truncation/padding パラメータのいずれかによって使用される最大長を制御します。未設定のまま、または
Noneに設定されている場合、truncation/padding パラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。モデルに特定の最大入力長がない場合(XLNet など)、最大長への truncation/padding は無効になります。 - stride (
int、省略可能、デフォルトは 0) —max_lengthとともに数値が設定されている場合、return_overflowing_tokens=Trueで返されるオーバーフローしたトークンは、切り詰められたシーケンスの末尾の一部のトークンを含み、切り詰められたシーケンスとオーバーフローしたシーケンスの間に重複を確保します。この引数の値は、重複するトークンの数を定義します。 - is_split_into_words (
bool、任意、デフォルトはFalse) — 入力がすでに事前トークン化済み(例:単語に分割済み)かどうかを指定します。Trueに設定すると、トークナイザーは入力がすでに単語に分割済み(たとえば空白で分割済み)であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。 - pad_to_multiple_of (
int, 任意) — 設定すると、指定された値の倍数にシーケンスをパディングします。paddingが有効になっている必要があります。 これは、計算能力が>= 7.5(Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。 - padding_side (
str, 省略可) — モデルにパディングを適用する側です。[‘right’, ‘left’] のいずれかを選択してください。 デフォルト値は、同名のクラス属性から取得されます。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです:'pt': PyTorchのtorch.Tensorオブジェクトを返します。'np': Numpy のnp.ndarrayオブジェクトを返します。
- return_token_type_ids (
bool, 省略可能) — トークンタイプIDを返すかどうか。デフォルトのままにすると、特定のトークナイザーのデフォルトに従ってトークンタイプIDを返します。これはreturn_outputs属性で定義されます。 - return_attention_mask (
bool, 省略可能) — attention mask を返すかどうか。デフォルトのままにすると、return_outputs属性によって定義される、特定の tokenizer のデフォルトに従って 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 を継承する高速トークナイザーでのみ利用可能です。Python のトークナイザーを使用している場合、このメソッドは
NotImplementedErrorを送出します。 - return_length (
bool、任意、デフォルトはFalse) — エンコードされた入力の長さを返すかどうかを指定します。 - verbose (
bool、任意、デフォルトはTrue) — より多くの情報や警告を表示するかどうかを指定します。 - **kwargs —
self.tokenize()メソッドに渡されます
戻り値
以下のフィールドを持つBatchEncoding:
-
input_ids — モデルに与えるトークン ID のリスト。
-
token_type_ids — モデルに渡すトークンタイプIDのリスト(
return_token_type_ids=Trueの場合、またはself.model_input_namesに“token_type_ids”が含まれている場合)。 -
attention_mask — モデルがどのトークンに注意を向けるべきかを指定するインデックスのリスト(
return_attention_mask=Trueの場合、またはself.model_input_namesに “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_tokens
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
パラメータ
- 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"に設定し、入力のはじめの部分にのみプレフィックスを付与するようにします: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 )
例:
# 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))add_special_tokens
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
パラメータ
- 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() メソッドを使用してください。
add_special_tokens を使用すると、特別なトークンを以下の複数の方法で使用できます。
skip_special_tokens = Trueを使用すると、デコード時に特殊トークンをスキップできます。- 特殊トークンは、
AddedTokensと同様に、トークナイザーによって慎重に処理されます(分割されることはありません)。 tokenizer.cls_tokenなどの tokenizer クラスの属性を使用して、特殊トークンに簡単に参照できます。これにより、モデル非依存の学習およびファインチューニングスクリプトの開発が容易になります。
可能な限り、提供される事前学習済みモデルには特別なトークンがすでに登録されています(例えば、BertTokenizer の cls_token は '[CLS]' として、XLM のものは '</s>' として登録されています)。
例:
# 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>"apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
パラメータ
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — “role”キーと“content”キーを持つ辞書のリストで、これまでに蓄積されたチャット履歴を表します。
- tools (
list[Union[Dict, Callable]]、省略可) — モデルからアクセス可能なツール(呼び出し可能な関数)のリストです。テンプレートが関数呼び出しをサポートしていない場合、この引数は無効になります。各ツールは、ツールの名前、説明、引数の型を指定した JSON Schema として渡す必要があります。詳細については、ツール使用ガイドを参照してください。 - documents (
list[dict[str, str]], 任意) — モデルが RAG(検索拡張生成)を実行している場合にアクセス可能な文書を表する dict のリストです。テンプレートが RAG をサポートしていない場合、この引数は無効になります。各文書は、“title” と “text” キーを含む dict であることが推奨されます。 - chat_template (
str、省略可) — この変換に使用する Jinja テンプレートです。モデルのテンプレートがデフォルトで使用されるため、この引数に何かを渡す必要は通常ありません。 - add_generation_prompt (bool, 任意) — この値が設定されている場合、アシスタントメッセージの開始を示すトークンを含むプロンプトが、整形された出力の末尾に追加されます。これは、モデルから応答を生成したい場合に便利です。 なお、この引数はチャットテンプレートに渡されるため、この引数が効果を発揮するには、テンプレート側でのサポートが必要です。
- 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, 省略可, デフォルトはFalse) — 返されるシーケンスのパディング戦略(モデルのパディング側およびパディングインデックスに従う)として、以下から選択します:Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。Falseまたは'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
- truncation (
bool、デフォルトはFalse) — 最大長でシーケンスを切り詰めるかどうか。tokenize がFalseの場合は無効です。 - max_length (
int, 省略可) — パディングや切り詰めのために使用する最大長(トークン数)。tokenize がFalseの場合は無効です。指定しない場合、デフォルトとしてトークナイザーのmax_length属性が使用されます。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。tokenize がFalse. 指定可能な値は次のとおりです:'pt': PyTorchのtorch.Tensorオブジェクトを返します。'np': NumPyのnp.ndarrayオブジェクトを返します。
- return_dict (
bool、デフォルトはTrue) — 名前付き出力を含む辞書を返すかどうかを指定します。Falseの場合は、この引数は無効になります。 - tokenizer_kwargs (
dict[str -- Any]、省略可): トークナイザーに渡す追加のキーワード引数。 - 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
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
パラメータ
- 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を直接使用できます。
decode
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
パラメータ
- 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]]
単一のシーケンスに対するデコード済み文字列、またはシーケンスのバッチに対するデコード済み文字列のリスト。
tokenizerとvocabularyを使用して、idのシーケンスを文字列に変換します。また、シーケンスのリストを文字列のリストに変換することもできます。特殊トークンの削除や、トークン化スペースのクリーンアップなどのオプションが利用可能です。
self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)) を実行するのと似ています。
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
パラメータ
- 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, 省略可, デフォルトはFalse) — パディングの有効化と制御を行います。以下の値を受け入れます:Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。Falseまたは'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
- truncation (
bool,strまたは TruncationStrategy, 省略可能, デフォルトはFalse) — 切り詰めを有効にし、制御します。以下の値を受け取ります:Trueまたは'longest_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。この場合、トークン単位で切り詰めが行われ、ペアのシーケンス(またはペアのバッチ)が提供されている場合は、ペアの中で最も長いシーケンスから1トークンずつ削除します。'only_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れることのできる最大入力長まで切り詰めます。この設定では、ペアのシーケンス(またはペアのバッチ)が提供された場合のみ、ペアの最初のシーケンスだけが切り詰められます。'only_second': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長まで切り詰めます。このモードでは、シーケンスのペア(またはペアのバッチ)が提供された場合のみ、ペアの2番目のシーケンスが切り詰められます。Falseまたは'do_not_truncate'(デフォルト): トランケーションを行いません(つまり、モデルが許容する最大入力サイズを超えるシーケンス長を持つバッチを出力する可能性があります)。
- max_length (
int, 省略可能) — truncation/padding パラメータのいずれかによって使用される最大長を制御します。未設定のまま、または
Noneに設定されている場合、truncation/padding パラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。モデルに特定の最大入力長がない場合(XLNet など)、最大長への truncation/padding は無効になります。 - stride (
int、省略可能、デフォルトは 0) —max_lengthとともに数値が設定されている場合、return_overflowing_tokens=Trueで返されるオーバーフローしたトークンは、切り詰められたシーケンスの末尾の一部のトークンを含み、切り詰められたシーケンスとオーバーフローしたシーケンスの間に重複を確保します。この引数の値は、重複するトークンの数を定義します。 - is_split_into_words (
bool、任意、デフォルトはFalse) — 入力がすでに事前トークン化済み(例:単語に分割済み)かどうかを指定します。Trueに設定すると、トークナイザーは入力がすでに単語に分割済み(たとえば空白で分割済み)であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。 - pad_to_multiple_of (
int, 任意) — 設定すると、指定された値の倍数にシーケンスをパディングします。paddingが有効になっている必要があります。 これは、計算能力が>= 7.5(Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。 - padding_side (
str, 省略可) — モデルにパディングを適用する側です。[‘right’, ‘left’] のいずれかを選択してください。 デフォルト値は、同名のクラス属性から取得されます。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、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)) を実行するのと同じです。
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
パラメータ
- repo_id (
str) — トークナイザーをプッシュするリポジトリの名前です。特定の組織にプッシュする場合は、組織名を含む必要があります。 - commit_message (
str, 任意) — プッシュ時にコミットするメッセージ。デフォルトは"Upload tokenizer"です。 - commit_description (
str, 省略可) — 作成されるコミットの説明 - private (
bool、省略可) — リポジトリを非公開にするかどうか。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 にトークナイザーのファイルをアップロードします。
例:
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")利用可能なシリアライズファイル(tokenizer.json、sentencepieceモデル、tekken.json、vocab/merges)からtokenizers.Tokenizerバックエンドを構築します。
語彙に追加されたトークンを、トークンからインデックスへの辞書として返します。
num_special_tokens_to_add
< source >( pair: bool = False ) → int
特殊トークン付きでシーケンスをエンコードする際に追加されるトークンの数を返します。
これはダミー入力をエンコードし、追加されたトークンの数をチェックするため、効率的ではありません。この処理をトレーニングループ内に配置しないでください。
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = Falsesave_format: str | None = None**kwargs ) → A tuple of str
パラメータ
- save_format (
str, 省略可) —"mistral"を指定すると、元のファイルをコピーしてネイティブのtekken.jsonとして保存します(元の tekken 語彙ファイルが利用可能である必要があります)。保存時にファイル名はtekken.jsonに正規化され、インスタンス化されたトークナイザーはこれと完全に一致している必要があります。"hf"またはNoneを指定すると、デフォルトの HuggingFace 形式になります。 - kwargs (
dict[str, Any]、省略可) — push_to_hub() メソッドに渡される追加のキーワード引数。
戻り値
str のタプル
保存されたファイル。
トークナイザーの完全な状態を保存します。
ネイティブ語彙ファイル(例: Mistral の tekken.json)から変換されたトークナイザー向けに、save_format のサポートを追加して save_pretrained() を拡張します。legacy_format、filename_prefix、および push_to_hub については、ベースメソッドを参照してください。
set_truncation_and_padding
< source >( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )
パラメータ
- padding_strategy (PaddingStrategy) — 入力に適用されるパディングの種類
- truncation_strategy (TruncationStrategy) — 入力に適用される切り詰めの種類
- max_length (
int) — シーケンスの最大サイズ。 - stride (
int) — オーバーフローを処理する際に使用するストライド。 - pad_to_multiple_of (
int, 省略可) — 設定すると、シーケンスを指定された値の倍数にパディングします。これは、計算能力が>= 7.5(Volta) の NVIDIA ハードウェアで Tensor Cores を使用できるようにするため、特に有用です。 - padding_side (
str, 省略可) — モデルにパディングを適用する側です。[‘right’, ‘left’] のいずれかを選択してください。 デフォルト値は、同名のクラス属性から取得されます。
fast tokenizers(HuggingFace tokenizers ライブラリによって提供される)に対して、切り詰め(truncation)とパディング(padding)の戦略を定義し、その後、トークナイザーの設定を復元します。
提供されたトークナイザーには、管理セクションの前にパディング / トランケーション戦略が設定されていません。トークナイザーが以前にパディング / トランケーション戦略を設定していた場合、管理セクションを終了する際に、パディング / トランケーションなしにリセットされます。
train_new_from_iterator
< source >( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast
パラメータ
- text_iterator (
list[str]のジェネレーター) — 学習コーパスです。テキストのバッチのジェネレーターである必要があります。例えば、すべてをメモリに保持している場合は、テキストのリストのリストになります。 - vocab_size (
int) — トークナイザーに使用したい語彙のサイズです。 - length (
int, 任意) — イテレータ内のシーケンスの総数です。意味のある進捗の追跡に使用されます。 - new_special_tokens (
strまたはAddedTokenのリスト、省略可) — 学習中のトークナイザーに追加する新しい特殊トークンのリストです。 - special_tokens_map (
dict[str, str]、省略可) — このトークナイザーが使用する一部の特殊トークンの名前を変更する場合は、この引数に、元の特殊トークン名から新しい特殊トークン名へのマッピングを渡します。 - kwargs (
dict[str, Any]、省略可) — 🤗 Tokenizers ライブラリからトレーナーに渡される追加のキーワード引数。
text_iteratorで学習された、元のトークナイザーと同じタイプの新しいトークナイザー。
現在のトークナイザーと同じデフォルト(特殊トークンやトークナイズパイプラインに関するもの)を維持したまま、新しいコーパスでトークナイザーを学習します。
現在のbos_tokenとeos_tokenで、基盤となるpost processorを更新します。
PythonBackend
class transformers.PythonBackend
< source >( **kwargs )
パラメータ
- 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(), this will be set to the value stored for the associated model inmax_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]、任意) — モデルの forward pass が受け入れる入力のリスト("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', '>']を返します。
すべてのスロートークナイザーの基底クラス。
PreTrainedTokenizerBaseを継承します。
トークン化および特殊トークンに関するすべての共有メソッド、事前学習済みトークナイザーのダウンロード/キャッシュ/読み込み、および語彙へのトークン追加に関するメソッドを処理します。
このクラスは、すべてのトークナイザーに対して追加トークンを統一的に含めるため、BPE や sentencepiece など、基盤となる辞書構造固有の語彙拡張メソッドを個別に処理する必要がありません。
クラス属性(派生クラスによって上書きされる)
- 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'を指定します。
build_inputs_with_special_tokens
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = None ) → list[int]
特殊トークンを追加して、シーケンスまたはシーケンスのペアからモデルの入力を構築します。
このメソッドは、トークナイザーのspecial_tokens_patternに基づいて入力を動的に構築します:
"none": 特別なトークンなし"cls_sep": [CLS] seq0 [SEP] または [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] または seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 または [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] または [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] または [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>(tokenizer に保存されたカスタムの prefix/suffix)
create_token_type_ids_from_sequences
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = None ) → list[int]
シーケンスペア分類タスクで使用するために、渡された2つのシーケンスからマスクを作成します。
このメソッドは、トークナイザーの設定属性に基づいてトークンタイプIDを動的に構築します:
token_type_ids_pattern: 使用するパターン(“all_zeros”または“bert_style”)token_type_ids_include_special_tokens: 長さの計算に特殊トークンを考慮するかどうか
例:
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences
# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs語彙に追加されたトークンを、トークンからインデックスへの辞書として返します。現時点では、トークンがすでに語彙に存在する場合でも常に追加されるため、結果はfast呼び出しと異なる場合があります。これは変更すべき点です。
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。このメソッドは、トークナイザーのprepare_for_modelまたはencode_plusメソッドを使用して特殊トークンを追加する際に呼び出されます。
このメソッドは、トークナイザーのspecial_tokens_patternに基づいて、特殊トークンのマスクを動的に構築します:
"none": 特殊トークンを指定しません(デフォルト、すべて 0 を返します)"cls_sep": [CLS] seq0 [SEP] または [CLS] seq0 [SEP] seq1 [SEP]"eos": seq0 [EOS] または seq0 [EOS] seq1 [EOS]"bos": [BOS] seq0 または [BOS] seq0 [BOS] seq1"bos_eos": [BOS] seq0 [EOS] または [BOS] seq0 [EOS] seq1 [EOS]"cls_double_sep": [CLS] seq0 [SEP] または [CLS] seq0 [SEP] [SEP] seq1 [SEP]"prefix_suffix":<prefix_tokens> seq0 [seq1] <suffix_tokens>
num_special_tokens_to_add
< source >( pair: bool = False ) → int
特殊トークン付きでシーケンスをエンコードする際に追加されるトークンの数を返します。
これはダミー入力をエンコードし、追加されたトークンの数をチェックするため、効率的ではありません。この処理をトレーニングループ内に配置しないでください。
prepare_for_model
< source >( ids: list[int]pair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )
モデルで使用できるように、入力IDのシーケンスを準備します。特殊トークンの追加、切り詰め、パディングを行います。
prepare_for_tokenization
< source >( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]
パラメータ
- text (
str) — 準備するテキスト。 - is_split_into_words (
bool、任意、デフォルトはFalse) — 入力がすでに事前トークン化済み(例:単語に分割済み)かどうかを指定します。Trueに設定すると、トークナイザーは入力がすでに単語に分割済み(たとえば空白で分割済み)であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。 - kwargs (
dict[str, Any]、省略可) — トークン化に使用するキーワード引数です。
戻り値
tuple[str, dict[str, Any]]
準備されたテキストと、未使用のkwargs。
トークン化の前に、必要な変換を実行します。
このメソッドは、kwargsから引数をポップし、残りのkwargsも返す必要があります。エンコーディング処理の最後にkwargsをテストすることで、すべての引数が使用されたことを確認します。
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]
一般的な語彙保存パターン用のデフォルト実装です。 <self.encoder>/<self.vocab>をJSONとして保存し、必要に応じて<self.bpe_ranks>をmergesとして保存します。 語彙が存在しない場合は空のタプルを返します。
トークナイザーにカスタムの保存ロジック(SentencePieceモデル、複数の語彙ファイル、特殊なファイル形式など)が必要な場合は、このメソッドをオーバーライドしてください。
tokenize
< source >( text: str**kwargs )
トークナイザーを使用して、文字列をトークンのシーケンスに変換します。
truncate_sequences
< source >( ids: list[int]pair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )
指定された戦略に従ってシーケンスを切り詰めます。
TokenizersBackend
クラス transformers.TokenizersBackend
< source >( *args**kwargs )
パラメータ
- 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(), this will be set to the value stored for the associated model inmax_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]、任意) — モデルの forward pass が受け入れる入力のリスト("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', '>']を返します。 - tokenizer_object (
tokenizers.Tokenizer) — インスタンス化の元となる 🤗 tokenizers のtokenizers.Tokenizerオブジェクト。詳細は 🤗 tokenizers のトークナイザーの使用 を参照してください。 - tokenizer_file (
str) — 🤗 tokenizers の以前にシリアライズされたtokenizers.Tokenizerオブジェクトを表すローカルの JSON ファイルへのパス。
すべての高速トークナイザーの基底クラス(HuggingFace tokenizers ライブラリをラップします)。
PreTrainedTokenizerBaseを継承します。
トークン化と特殊トークンに関する共通メソッド、事前学習済みトークナイザーのダウンロード/キャッシュ/読み込み、および語彙へのトークン追加に関するメソッドをすべて処理します。
このクラスは、すべてのトークナイザーに対して追加トークンを統一的に含めるため、BPE や sentencepiece など、基盤となる辞書構造の固有な語彙拡張メソッドを個別に処理する必要がありません。
クラス属性(派生クラスによって上書きされる)
- 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'を指定します。
利用可能なシリアライズファイル(tokenizer.json、sentencepieceモデル、tekken.json、vocab/merges)からtokenizers.Tokenizerバックエンドを構築します。
語彙に追加されたトークンを、トークンからインデックスへの辞書として返します。
num_special_tokens_to_add
< source >( pair: bool = False ) → int
特殊トークン付きでシーケンスをエンコードする際に追加されるトークンの数を返します。
これはダミー入力をエンコードし、追加されたトークンの数をチェックするため、効率的ではありません。この処理をトレーニングループ内に配置しないでください。
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = Falsesave_format: str | None = None**kwargs ) → A tuple of str
パラメータ
- save_format (
str, 省略可) —"mistral"を指定すると、元のファイルをコピーしてネイティブのtekken.jsonとして保存します(元の tekken 語彙ファイルが利用可能である必要があります)。保存時にファイル名はtekken.jsonに正規化され、インスタンス化されたトークナイザーはこれと完全に一致している必要があります。"hf"またはNoneを指定すると、デフォルトの HuggingFace 形式になります。 - kwargs (
dict[str, Any]、省略可) — push_to_hub() メソッドに渡される追加のキーワード引数。
戻り値
str のタプル
保存されたファイル。
トークナイザーの完全な状態を保存します。
ネイティブ語彙ファイル(例: Mistral の tekken.json)から変換されたトークナイザー向けに、save_format のサポートを追加して save_pretrained() を拡張します。legacy_format、filename_prefix、および push_to_hub については、ベースメソッドを参照してください。
set_truncation_and_padding
< source >( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )
パラメータ
- padding_strategy (PaddingStrategy) — 入力に適用されるパディングの種類
- truncation_strategy (TruncationStrategy) — 入力に適用される切り詰めの種類
- max_length (
int) — シーケンスの最大サイズ。 - stride (
int) — オーバーフローを処理する際に使用するストライド。 - pad_to_multiple_of (
int, 省略可) — 設定すると、シーケンスを指定された値の倍数にパディングします。これは、計算能力が>= 7.5(Volta) の NVIDIA ハードウェアで Tensor Cores を使用できるようにするため、特に有用です。 - padding_side (
str, 省略可) — モデルにパディングを適用する側です。[‘right’, ‘left’] のいずれかを選択してください。 デフォルト値は、同名のクラス属性から取得されます。
fast tokenizers(HuggingFace tokenizers ライブラリによって提供される)に対して、切り詰め(truncation)とパディング(padding)の戦略を定義し、その後、トークナイザーの設定を復元します。
提供されたトークナイザーには、管理セクションの前にパディング / トランケーション戦略が設定されていません。トークナイザーが以前にパディング / トランケーション戦略を設定していた場合、管理セクションを終了する際に、パディング / トランケーションなしにリセットされます。
train_new_from_iterator
< source >( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast
パラメータ
- text_iterator (
list[str]のジェネレーター) — 学習コーパスです。テキストのバッチのジェネレーターである必要があります。例えば、すべてをメモリに保持している場合は、テキストのリストのリストになります。 - vocab_size (
int) — トークナイザーに使用したい語彙のサイズです。 - length (
int, 任意) — イテレータ内のシーケンスの総数です。意味のある進捗の追跡に使用されます。 - new_special_tokens (
strまたはAddedTokenのリスト、省略可) — 学習中のトークナイザーに追加する新しい特殊トークンのリストです。 - special_tokens_map (
dict[str, str]、省略可) — このトークナイザーが使用する一部の特殊トークンの名前を変更する場合は、この引数に、元の特殊トークン名から新しい特殊トークン名へのマッピングを渡します。 - kwargs (
dict[str, Any]、省略可) — 🤗 Tokenizers ライブラリからトレーナーに渡される追加のキーワード引数。
text_iteratorで学習された、元のトークナイザーと同じタイプの新しいトークナイザー。
現在のトークナイザーと同じデフォルト(特殊トークンやトークナイズパイプラインに関するもの)を維持したまま、新しいコーパスでトークナイザーを学習します。
現在のbos_tokenとeos_tokenで、基盤となるpost processorを更新します。
SentencePieceBackend
class transformers.SentencePieceBackend
< source >( **kwargs )
パラメータ
- 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(), this will be set to the value stored for the associated model inmax_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]、任意) — モデルの forward pass が受け入れる入力のリスト("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', '>']を返します。
sentencepiece.modelファイルから読み込むSentencePieceベースのトークナイザーの基底クラスです。
PreTrainedTokenizerを継承します。
トークン化および特殊トークンに関するすべての共有メソッド、事前学習済みトークナイザーのダウンロード/キャッシュ/読み込み、および語彙へのトークン追加に関するメソッドを処理します。
このクラスは、すべてのトークナイザーに対して追加トークンを統一的に含めるため、BPE や sentencepiece など、基盤となる辞書構造固有の語彙拡張メソッドを個別に処理する必要がありません。
クラス属性(派生クラスによって上書きされる)
- 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'を指定します。
単一の文字列内のトークン(文字列)のシーケンスに変換します。
辞書として語彙を返します
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple(str)
sentencepieceの語彙(元のファイルのコピー)をディレクトリに保存します。
BatchEncoding
クラス transformers.BatchEncoding
< source >( data: dict[str, Any] | None = Noneencoding: EncodingFast | Sequence[EncodingFast] | None = Nonetensor_type: None | str | TensorType = Noneprepend_batch_axis: bool = Falsen_sequences: int | None = None )
パラメータ
- data (
dict, 任意) —__call__/encode_plus/batch_encode_plusメソッドによって返される、リスト/配列/テンソルの辞書(‘input_ids’、‘attention_mask’ など)。 - encoding (
tokenizers.EncodingまたはSequence[tokenizers.Encoding]、任意) — トークナイザーが、単語/文字空間からトークン空間へのマッピングなどの追加情報を出力する fast tokenizer の場合、tokenizers.Encodingインスタンス(バッチの場合はインスタンスのリスト)がこの情報を保持します。 - tensor_type (
Union[None, str, TensorType], 省略可) — tensor_type を指定すると、初期化時に PyTorch/Numpy の Tensor 内の整数リストを変換できます。 - prepend_batch_axis (
bool、任意、デフォルトはFalse) — テンソルに変換する際にバッチ軸を追加するかどうかを指定します(上記のtensor_typeを参照)。tensor_typeパラメータが設定されている場合のみこのパラメータが有効であり、それ以外の場合は無効です。 - n_sequences (
Optional[int], 省略可) — 各エンコーディングが表す入力シーケンスの数(不明な場合はNone、単一のシーケンスの場合は1、シーケンスのペアの場合は2)。
call()、~tokenization_utils_base.PreTrainedTokenizerBase.encode_plus および ~tokenization_utils_base.PreTrainedTokenizerBase.batch_encode_plus メソッドの出力(トークン、attention_masks など)を保持します。
このクラスは Python の辞書から派生しており、辞書として使用できます。さらに、このクラスは、単語/文字空間からトークン空間への変換を行うユーティリティメソッドを公開しています。
char_to_token
< source >( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int
パラメータ
- batch_or_char_index (
int) — バッチ内のシーケンスのインデックスです。バッチに1つのシーケンスしか含まれない場合、シーケンス内の文字のインデックスを指定できます。 - char_index (
int, オプション) — batch_or_char_index にバッチインデックスが指定されている場合、これはシーケンス内の文字のインデックスとして使用できます。 - sequence_index (
int, 任意、デフォルトは 0) — バッチにシーケンスのペアがエンコードされている場合、提供された文字インデックスがそのペアのどちらのシーケンス(0 または 1)に属するかを指定するために使用できます。
戻り値
int
トークンのインデックス。文字インデックスが空白のみで構成されるトークンを指し、かつtrim_offsets=Trueで空白がトリムされている場合は、None。
バッチ内のシーケンスについて、元の文字列の1文字に対応するトークンのインデックスを、エンコードされた出力から取得します。
次のように呼び出すことができます:
- バッチサイズが 1 の場合、
self.char_to_token(char_index) - バッチサイズが1以上の場合、
self.char_to_token(batch_index, char_index)
このメソッドは、入力シーケンスが事前にトークン化されたシーケンスとして提供される場合(つまり、単語をユーザーが定義する場合)に特に適しています。この場合、エンコードされたトークンと提供されたトークン化された単語を簡単に関連付けることができます。
char_to_word
< source >( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int
パラメータ
- batch_or_char_index (
int) — バッチ内のシーケンスのインデックスです。バッチに1つのシーケンスしか含まれない場合、元の文字列内の文字のインデックスを指定できます。 - char_index (
int, 任意) — batch_or_char_index にバッチインデックスが指定されている場合、元の文字列における文字のインデックスを指定できます。 - sequence_index (
int, 任意、デフォルトは 0) — バッチにシーケンスのペアがエンコードされている場合、提供された文字インデックスがそのペアのどちらのシーケンス(0 または 1)に属するかを指定するために使用できます。
戻り値
int
その文字を含む単語のインデックス。
バッチ内のシーケンスの元の文字列における、元の文字列の特定の文字に対応する元の文字列内の単語を取得します。
次のように呼び出すことができます:
- バッチサイズが 1 の場合、
self.char_to_word(char_index) - バッチサイズが1より大きい場合、
self.char_to_word(batch_index, char_index)
このメソッドは、入力シーケンスが事前にトークン化されたシーケンスとして提供される場合(つまり、単語をユーザーが定義する場合)に特に適しています。この場合、エンコードされたトークンと提供されたトークン化された単語を簡単に関連付けることができます。
convert_to_tensors
< source >( tensor_type: str | TensorType | None = Noneprepend_batch_axis: bool = False )
パラメータ
- tensor_type (
strまたは TensorType、任意) — 使用するテンソルの型です。strの場合、TensorType の列挙型のいずれかの値である必要があります。Noneの場合、変更は行われません。 - prepend_batch_axis (
bool、省略可、デフォルトはFalse) — 変換時にバッチ次元を追加するかどうか。
内部のコンテンツをテンソルに変換します。
sequence_ids
< source >( batch_index: int = 0 ) → list[Optional[int]]
トークンを元の文の ID にマッピングするリストを返します:
- シーケンスの前後や間に追加される特殊トークンには
Noneを指定します。 0は、最初のシーケンスの単語に対応するトークンに割り当てられます。1は、2つのシーケンスが同時にエンコードされた場合、2番目のシーケンスの単語に対応するトークンに割り当てられます。
へ
< source >( device: str | torch.device | intnon_blocking: bool = False ) → BatchEncoding
パラメータ
戻り値
変更後の同じインスタンス。
v.to(device, non_blocking=non_blocking) を呼び出して、すべての値をデバイスに送信します(PyTorch のみ)。
token_to_chars
< source >( batch_or_token_index: inttoken_index: int | None = None ) → CharSpan
バッチ内のシーケンスにおいて、エンコードされたトークンに対応する文字スパンを取得します。
文字スパンは、CharSpanとして返されます:
- start — トークンに関連付けられた元の文字列の最初の文字のインデックス。
- end — トークンに関連付けられた元の文字列において、最後の文字の直後の文字のインデックス。
次のように呼び出すことができます:
- バッチサイズが 1 の場合、
self.token_to_chars(token_index) - バッチサイズが1以上の場合、
self.token_to_chars(batch_index, token_index)
token_to_sequence
< source >( batch_or_token_index: inttoken_index: int | None = None ) → int
指定されたトークンが表すシーケンスのインデックスを取得します。一般的な使用例では、このメソッドは単一のシーケンスまたはペアの最初のシーケンスに対して0を、ペアの2番目のシーケンスに対して1を返します。
次のように呼び出すことができます:
- バッチサイズが 1 の場合、
self.token_to_sequence(token_index) - バッチサイズが 1 より大きい場合、
self.token_to_sequence(batch_index, token_index)
このメソッドは、入力シーケンスが事前にトークン化されたシーケンスとして提供される場合(つまり、単語がユーザーによって定義されている場合)に特に適しています。この場合、エンコードされたトークンと提供されたトークン化された単語を簡単に関連付けることができます。
token_to_word
< source >( batch_or_token_index: inttoken_index: int | None = None ) → int
バッチ内のシーケンスにおいて、エンコードされたトークンに対応する(つまり、そのトークンを構成する)単語のインデックスを取得します。
次のように呼び出すことができます:
- バッチサイズが 1 の場合、
self.token_to_word(token_index) - バッチサイズが1を超える場合、
self.token_to_word(batch_index, token_index)
このメソッドは、入力シーケンスが事前にトークン化されたシーケンスとして提供される場合(つまり、単語がユーザーによって定義されている場合)に特に適しています。この場合、エンコードされたトークンと提供されたトークン化された単語を簡単に関連付けることができます。
トークン
< source >( batch_index: int = 0 ) → list[str]
指定されたバッチインデックスにおけるトークン(単語/サブワード分割後、整数インデックスへの変換前の入力文字列の部分)のリストを返します(fast トークナイザーの出力でのみ動作します)。
word_ids
< source >( batch_index: int = 0 ) → list[Optional[int]]
高速トークナイザーの場合、トークンを元の文における実際の単語に対応付けるリストを返します。
word_to_chars
< source >( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → CharSpan
パラメータ
- batch_or_word_index (
int) — バッチ内のシーケンスのインデックスです。バッチに1つのシーケンスしか含まれない場合、これはシーケンス内の単語のインデックスとして使用できます。 - word_index (
int、省略可) — batch_or_word_index にバッチインデックスが指定されている場合、これはシーケンス内の単語のインデックスとして使用できます。 - sequence_index (
int、省略可能、デフォルトは 0) — バッチにシーケンスのペアがエンコードされている場合、提供された単語インデックスがそのペアのどちらのシーケンス(0 または 1)に属するかを指定するために使用できます。
戻り値
CharSpan
文字列内の関連する文字の範囲。CharSpan は、以下の要素を持つ NamedTuple です:
- start: 元の文字列において、その単語に関連付けられた最初の文字のインデックス
- end: 元の文字列において、その単語に関連付けられた最後の文字の直後の文字のインデックス
バッチ内のシーケンスにおいて、指定された単語に対応する元の文字列内の文字スパンを取得します。
CharSpan NamedTuple として、以下の内容が返されます:
- start: 元の文字列における最初の文字のインデックス
- end: 元の文字列の最後の文字の直後の文字のインデックス
次のように呼び出すことができます:
- バッチサイズが 1 の場合、
self.word_to_chars(word_index) - バッチサイズが1以上の場合、
self.word_to_chars(batch_index, word_index)
word_to_tokens
< source >( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → (TokenSpan, optional)
パラメータ
- batch_or_word_index (
int) — バッチ内のシーケンスのインデックスです。バッチに1つのシーケンスしか含まれない場合は、シーケンス内の単語のインデックスを指定できます。 - word_index (
int、省略可) — batch_or_word_index にバッチインデックスが指定されている場合、これはシーケンス内の単語のインデックスとして使用できます。 - sequence_index (
int、省略可能、デフォルトは 0) — バッチにシーケンスのペアがエンコードされている場合、提供された単語インデックスがそのペアのどちらのシーケンス(0 または 1)に属するかを指定するために使用できます。
戻り値
(TokenSpan、任意)
エンコードされたシーケンスにおけるトークンの範囲を返します。その単語に対応するトークンがない場合はNoneを返します。これは、トークンがトークン化の整形に使用された特殊トークンである場合に特に起こり得ます。例えば、トークン化の先頭にクラストークンを追加する場合などが挙げられます。
バッチ内のシーケンスにおいて、単語に対応するエンコード済みトークンスパンを取得します。
トークンスパンは、TokenSpanとして返されます。
- start — 最初のトークンのインデックス。
- end — 最後のトークンの直後のトークンのインデックス。
次のように呼び出すことができます:
- バッチサイズが 1 の場合、
self.word_to_tokens(word_index, sequence_index: int = 0) self.word_to_tokens(batch_index, word_index, sequence_index: int = 0)バッチサイズが1以上の場合
このメソッドは、入力シーケンスが事前にトークン化されたシーケンスとして提供される場合(つまり、単語をユーザーが定義する場合)に特に適しています。この場合、エンコードされたトークンと提供されたトークン化された単語を簡単に関連付けることができます。