3行でいうと
- BPEは、よく出る文字の並びを順にひとまとめにして「語彙」を作る方法。語彙に載りにくい文字は、細かく切られる。
- 論文(NeurIPS 2023)では、同じ内容を英語と比べたとき、日本語は旧来の切り方で約3.0倍、GPT-4系の切り方で約2.3倍のトークンだった。
- OpenAIの2024年の発表では、新しい切り方で日本語の例文が37トークンから26トークンになった。
- Claudeは、Opus 4.7以降の切り方で、同じ文章が従来より約30%多いトークンになると公式に書かれている。
この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や論文を読んでまとめたものです。
先に結論
- 料金と上限は「トークン数」で決まります。トークンの数え方は会社・世代ごとに違います。同じ日本語の文章でも、モデルを替えると数が変わり、請求もコンテキストの余裕も変わります。
- 日本語が不利になりやすい根本の理由は、BPEが「英語の文章が多い学習データで、よく出る並びを優先して語彙にする」仕組みだからです(僕らの読みです。論文の説明にもとづきますが、各社のトークナイザーの学習データは、読んだ範囲では公開されていません)。
- ただし、新しいトークナイザーでは差が縮まる方向の発表もあります。古い記事の「日本語は英語の3倍」を、今のモデルにそのまま当てはめないほうが安全です。
- Claudeについては、日本語に限った倍率を示す公式の数字は、読んだ範囲では見つかっていません。実際の倍率は、使うモデルのトークン数えAPIで測るのが確実です。
前提:トークンとトークナイザー
- トークンは、AIが読み書きする文字列の最小の単位です。1文字のこともあれば、単語1つ、単語の一部のこともあります。Googleの文書は、Geminiでは1トークンがおよそ4文字、100トークンが英語の約60〜80語、と説明しています(英語を想定した目安です)。
- トークナイザーは、文字列をトークンに切り分ける部品です。AIは文字そのものではなく、トークンの番号の並びを受け取ります。
- 語彙は、トークナイザーが知っているトークンの全部です。GPT-2の論文では、語彙は50,257個と書かれています。
- APIは、アプリからAIを呼び出す窓口です。料金は「100万トークンあたり」で決まります(2026年10月8日確認、Claude Sonnet 5.5は入力2ドル、出力10ドル。変わることがあります)。
BPEの仕組み
BPE(Byte Pair Encoding、バイト対符号化)は、もともとはデータ圧縮の技術でした。機械翻訳に応用したSennrichらの論文(ACL 2016)が、「よく出る並びを順に新しい記号にまとめる」やり方を説明しています。
- 最初の語彙を、1文字ずつにします。
- 文章の中で、隣り合う2つの記号の組を数え、いちばん多い組を、1つの新しい記号にまとめます。
- これを決めた回数だけ繰り返します。最終的な語彙の大きさは、最初の語彙と、合併の回数を足した数になり、合併の回数が唯一の調整値です、と論文は書いています。
頻繁に出る並び(よく使う単語など)は1つの記号にまとまります。まれな並びは、まとまらず小さな単位のまま残ります。「語彙に載りにくいものほど、細かく切られる」という性質は、この仕組みから出てきます。
小さな例で見るBPE
論文と同じ形の例です(単語と回数は論文の例を借りましたが、計算は僕らのものです)。単語「low」が5回、「lower」が2回、「newest」が6回、「widest」が3回、語末を表す記号を「·」とします。
| 合併の順 | まとめる組 | その組が出る回数 | できる記号 |
|---|---|---|---|
| 1 | e と s | 9(newestとwidest) | es |
| 2 | es と t | 9 | est |
| 3 | est と · | 9 | est· |
| 4 | l と o | 7(lowとlower) | lo |
| 5 | lo と w | 7 | low |
同じ回数の組が並ぶときは、どれを先にするかで順番が変わります。論文の図でも、実装によって細かい違いがあります。
5回の合併のあと、「newest」は「n e w est·」、「widest」は「w i d est·」のように、よく出る語尾「est·」が1つの記号になります。「low」は1つの記号になりますが、まれな「lower」は「low e r ·」と細かい部分が残ります。
バイト単位のBPE
論文の元のやり方は、文字(Unicodeの符号位置)を単位にします。GPT-2の論文は、これだと世界中の文字を最初の語彙に入れる必要があり、13万個を超えてしまうと指摘しています。通常のBPEの語彙は3万2千〜6万4千個くらいだからです。そこで、バイト(情報量の最小の単位。0〜255の256通り)を単位にするBPEを使いました。256個の基本の記号で、どんな文字列も表せます。tiktokenのREADMEも、OpenAIのモデル向けのBPEのトークナイザーで、可逆で(元の文章に戻せる)、学習データにない文章も扱え、平均で1トークンが約4バイトに相当する、と説明しています。
なぜ日本語は多くなりやすいのか
文字がバイトにどう変わるかが、ひとつの手がかりです。UTF-8という文字の符号化の規格(RFC 3629)では、英字(ASCII)は1バイト、ひらがな・カタカナ・漢字のある範囲(U+0800〜U+FFFF)は3バイトで表されます。
見立てです。バイト単位のBPEでは、日本語の1文字は、そのまま語彙に載っていなければ最大3バイト分の小さな記号に分かれます。語彙に載っているのは、学習データによく出た並びです。学習データに日本語が少なければ、日本語の並びは載りにくく、細かく切られます。ただし、新しいトークナイザーでは、語彙に日本語の並びを多く載せる設計もあり得ます。実際の切り方は、トークナイザーごとに調べないと分かりません。
論文の実例があります。GPT-2のトークナイザーは、「言」という漢字を3トークンで表した、と書かれています。さらに、日本語の漢字の半分以上が3トークンを必要としたとも書かれています。
数字で見る:論文と公式の発表
論文:同じ文を各言語で比べた倍率
PetrovらのNeurIPS 2023の論文は、同じ内容を翻訳した文章(FLORES-200という多言語の対訳データ、同じ2000文)を各言語でトークン化し、英語との倍率(premium)を出しています。論文の要旨には、言語によって差は最大15倍、多言語を想定したトークナイザーでも差は残る、とあります。
日本語の欄は次のとおりです(英語を1.00とした倍率)。
| トークナイザー | 日本語の倍率 |
|---|---|
| GPT-2、RoBERTa | 3.00 |
| ChatGPT、GPT-4(cl100k_base) | 2.30 |
つまり、この論文の条件では、GPT-4系で同じ内容が英語の約2.3倍のトークンになります。
OpenAI:2024年のGPT-4oの発表
OpenAIの「Hello GPT-4o」には、新しいトークナイザーの圧縮の例が20言語分あります。2回の読み取りで同じ数字でした。
| 言語 | 発表の表記 |
|---|---|
| 日本語 | 1.4倍少ない(37から26トークン) |
| 中国語 | 1.4倍少ない(34から24) |
| 韓国語 | 1.7倍少ない(45から27) |
| 英語 | 1.1倍少ない(27から24) |
OpenAIは、この20言語を「新しいトークナイザーの圧縮を、いろいろな言語の系統で示すために選んだ」としています。例文1つずつの数字であり、日本語全体の平均ではありません。
Anthropic:Claudeの切り方の変更
Claude Platform Docsのトークン数えの文書には、Claude Opus 4.7以降のモデルは新しいトークナイザーを使い、同じ入力文が従来のモデルより約30%多いトークンになる(内容によって増え方は違う)、と書かれています。Fable 5.1、Mythos 5.1、Fable 5、Mythos 5も、同じトークナイザーを共有します。Sonnet 5.5の移行ガイドも、Sonnet 4.6やHaiku 4.5と比べて約30%多い、と書いています。
モデル一覧の注記には、コンテキストウィンドウ100万トークンは、現在のトークナイザーで、おおよそ55万5千語、またはUnicodeの文字で250万字、と書かれています。以前のモデルでは約75万語です。日本語に限った数字は、読んだ範囲にはありません。
料金と上限への影響
僕らの計算です。トークン数が増えると、入力料金もコンテキストの消費も、同じ比率で増えます。
| 項目 | 計算 |
|---|---|
| 同じ内容が2.3倍のトークンになる場合の入力料金 | 英語で1万トークンなら日本語で約2万3千トークン。Sonnet 5.5の入力(100万トークンあたり2ドル)で、0.02ドルと0.046ドル |
| 同じ内容のコンテキストの消費 | 100万トークンの上限に対し、使える内容の量は約1/2.3 |
| 同じ文章で、切り方が約30%増えるモデルに移った場合 | 1万トークンが約1万3千トークン。入力料金も約1.3倍(出力の文章も同様の影響を受けるはずですが、出力側は読んだ文書に明記がありません) |
倍率2.3は、英語との比較で、GPT-4系の論文の数字です。Claudeや最新のモデルにそのまま当てはまるとは言えません。
実務でのやり方(見立てです)
見立てです。以下は、読んだ文書から組み立てた考え方です。
- トークン数は文字数から推定せず、数えるAPIで測る。 OpenAIの文書は、文字数÷4のような推定は画像やファイルでは不正確とし、入力トークン数えのAPIを勧めています。AnthropicのトークンカウントAPIも、実際に使う
modelで数えるよう書いています。どちらも見積りであり、小さな誤差はあり得ると注意しています。 - モデルを替えるときは、同じ文章の数を再測定する。 Anthropicは、古いモデルで測った数を、新しいモデルの料金や上限の見積りに使い回さないよう書いています。
- 日本語の長い資料では、上限に余裕を持たせる。 英語で「入る」と思った量が、日本語では入らないことがあります。
- 同じ内容を短くできるなら、短くする。 トークン数は文章の長さにほぼ比例します。
つまずきやすい点
- 「1トークン=約4文字」は英語の目安です。日本語には当てはまりません。
- トークン数は、役割を表す枠組みの記号などで少し増えます。OpenAIの文書は、メッセージの役割や区切りのトークンが数に含まれる、と書いています。
- 自分のPCでtiktokenなどで数えた数と、APIが請求する数は、一致しないことがあります。OpenAIは、モデルごとの挙動で数が変わりうる、としています。
- 古い倍率(3倍など)を、今のモデルの見積りに使うと、過大にも過小にもなります。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。数字は論文と公式文書のものです。
- 論文の倍率(3.00と2.30)は、FLORES-200という特定の対訳データでの結果で、2023年の論文の時点のトークナイザーについてです。今のモデルの値ではありません。
- OpenAIの例文の数字は、1つの文での比較です。例文が同じ内容の翻訳かどうかは、読んだ範囲では確認できていません。
- Claudeの約30%は、モデル世代の比較で、日本語だけの倍率ではありません。
- Claude、Gemini、GPT-6系の最新のトークナイザーの日本語の倍率は、公式の数字を確認できていません。
- 価格は2026年10月8日の確認で、変わることがあります。モデル名・条件も変わります。
- 「学習データに日本語が少ないから」という説明は、僕らの読みであり、各社が公開している事実ではありません。
出典
- Neural Machine Translation of Rare Words with Subword Units(arXiv:1508.07909、Sennrichら、ACL 2016、2026年10月8日確認)
- Language Models are Unsupervised Multitask Learners(GPT-2論文、OpenAI、2026年10月8日確認)
- Language Model Tokenizers Introduce Unfairness Between Languages(arXiv:2305.15425、Petrovら、NeurIPS 2023、2026年10月8日確認)
- Hello GPT-4o(OpenAI、2026年10月8日確認)
- tiktoken README(OpenAI、GitHub、2026年10月8日確認)
- Counting tokens(OpenAI API docs、OpenAI、2026年10月8日確認)
- Token counting(Claude Platform Docs、Anthropic、2026年10月8日確認)
- Models overview(Claude Platform Docs、Anthropic、2026年10月8日確認)
- Claude Sonnet 5.5 migration guide(Claude Platform Docs、Anthropic、2026年10月8日確認)
- Pricing(Claude Platform Docs、Anthropic、2026年10月8日確認)
- Understand and count tokens(Gemini API、Google、2026年10月8日確認)
- RFC 3629 UTF-8, a transformation format of ISO 10646(IETF、2026年10月8日確認)
更新履歴
- 2026年10月25日 書き方を直しました。
- 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した
