トークン化
トークン化とは、テキストをトークンに分割するプロセスであり、言語モデルが実際に処理する最小単位を指します。英語では、1トークンはおおよそ4文字(単語の約3/4)に相当し、BPEのようなサブワードアルゴリズムは、モデルが扱えるように単語をより小さな断片に分割します。
トークン化とは、人間が読めるテキストを、モデルが処理する最小単位であるトークンに分割する前処理です。
現代のLLMは、単語全体や単一文字ではなくサブワード単位で動作し、最も広く使われている手法はBPE(Byte Pair Encoding)です。
英語では、OpenAIは1トークンが平均して約4文字に相当し、100トークンはおおよそ75語に対応すると見積もっています。
トークンはコストでもありコンテキスト長でもあります。APIの料金と、モデルが一度に読める量は、どちらもトークンで測定されます。
韓国語のような形態的に豊かな言語は、同じ意味でも英語より多くのトークンを消費する傾向があるため、トークン効率はあらゆるGEOおよびコンテンツ運用計画に含めるべきです。
トークン化とは何か
トークン化は、入力テキストをトークン、言語モデルが実際に扱う最小単位です。モデルは生の文字や単語をそのまま読むことはなく、トークンを整数IDの並びに変換し、その数値列を入力として受け取ります。したがってトークン化は、あらゆるテキストがモデルに届く直前に必ず通る必須の入り口であり、同じ文でもトークナイザーが異なれば分割のされ方が変わり、トークン数も変わります。
初期の手法では、テキストを空白で単語に分割したり、1文字ずつに分解したりしていましたが、単語単位の分割では一度も見たことのない単語(OOV, out-of-vocabulary)に対応できず、文字単位の分割では列が長くなりすぎます。現在の多くのLLMは、その中間の妥協案を採用しています。サブワード・トークン化。一般的な単語は1つのトークンとしてそのまま保持され、珍しい単語や複合語はより小さな断片に分割されます。
代表的な手法:BPE(Byte Pair Encoding)
現在最も広く使われているサブワードアルゴリズムはBPE(Byte Pair Encoding)です。BPEはもともとテキスト圧縮アルゴリズムとして生まれましたが、OpenAIがGPTファミリーのトークナイザーに採用したことで、NLPにおける事実上の標準となりました。Hugging Faceのドキュメントによると、BPEはGPT、GPT-2、RoBERTa、BART、DeBERTaなど多くのモデルで使われています。
BPEの学習原理はシンプルです。まずコーパスに現れる個々の文字をベース語彙として取り出し、その後、隣り合って出現する頻度が最も高い文字の組を繰り返し統合して、より長いサブワードを徐々に作っていきます。これを目標の語彙サイズに達するまで続けます。
Hugging Faceの正確な例を見てみましょう。単語の頻度が("hug", 10), ("pug", 5), ("pun", 12), ("bun", 4), ("hugs", 5)である場合、ベースとなる文字語彙は次のとおりです。
基本語彙: ["b", "g", "h", "n", "p", "s", "u"]
マージ 1: ("u", "g") -> "ug" # 最も頻出し、合計20回出現
マージ 2: ("u", "n") -> "un" # 16回
マージ 3: ("h", "ug") -> "hug" # 15回学習が完了すると、新しいテキストは、正規化、事前トークン化、個々の文字への分解、そして学習済みのマージ規則をこの順序で適用することでトークンに変換されます。この方法で構築されたトークナイザーは、文字とサブワードの組み合わせによって学習データに存在しない単語も表現できるため、OOV問題を解決します。
このサブワード分割の直感的な例は、OpenAIのtiktokenのドキュメントにあります。tiktoken は OpenAI のモデル向けの BPE トークナイザーであり、たとえば単語encodingをencodとingに分割します。これにより、モデルは頻繁に繰り返される語幹や接尾辞などの一般的な断片を認識でき、文法パターンを学習しやすくなります。
証拠と数値
トークナイゼーションにおける中心的なポイントは、テキストがどれだけトークンに圧縮されるかです。OpenAIが提供している英語の換算ルールは次のとおりです(OpenAI Help CenterおよびTokenizer documentation)。
1トークン ≈4文字(英語)
1トークン ≈3/4語
100トークン ≈75語
これらは英語における大まかな目安にすぎず、言語やコンテンツによって変わります。tiktoken documentationでは、BPE tokenは平均しておよそ4 bytesに相当すると説明されています。tiktokenはまた、定義するBPEの4つの特性を挙げています。(1) reversible and losslessであり、tokensを元のテキストに戻せること、(2) そのテキストがtraining dataに含まれていなかった場合でも任意のtextに対して機能すること、(3) token sequenceが元のbytesより短く、テキストを圧縮すること、(4) モデルが一般的なsubwordsを認識しやすくすることです。性能面では、tiktokenは比較対象としたオープンソースのtokenizersより3~6倍高速に動作すると述べています。利用可能なencodingsにはo200k_base(GPT-4o用)およびcl100k_base前の世代向け。
BPE をニューラル機械翻訳に本格的に導入する出発点となったのは、Sennrich、Haddow、Birch による 2016 年の論文「Neural Machine Translation of Rare Words with Subword Units」(ACL 2016, pp.1715-1725)です。この論文では、希少語や未知語をサブワード単位の列として表現する手法を導入し、固定語彙の限界を超える道を開きました。そしてこれは、事実上すべての現代的な LLM トークナイザーの基盤となっていきました。
トークン vs. 単語 vs. 文字
単位 | 分割方法 | 強み | 制約 |
|---|---|---|---|
単語 | 空白と句読点で分割 | 直感的で、意味のまとまりを保持できる | OOV 語を扱えず、語彙爆発が起こる |
文字 | 1文字ずつ分割 | 語彙が極めて少なく、OOVなし | 系列が長くなりすぎ、非効率 |
サブワード(BPE) | 頻出する文字の組み合わせをマージして形成された断片 | OOVを解消しつつ、長さと圧縮効率のバランスが良い | トークナイザーの学習が必要で、言語によって効率が変わる |
SEOとGEOへの影響
トークンは単なる内部概念ではなく、運用コストに直接結びついています。生成検索やLLMベースのサービスにおいて、トークンが重要となる理由は2つあります。
トークン = コスト: ほぼすべてのLLM APIの料金は、入力トークン数と出力トークン数に基づいて課金されます。同じ内容でもトークン数を少なく構成できれば、規模が大きいほど大幅なコスト削減につながります。
トークン = コンテキスト制限: モデルが一度に処理できる量である、コンテキストウィンドウは、文字数ではなくトークン数で定義されます。RAG経由で文書を入力する場合や、長いページを要約・引用する場合、トークン予算を超えると内容は切り捨てられます。
言語ごとのトークン効率: 英語はおおむね4文字で1トークンと比較的効率的ですが、韓国語を含む形態論的に豊かな言語は、同じ意味でもより多くのトークンを消費する傾向があります。多言語コンテンツ運用では、こうした言語ごとのトークンコストの差を考慮する必要があります。
GEOの観点から見たチャンク分割: 生成型検索エンジンにコンテンツを引用してもらうには、まずページを処理用のチャンクに分割します。これらのチャンク境界はトークン単位で決まるため、重要情報を1つのトークンブロックにまとめておくと、AIがそれを全体として引用しやすくなります。核となる回答を短く自己完結した形で配置すること、つまりAEO戦略の核心は、まさにこのトークン構造と合致しています。