トークナイザーとは
この記事の結論
- トークナイザーとは、文章をAIモデルが扱うトークンに切り分け、番号の列に変換するアルゴリズムや道具のことです。出力側では、番号の列を文章に戻す役も担います。
- いまのLLMの多くは、単語と文字の中間の「サブワード」で区切ります。代表的な方式はBPE、WordPiece、Unigramの3つで、空白のない日本語でも使えるようにしたのがSentencePieceです。
- トークナイザーはモデルと組で作られます。別のモデルのトークナイザーで数えたトークン数や番号は、そのままでは通用しません(2026-09-26 時点の情報)。
とーくないざー/Tokenizer
文章をAIモデルが扱うトークンに切り分け、番号の列に変換するアルゴリズムや道具のことです。
最終更新: 2026-09-26
トークナイザーとは(意味と読み方)
トークナイザーとは、文章をAIモデルが扱うトークンに切り分け、番号の列に変換するアルゴリズムや道具のことです。読みは「とーくないざー」、英語では tokenizer と書きます。
機械学習用語集(Google for Developers)は、tokenizer を「文章をトークンに分割する機械学習モデルまたはアルゴリズム」と説明しています。トークンそのものの数え方や料金との関係はトークンの項目に譲り、このページでは「どういう規則で切るのか」を扱います。
トークナイザーの仕事は2方向あります。入力のときは文章を番号の列にする encode、出力のときはモデルが返した番号の列を文章に戻す decode です。大規模言語モデル(LLM)が直接読み書きしているのは、この番号の列です。
トークナイザーの分割方式
分割アルゴリズムの解説(Hugging Face Transformers)をもとに、代表的な方式を並べます。
- 単語単位:空白や記号で区切ります。語の変化形ごとに別の語彙が要るので辞書が巨大になり、辞書にない語は不明扱いの
<unk>になります。 - 文字単位:1文字ずつ区切ります。どんな語も表せますが列が長くなり、1つの単位が持つ意味が薄くなります。
- BPE(Byte Pair Encoding):文字から出発し、隣り合って最もよく出る組を1つにまとめる操作を、決めた語彙数に届くまで繰り返します。機械翻訳の珍しい語に対処するため、Sennrich らの論文(2015年)でサブワード分割に使われました。
- バイト単位のBPE:土台の語彙を256通りのバイト値にしたBPEです。どんな文字列も
<unk>なしで表せます。前述の解説によれば、GPT-2 はこの方式で語彙数50,257です。 - WordPiece:BPEと同じく組をまとめていきますが、単純な出現回数ではなく、別々に出る頻度に比べてどれだけ一緒に出やすいかで組を選びます。BERT系のモデルが使っています。
- Unigram:逆に大きな候補の語彙から出発し、消しても影響の小さい候補を削っていきます。1つの語に複数の切り方がありうるため、確率が最も高い切り方を選びます。
SentencePiece(2018年)は、分かち書きされていない生の文章から直接サブワードを学習できるようにした道具です。空白も ▁ という記号で1つの文字として扱い、そのうえでBPEかUnigramを適用します。単語の間に空白を置かない日本語や中国語で使いやすいのはこのためです。
開発でトークナイザーを使う場面
- トークン数を事前に数える:長い資料を送る前に、上限に収まるかを確かめます。tiktoken(公式リポジトリ)はBPEのトークナイザーで、
enc.decode(enc.encode("hello world"))で元の文字列に戻る、可逆で情報を落とさない変換だと説明されています。 - 切れ方を目で確かめる:Hugging Face Transformers なら
AutoTokenizer.from_pretrained(モデル名)で読み込み、tokenize()で断片の並びを表示できます。固有名詞や変数名がどこで切れるかを見ると、モデルの苦手な入力の見当がつきます。 - 特殊トークンと会話の形式:トークナイザーは文章だけでなく、文の終わりを表すトークンや、会話の役割(system・user など)を区切る記号も管理しています。対話向けのモデルに手元で入力を渡すときは、トークナイザーが持つ会話の雛形(chat template)を通して整形します。
トークナイザーのよくある誤解
- 誤解:トークナイザーはどのモデルでも共通 → 実際:語彙も規則もモデルごとに学習されます。同じ番号でも、別のモデルでは別の断片を指します。数を見積もるときは、使うモデルに対応したトークナイザーで数えます。
- 誤解:国語辞典のように意味で単語を区切っている → 実際:区切りは学習用の文章での出現頻度から統計的に決まります。人が1語と思う語が複数に割れることも、語の境目をまたいだ断片ができることもあります。
- 誤解:同じ文章でも切り方は毎回変わる → 実際:BPEはまとめる規則が固定されているので、同じ文章なら同じ結果になります。Unigramも、推論時は最も確率の高い切り方を選びます。
- 誤解:番号に変えると元の文章は復元できない → 実際:バイト単位のBPEのような方式は、decode で元の文字列にそのまま戻せるように作られています。
トークナイザーを扱うときのコツ
- 見えない文字に気をつける:全角と半角の空白、改行の種類、先頭の空白の有無で、切れ方と数が変わることがあります。
- モデルとトークナイザーはセットで読み込む:手元で動かすときは、同じモデル名から両方を読み込みます。組み合わせを間違えると、エラーにならずに意味の通らない出力が返ることがあります。
- 数の上限に近いときは実測する:コンテキストウィンドウの上限ぎりぎりを使う処理では、文字数からの見積もりに頼らず、トークナイザーで数えてから送ります。
関連用語
関連記事
トークナイザーの出典・参考資料
- 分割アルゴリズムの解説(Hugging Face Transformers):BPE・バイト単位BPE・WordPiece・Unigram・SentencePiece の違い
- Neural Machine Translation of Rare Words with Subword Units(arXiv:1508.07909):BPEをサブワード分割に使った論文
- SentencePiece(arXiv:1808.06226):生の文章から学習する言語非依存のトークナイザー
- tiktoken(公式リポジトリ):BPEトークナイザーの実装と、可逆な変換についての説明
- 機械学習用語集(Google for Developers):tokenizer・token の定義
トークナイザーについてよくある質問
Q1. トークナイザーとは何ですか?
文章をAIモデルが扱うトークンに切り分け、番号の列に変換するアルゴリズムや道具のことです。モデルが返した番号の列を文章に戻す役も担います。
Q2. トークンとトークナイザーは何が違いますか?
トークンは切り分けられた1つひとつの断片、トークナイザーはその切り分けを行う仕組みです。どこで切るかはトークナイザーの規則で決まるため、同じ文章でもトークナイザーが違えばトークンの数と中身が変わります。
Q3. BPEとは何ですか?
Byte Pair Encoding の略で、文字から出発し、隣り合って最もよく出る組を1つにまとめる操作を繰り返して語彙を作る方式です。よく出る語は1つのトークンに、珍しい語は複数の断片になります。
Q4. SentencePieceはなぜ日本語に向いているのですか?
分かち書きされていない生の文章から直接学習でき、空白も記号として1つの文字のように扱うためです。単語の間に空白を置かない日本語でも、事前に単語へ区切る処理を用意せずに使えます。