トークンって何?
「こんにちは、世界!」を切ると
こんにちは、世界!「Hello, world!」を切ると
Hello, world!どちらも4個です。 文字でも単語でもなく、「よく出てくる並び」でまとまっているのが分かります。「こんにちは」の5文字が丸ごと1つなのに、 英語のほうはHello / , / world / ! と4つに分かれています。 ⭐ よく見ると world の箱だけ左に空きがあります ──単語の前の空白が、その単語といっしょに1つのトークンになっているからです。
よくある質問
トークンって何ですか?
AI が文章を読み書きするときの、切れ目の単位です。文字でも単語でもありません。よく出てくる並び(英語の the や、日本語の こんにちは)はまとめて1つ、めずらしい並びは細かく分かれます。どこで切るかは「分割器(トークナイザ)」というものが決めていて、AI ごとに違います。
日本語は英語の3倍のトークンを使うというのは本当ですか?
実測すると、そこまでではありませんでした。このページで同じ内容の日本語と英語を10組ならべて数えたところ、新しい分割器では日本語のほうが1.4倍たらずです。1文字あたりで見ると日本語のほうがずっと不利なのですが、日本語は同じことを少ない文字数で書けるので、文まるごとで見ると差が縮まります。
1トークンは何文字ですか?
決まっていません。実測では英語がおよそ4文字で1トークン、日本語は1トークンが1文字ちょっとでした。ただしこれは平均で、単語によって大きく変わります。しかも分割器が変われば数も変わります。
なぜトークンの数を気にするのですか?
AI の料金も、一度に読める長さの上限も、文字数ではなくトークン数で決まっているからです。同じ内容でも、言語や書き方でトークン数は変わります。
このページの数は、どうやって測りましたか?
OpenAI が公開している tiktoken という分割器で数えました。測った日と版はページの下に書いてあります。文はこのサイトで書き下ろしたもので、同じ内容の日本語と英語を10組ならべています。
AI が文章を切って読む単位です。同じ内容の日本語と英語を10組ならべて、 実際に数えました。
実測しました ── 言われている話と3つ食い違いました
「トークンとは」で出てくる説明には数がたくさん書いてあります。ところがどの分割器で測ったのかが書かれていないものがほとんどです。 トークンの数は分割器ごとに変わるので、それを書かない数字は意味を持ちません。 だからここでは自分で測りました。
⭐ 食い違い1: 「日本語は英語の3倍」ではありませんでした
同じ内容の文を10組ならべて数えると、日本語 150トークンに対して英語 111トークン。1.35倍です。3倍には遠く届きません。
なぜかというと、日本語は同じことを少ない文字数で書けるからです。 1文字あたりで見れば日本語のほうがずっと不利で、英語がおよそ4.0文字で1トークンなのに対し、日本語は1トークンが1.4文字ぶんしかありません。 ところが文の長さそのものが違うので、まるごとで見ると差が縮まります。
だからといって「日本語が得」という話でもありません。 1.4倍でも1.4倍です。 言いたいのは「文字あたりの不利」と「文まるごとの不利」を混ぜてはいけないということです。3倍という数は、たぶん前者の話が後者として広まったものです。
⭐ 食い違い2: 同じ文でも、分割器が変わると数が変わりました
まったく同じ10組を、ひとつ前の分割器(cl100k_base)で数え直すと、 日本語は 197トークンありました。 新しいほう(o200k_base)では 150なので、24パーセント減っています。
⭐ ところが英語はほとんど変わりません(112 → 111、1パーセント)。 つまり新しい分割器は、日本語のような言語を短く切れるように作り直されたということです。 同じ文章でも、使う AI が新しくなるだけで料金が変わることになります。
| どんな文か | 日本語 | 英語 | 日本語 ÷ 英語 |
|---|---|---|---|
| あいさつ17字 / 30字 | 8 | 9 | 0.89倍 |
| 説明の文23字 / 47字 | 15 | 10 | 1.50倍 |
| みじかい問い9字 / 12字 | 7 | 4 | 1.75倍 |
| 数のはなし22字 / 44字 | 16 | 11 | 1.45倍 |
| 生きもの20字 / 55字 | 17 | 15 | 1.13倍 |
| 話しことば17字 / 32字 | 12 | 10 | 1.20倍 |
| 手つづき23字 / 49字 | 19 | 11 | 1.73倍 |
| むずかしめ19字 / 47字 | 12 | 11 | 1.09倍 |
| ながい文33字 / 58字 | 25 | 15 | 1.67倍 |
| きごう混じり22字 / 69字 | 19 | 15 | 1.27倍 |
| 合計10組ぜんぶ | 150 | 111 | 1.35倍 |
ひとつ前の分割器で数えると、同じ10組が 日本語197・英語112(1.76倍)でした。
⭐ 食い違い3: 1トークンが「文字の一部」にしかならないことがあります
いちばん驚いたのがこれです。ひとつ前の分割器で「こんにちは、世界!」を切ると、 こうなりました。
こんにちは、**界!
* と書いてある2つが、文字になっていません。 割れているのは「世」のたった1文字です (となりの「界」は1つのまま残っています)。
これは壊れているのではなく、トークンが文字ではなくバイトの並びを切っているからです。 日本語の文字はコンピュータの中で1文字3バイトぶんの場所を使います。 「世」は e4 b8 96 の3バイトなのですが、 分割器はそれを 「e4 b8」と「96」 の2つに切ってしまいました。どちらも、それだけでは文字になりません。
つまり文字の途中で切れることがある ── だから「1トークン=1文字」とも「1トークン=1単語」とも言えないのです。 割れた2つをつなぐと、ちゃんと「世」に戻ります。
新しい分割器では、同じ文が4個にきれいに分かれて、途中で切れたものは1つもありません。 上で見た「日本語だけ24パーセント減った」の中身は、こういうことです。
そもそも、なぜ細かく切るのか
単語まるごとを単位にすると、知らない単語が出たときにお手上げになります。 かといって1文字ずつにすると、こんどは列が長くなりすぎます。 その間を取ったのが「よく出てくる並びだけをまとめる」という考え方です。
この考え方(BPE ── バイト対符号化)を言葉の処理に持ち込んだのは、2015年の「Neural Machine Translation of Rare Words with Subword Units」(新しいタブで開きます)という論文です。 めずらしい単語をもっと小さい単位の並びとして 書き表せば、辞書に無い語も扱える ── そういう提案でした。
だから「よく出てくる並び」は学習に使った文章で決まります。 英語の文章をたくさん読ませて作った分割器は、英語を短く切れます。 日本語のトークンが多くなりがちなのは、根っこをたどるとここに行き着きます。
これが効いてくるところ
- 料金。AI の使用料は文字数ではなくトークン数で 決まります
- 一度に読める長さ。「何万トークンまで」という上限も、 文字数ではありません
- 同じ内容でも変わる。言語でも、使う AI でも変わります
このページの数は2026-08-17に測ったものです。 分割器は作り直されることがあるので、時間が経てば変わります。数だけを持ち帰らず、「測った道具と日付を確かめる」ほうを持ち帰ってください。
出どころ
トークンの数は、OpenAI が公開している分割器 tiktoken(新しいタブで開きます) (版 0.13.0)で 2026-08-17 に数えました。 分割器は o200k_base と cl100k_base の2つです。 測り直す手順はリポジトリの tools/token-measure.py に入れてあります。
数えた文はこのサイトで書き下ろしたものです (よそから持ってくると引用の扱いが必要になるため)。 あいさつ・説明・数字・話し言葉など、 種類がかたよらないように10組えらんでいます。
細かく切るという考え方の出どころは、上に挙げた Sennrich・Haddow・Birch の論文 (arXiv:1508.07909)です。