【とーくないざー】

トークナイザー とは?

💡 テキストをAIの「食べられる大きさ」に切り分ける道具
📌 このページのポイント
入力テキスト "今日はいい天気です" トークナイザー トークン列 今日 いい 天気 です ID変換 トークンID 1024 5 892 3301 42 分割方式 文字単位 今/日/は/い/い/... 単語単位 今日/は/いい/天気/です サブワード BPE / WordPiece ※ サブワード方式は未知語にも対応可能(BPE・WordPiece等)
トークナイザーの仕組み
ひよこ ひよこ

トークナイザーって、単純に単語で区切るだけじゃないの?

ペンギン先生 ペンギン先生

そうなんだ。英語なら単語で区切れることが多いけど、「unhappy」を「un」「happy」に分けたり、「running」を「run」「ning」に分けたりすることもある。サブワード分割と呼ばれる手法で、珍しい単語も既知の部品の組み合わせで扱えるようにしているんだよ。

ひよこ ひよこ

日本語はどうなるの?

ペンギン先生 ペンギン先生

日本語はスペースで区切られないから難しいんだ。「東京タワーに登った」は「東京」「タワー」「に」「登った」とかに分かれることもあれば、文字一文字ずつになることもある。BPE(バイトペアエンコーディング)という手法がよく使われていて、よく一緒に出てくる文字の組み合わせをどんどんまとめていく仕組みなんだよ。

ひよこ ひよこ

なんでトークン数を気にしないといけないの?

ペンギン先生 ペンギン先生

APIの料金は「入力トークン数 × 単価」で計算されることが多いんだ。それに、AIが一度に処理できるトークン数には上限(コンテキストウィンドウ)があって、超えると入力が切り捨てられる。長い文書を処理するときはトークン数を意識することが重要なんだよ。

ひよこ ひよこ

おもしろい!日本語って英語よりトークンを多く使うって本当?

ペンギン先生 ペンギン先生

多くなりやすいのは本当で、これがLLMの日本語コストを押し上げる要因の一つになっているんだ。英語のトークナイザーを日本語に流用したとき、日本語の文字をバイト単位に分解して処理することがある。例えば漢字一文字が3バイトUTF-8で表されると、3トークン消費することがある。同じ意味の内容でも日本語は英語の3〜5倍のトークンを消費することがあって、多言語対応のトークナイザー設計はLLM開発の重要な課題の一つなんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「トークナイザー」って出てきたら「テキストをAIが処理しやすい断片に切る前処理ツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Tokenizer」 = トークンに分割するもの
💬 Token(トークン)はラテン語で「しるし・記号」の意味。Tokenizerは「それを行うもの」という意味だよ
← 用語集にもどる