管理

LLMのトークンとは?文字数との違いとコンテキストウィンドウ

この記事はAIの支援を受けて原文を翻訳したものです。専門用語や数式は原文とあわせて確認してください。

トークンとは、大規模言語モデル(LLM)が文章を読み書きするときの単位で、よく使う単語、長い単語の一部、句読点、数桁の数字などの断片に、それぞれID番号を割り当てたものです。英語では1トークンが平均で約4文字、単語の4分の3ほどにあたり、100トークンはおよそ75語です。日本語・韓国語・中国語は1トークンに収まる文字数が少なくなりやすく、数え方もトークナイザーごとに違うため、文字数とトークン数は一致しません。料金、利用制限、入力と出力を合わせて収めるコンテキストウィンドウも、すべてトークン単位です。

OpenAIの現行トークナイザーが英文「Tokenization isn't magic: words like Morrow split into pieces!」を13個のトークンに分けた図。Token、ization、isn't、magic、コロン、words、like、M、orrow、split、into、pieces、感嘆符の各トークンが色分けされ、ID番号が付いている。
図1. 同じ1文をOpenAIの現行トークナイザーで分けた例です。62文字・9語が13トークンになります。よく使う単語は直前のスペースごと1トークンになり、「Tokenization」や珍しい名前「Morrow」は断片に分かれます。

トークナイザーは文章をどう分けるのか

モデルは文字や単語をそのまま見ているわけではありません。トークナイザーが、あらかじめ決まった語彙の中から文章を断片に切り分け、各断片をIDに置き換えます。モデルは次のIDを1つずつ予測し、最後にトークナイザーがIDを文章に戻します。図1には、よくある4つのパターンが出ています。

  • よく使う単語は、スペースも含めて1トークンです。OpenAIのドキュメントによると、単語の先頭のトークンは通常スペースから始まるため、「token」「␣token」「␣Token」(␣は半角スペース)は別々のIDになります。
  • 長い単語や珍しい単語は断片に分かれます。「Tokenization」は「Token」+「ization」に、「Morrow」は「␣M」+「orrow」に分かれました。
  • 句読点は単独のトークンになることが多いです。図1のコロンと感嘆符がそうです。
  • 数字は小さな塊に分かれます。日付の「2026-10-15」は6トークンです。

バイトペアエンコーディングを3回のマージで見る

トークナイザーの作り方として最も広く使われているのがバイトペアエンコーディング(BPE)です。学習は1文字ずつ(または256通りのバイト値)から始まり、大量の文章で最も頻繁に隣り合う2つの組を1つにまとめて(マージして)語彙に加える、という操作を繰り返します。図2では、まず「u」+「g」が20回出てくるので最初にマージされ、次に「u」+「n」(16回)、最後に「h」+「ug」(15回)がマージされます。実際のトークナイザーは語彙が目標の大きさになるまでこれを続け、GPT-2は256個のバイトトークンに加えて5万回のマージを行いました。最下層がバイトなので、絵文字を含めどんな文字列も符号化できますが、珍しい文字列ほどトークンを多く使います。

5つの単語だけの例(hug×10、pug×5、pun×12、bun×4、hugs×5)で見るバイトペアエンコーディング。1文字ずつの状態から、マージ1でuとgを結合(20回)、マージ2でuとnを結合(16回)、マージ3でhとugを結合(15回)する。
図2. 少数の単語で見るバイトペアエンコーディングです。各ステップで最も多く隣り合う組をマージするので、3回のマージ後に「hugs」は「hug」+「s」になります。

1トークンは何文字・何語?英語の目安

大まかな目安は、OpenAIとGoogleのGemini APIドキュメントが英語について公表しています。

英語での目安おおよその値出典
1トークンあたりの文字数約4文字OpenAI、Google
1トークンあたりの単語数約0.75語OpenAI
100トークンあたりの単語数約75語(OpenAI)、60〜80語(Google)OpenAI、Google
1,000語あたりのトークン数約1,333(1,000÷0.75)OpenAIの比率から計算

図1の文で試してみましょう。62文字÷4なら15.5トークン、9語÷0.75なら12トークンと予測できますが、実際の数は13トークンでした。予算の見積もりには十分な精度です。ただし、コード、URL、数字、英語以外の文章では、この比率からのずれが大きくなります。

日本語・韓国語・中国語でトークン数が文字数と合わない理由

トークナイザーの語彙には、学習に使われた文章の傾向が反映されます。学習データでの割合が小さい言語ほど、長くまとまった断片が語彙に入りにくく、文が細かく短いトークンに分かれます。バイト単位のトークナイザーには、もう1つ事情があります。韓国語のハングル1字も、日本語や中国語の漢字・かな1字も、UTF-8ではそれぞれ3バイトです。語彙にない文字は2〜3個のバイト断片に分かれることがあり、OpenAIのTokenizerではこれが「�」と表示されます。

OpenAIのGPT-4oの発表ページには、同じあいさつ文を20言語で数えた結果が、旧・新両方のトークナイザーについて載っています。図3はそのうち4言語です。旧トークナイザーでは、英語の27トークンに対して韓国語は45トークンで、約1.7倍かかりました。新トークナイザーでは韓国語が27、日本語が37から26、中国語が34から24に減り、英語の24に近づいています。

同じあいさつ文に必要なトークン数の棒グラフ。旧OpenAIトークナイザーは英語27、韓国語45、日本語37、中国語34。GPT-4oのトークナイザーは英語24、韓国語27、日本語26、中国語24。
図3. 同じあいさつ文に必要なトークン数を、OpenAIの旧トークナイザーとGPT-4oのトークナイザーで比べたものです。文字数にはスペースと句読点を含みます。

ここから2つのことが言えます。1つ目は、英語の「1トークン約4文字」という目安が、そのままでは日本語に当てはまらないことです。GPT-4oのトークナイザーで数えると、スペースと句読点を含めて、1トークンあたりの文字数は英語が3.4、韓国語が2.0、日本語が1.7、中国語が1.4でした。ただし、これは1つのあいさつ文から計算した値なので、「日本語は1文字が1トークン」のような一律の換算には使わず、自分の文章で測ってください。

2つ目は、トークン数がテキストそのものではなく、トークナイザーとセットで決まる数字だということです。たとえばAnthropicのトークンカウントのガイドは、Claude Opus 4.7で導入されたトークナイザーが、それ以前のClaudeモデルより、同じ入力で約30%多くのトークンを生成すると説明しています。

コンテキストウィンドウとは?入力と出力で共有する枠

コンテキストウィンドウとは、モデルが1回のリクエストで扱えるトークン数の上限です。入力と出力は1つの予算を分け合います。Anthropicはこれを「応答そのものを含め、モデルが参照できるすべてのテキスト」と説明し、OpenAIも、プロンプトと出力を合わせてモデルの最大コンテキスト長に収める必要があると述べています。ウィンドウの中には、次のものが入ります。

  • システムプロンプトと、ツールの定義
  • ここまでの会話(チャットは毎回、過去のやり取りも再送します)
  • 添付した文書・画像・PDF。これらもトークンに変換されます
  • 今回送る新しいメッセージ
  • 生成中の回答。推論(thinking)用のトークンを使うモデルでは、その分も含まれます
10万トークンのコンテキストウィンドウを1本の帯で表した図。システムプロンプト5,000、会話履歴30,000、添付文書40,000、新しいメッセージ3,000で入力は合計78,000トークン。回答(出力)が10,000、未使用が12,000。合計が収まらない場合に起こる3つのことを下のカードで示している。
図4. 1つのコンテキストウィンドウに、システムプロンプト、会話履歴、添付資料、新しいメッセージ、そして回答が収まります。10万トークンのウィンドウを想定した例示の数値です。

合計が収まらないと、次の3つのうちどれかが起こります。

  1. リクエストが拒否されます。入力だけでウィンドウを超えると、APIはエラーを返します。ClaudeのAPIなら「プロンプトが長すぎる」というエラーです。
  2. 回答が途中で切れます。返答の余地がなくなるか、自分で設定した出力の上限(多くはmax_tokensと呼ばれます)に達すると、生成はそこで止まります。
  3. 古い発言が削られるか、要約されます。チャットアプリは、いちばん古いメッセージを外したり、要約に圧縮したりすることがあります。

ウィンドウは大きいほど良い、とは限りません。Anthropicは、トークン数が増えるほど正確さと情報の取り出しやすさ(リコール)が落ちていくと説明しています。要点を絞ったプロンプトが、詰め込みすぎに勝つこともよくあります。

トークン数が重要な理由:料金・速度・上限

  • 料金。API利用料は通常、100万トークンあたりの単価で示され、入力と出力で別料金です。出力のほうが数倍高いのが一般的です。APIでチャットを作ると、会話のたびに履歴全体が入力として再送され、その分も課金されます。プロンプトキャッシュは繰り返すテキストの料金を下げますが、ウィンドウの占有は変わりません。
  • 速度。モデルは1トークンずつ書くので、2,000トークンの回答は200トークンの回答よりずっと時間がかかります。
  • 上限。レート制限、利用枠、出力の上限はトークンで数えられます。上限に達した返答は、文の途中で終わります。

トークン数の計算方法:正確に数える4つの方法

  1. 手早く確認するなら、OpenAIが公開しているTokenizerのページに文章を貼り付けます。トークンごとにハイライトされ、合計も表示されます。エンコーディングの選択肢(「GPT-5.x & O1/3」など)を切り替えて比べることもできます。
  2. OpenAIのモデルをコードで数えるなら、オープンソースのtiktokenライブラリを使い、tiktoken.encoding_for_model()でモデルに合ったエンコーディングを選びます。
  3. Claudeでは、無料のトークンカウント用エンドポイントを呼び出します(結果は推定値とされています)。Geminiではcount_tokensを呼び出します。
  4. 実際のリクエストの後は、レスポンスのusageフィールドを確認します。ここに、実際の入力と出力のトークン数が入っています。

よくある質問

スペースや句読点もトークンに数えられますか?

はい。スペース1つは多くの場合、次の単語にくっついて数えられますが、余分なスペース、改行、句読点はトークンを増やすことがあります。OpenAIの現行トークナイザーでは、「Hello world」は2トークンですが、同じ2語の間にスペースを2つ入れると3トークンになります。

長いチャットで、最初に話した内容を忘れるのはなぜですか?

会話がコンテキストウィンドウを超え、アプリが最初のほうのやり取りを削ったり、要約に置き換えたりしたためです。大事な点を短くまとめて新しいチャットを始めるほうが、うまくいきがちです。

ChatGPT、Claude、Geminiで、トークンの数え方は同じですか?

いいえ。モデルの系列ごとに独自のトークナイザーを使うので、同じ文章でも数が変わります。比較するなら、各モデルの専用ツールで同じ文章を測ってください。

日本語で使うと、英語より料金が高くなりますか?

従量課金のAPIでは、トークン数が多ければ料金も増えます。差の大きさはトークナイザー次第で、図3のあいさつ文では、旧トークナイザーが日本語37・英語27、GPT-4oのトークナイザーが日本語26・英語24トークンでした。実際の数は自分の文章で確かめてください。

出典:OpenAI APIドキュメント「Key concepts」、OpenAI「Hello GPT-4o」、Anthropic Claudeドキュメント「Context windows」、Hugging Face Transformersドキュメント「Tokenization algorithms」。

関連記事

本文の理解を助けるために制作したオリジナルイラストです。