トークナイゼーションって何?わかりやすく解説

「ChatGPTって1回の会話に文字数制限があるの?」「APIって何でトークンで課金されるの?」って思ったことない?AIのことを調べるたびに出てくる「トークン」って言葉、なんとなくスルーしてきた人も多いと思う。実はこのトークナイゼーションを理解すると、AIがどうやって文章を読んでいるのか、なんで日本語は損なのか、コストを抑えるにはどうすればいいのか、ぜんぶスッキリわかるようになるよ。この記事を読めば「あーそういうことか!」って声が出るはず。

ChatGPTに長い文章を貼り付けたら「トークン数が上限を超えました」ってエラーが出たんだけど、トークンって何?文字数とは違うの?

いい疑問だね!トークンっていうのは、AIが文章を読むときの「かたまりの単位」のことだよ。つまり「AIが1回に処理できる意味のかたまり」ということ。文字数とは微妙にズレるんだ。たとえば英語の「running」は1トークンだけど、「ありがとうございます」は日本語だと複数のトークンに分割されることが多いんだよ。
じゃあ「トークナイゼーション」って何をすること?

トークナイゼーションとは、文章をAIが処理できるトークンのかたまりに「切り分ける作業」のことだよ。つまり「人間の書いた文章をAIが理解できる形に変換するプロセス」ということ。料理で言うと、食材を口に入りやすい大きさに切り分けるのと同じイメージ。大きいままだと食べられないよね。AIも同じで、文章をそのままでは処理できないから、まず細かく切り分ける必要があるんだ。
どんなふうに切り分けるの?「こんにちは」だったらどうなる?

「こんにちは」は場合によっては「こん」「にち」「は」みたいに分割されることもあるし、ひとつのトークンになることもある。AIの種類によってトークナイザー(つまり切り分けを実行するプログラムのこと)が違うから、切り方も変わるんだよ。英語は単語単位でトークンになりやすいけど、日本語はもっと細かく分割されやすいから、同じ意味の文でも日本語のほうがトークン数が多くなりがちなんだ。
トークン数が多いと何か困るの?

APIを使うときはトークン数で料金が決まるから、日本語で書いた文章は英語より多めにお金がかかることになるんだよ。しかもコンテキストウィンドウ、つまり「AIが一度に記憶できるトークン数の上限」があるから、長い会話や文章を一気に送ると限界を超えてしまう。だからビジネスでAIを使うときは、トークン数をなるべく減らす工夫が大事になってくるんだ。
📝 3行でまとめると
  1. トークナイゼーションとは、文章をAIが処理できる小さなかたまり(トークン)に切り分けるプロセスのこと
  2. 日本語は英語よりトークン数が多くなりやすく、API料金やコンテキスト上限に影響が出る
  3. AIの種類によってトークナイザーの切り方が違うため、同じ文章でもトークン数が変わることがある
目次

もうちょっと詳しく

トークナイゼーションは、AIが登場するずっと前から自然言語処理(NLP)の世界で使われてきた技術だよ。コンピューターは人間の書いた文章をそのままでは理解できないから、文章を数字に変換する必要がある。その第一ステップが「文章をトークンに分割する」こと。たとえばGPT系のモデルが使っている「BPE(バイト対符号化)」という方式では、よく一緒に出てくる文字の組み合わせをひとつのトークンにまとめるルールを学習しているんだ。「ing」や「tion」みたいな頻出のかたまりは1トークンになりやすい。一方、あまり使わない単語や日本語のような複雑な文字体系は、細かく分割されることが多い。トークン数を意識することは、AIをビジネスで使うコスト管理の基本中の基本になっているよ。

💡 ポイント
日本語は英語の約1.5〜3倍のトークン数になることが多い。同じ内容を書くなら英語のほうがコストが安くなる場合があるよ!

⚠️ よくある勘違い

❌ 「トークン=文字数と同じでしょ」
→ 文字数とトークン数は一致しないことが多い。日本語の「ありがとう」は6文字でも、トークンに分解すると4〜6トークンになることがある。英語の「thanks」は6文字で1トークンになることがほとんど。
⭕ 「トークンは言語や単語の複雑さによって変わる単位」
→ トークン数は文字数ではなく、AIが学習したパターンに基づいて決まる。公式のトークナイザーツールで事前に確認する習慣をつけると、コスト管理がしやすくなるよ。
なるほど〜、あーそういうことか!

[toc]

トークナイゼーションとは何か?AIの「文章の読み方」を理解しよう

AIは文章をそのまま読めない

人間は「おはよう」という文字を見たら、瞬時に意味を理解できるよね。でもコンピューターにとって文章は、最初はただの文字の羅列に過ぎない。コンピューターが得意なのは数字の計算だから、文章を扱うためにはまず「数字に変換する」という作業が必要になってくるんだ。

この変換の最初のステップがトークナイゼーション(Tokenization)だよ。「トークン(Token)」とは「意味のある最小のかたまり」のことで、つまりトークナイゼーションとは「文章を意味のある小さなかたまりに切り分けて、AIが扱えるようにする処理のこと」なんだ。

具体例で見てみよう

たとえば「今日は晴れだね」という文章をトークナイゼーションすると、こんなふうに分割されることがある。

  • 「今日」「は」「晴れ」「だ」「ね」→ 5トークン

英語の場合は “Today is sunny” だとすると。

  • “Today” / “is” / “sunny” → 3トークン

同じような意味でも、言語によってトークン数がぜんぜん違うんだよ。これが後で説明する「日本語が損をする」問題につながってくる。

トークンは単語と同じじゃない

「単語に分けるだけじゃないの?」って思うかもしれないけど、実はもっと複雑なんだ。英語の “unhappiness” だったら、”un” + “happiness” というふうに接頭辞で分割されることがある。日本語はひらがな・カタカナ・漢字が混在するうえに、文章の区切りが明確じゃないから、トークナイザーによって切り方が大きく変わるんだよ。

トークナイザーの仕組み:どうやって切り分けているの?

BPEという賢い切り方

ChatGPTやGPT-4が使っているトークナイザーは「BPE(Byte Pair Encoding)」という方式を採用しているよ。つまり「よく一緒に出てくる文字の組み合わせをひとつのトークンにまとめるルールを学習した方式のこと」だ。

具体的には、最初は全部のアルファベット1文字をトークンとして扱って、そこから「一緒に出てくる頻度が高いペア」を次々とひとつのトークンに統合していく。たくさんのテキストを使ってこのルールを学習することで、効率よく文章を分割できるトークナイザーが完成するんだ。

料理の例で言うと、最初は食材を1mmずつ切っていたけど、「この食材はだいたい2cmに切るとちょうどいい」というパターンを経験から学んで、効率よく切れるようになった料理人みたいな感じだよ。

SentencePieceという方式も使われている

GoogleのGeminiなど一部のAIは「SentencePiece」という方式を使っているよ。これはBPEをベースにしつつ、日本語や中国語のような分かち書きしない言語にも対応しやすいように改良された方法なんだ。つまり「スペースで単語を区切らない言語でも、うまくトークンに分割できる方式のこと」と覚えておいて。

どの方式を使うかはAIのモデルによって違うし、同じ文章でも使うモデルによってトークン数が変わることがあるんだ。だからOpenAIのAPIとGoogleのAPIを比べたとき、同じ文章なのに料金が違うという現象が起きることがあるよ。

トークン数と料金の関係:なぜ日本語は「損」なの?

APIの料金はトークン数で決まる

ChatGPTなどのAIをAPIで利用するとき(つまりプログラムから呼び出して使うとき)、料金は「何トークン使ったか」で計算されるんだよ。「100万トークンあたり○円」という単価が設定されていて、送った文章のトークン数と返ってきた文章のトークン数の合計で料金が決まる仕組みになっている。

日本語が英語より高コストになりやすいワケ

英語はアルファベット26文字の組み合わせで、よく使う単語はまるごと1トークンになりやすい。でも日本語はひらがな・カタカナ・漢字・数字・アルファベットが入り混じっていて、さらに同じ音でも漢字によって意味が変わる。だからAIが学習したトークンの辞書の中に、日本語の単語はそのまま載っていないことが多くて、細かく分割されやすいんだ。

実際のデータとして、日本語で書いた文章は同じ意味の英語に比べて1.5倍から3倍程度のトークン数になることがある。100万トークンで1,000円の料金設定なら、同じ内容でも日本語だと1,500〜3,000円かかってしまう計算になるんだ。

コストを抑える実践的なテクニック

ビジネスでAIを使うときに知っておくと得するテクニックをまとめるね。

  • システムプロンプトは短く・シンプルに:毎回送るシステムプロンプト(AIへの基本設定)は、短いほどコストを抑えられる
  • 不要な丁寧語を省く:「〜でございます」より「〜です」のほうがトークン数が少ない
  • キャッシュ機能を活用する:APIによっては同じプロンプトを再利用すると割引される「キャッシュ」機能がある
  • 事前にトークン数を確認する:OpenAIが提供している「Tokenizer」ツールを使うと、送る前にトークン数を確認できるよ

コンテキストウィンドウとトークンの上限:AIの「記憶容量」問題

AIには記憶できる量の上限がある

コンテキストウィンドウとは、AIが「一度に読んで覚えておける情報の量」のことで、つまり「AIのワーキングメモリの容量のことをトークン数で表したもの」だよ。人間で言うと、一度に7〜8個くらいしか物事を短期記憶できないよね。AIにも同じような制限があって、それがコンテキストウィンドウなんだ。

たとえばGPT-4oのコンテキストウィンドウは128,000トークン(約10万字相当)。日本語の小説なら文庫本1〜2冊分くらいのイメージだよ。これを超えると古い情報から忘れていくか、エラーになってしまう。

長い会話でAIが「忘れる」のはなぜ?

チャットで長い会話をしていると、最初の話題をAIが忘れてしまうことがあるよね。あれはまさにコンテキストウィンドウが原因なんだ。会話の全履歴がトークン数の上限に近づくと、古い会話が「押し出されて」消えてしまう。人間のメモ帳にたとえると、ページが一杯になったら最初のメモを消して新しいことを書くイメージだよ。

だから長期的に使うAIチャットボットを作るときは、会話履歴を上手に要約してトークン数を節約する「サマリー戦略」を取ることが多いんだ。

モデルによってコンテキストウィンドウの広さが違う

AIのモデルによってコンテキストウィンドウの大きさはぜんぜん違う。大きいほど一度に長い文章や複雑なタスクを処理できる。

  • GPT-4o:128,000トークン
  • Claude 3.5 Sonnet:200,000トークン(日本語の本3〜4冊分)
  • Gemini 1.5 Pro:1,000,000トークン超(めちゃくちゃ広い!)

どのモデルを選ぶかは、扱うタスクのトークン数に合わせて考える必要があるんだよ。

ビジネスで活きるトークナイゼーションの知識:実用的な場面を見てみよう

RAGシステムを作るときの設計に直結する

最近のビジネスAI活用で話題なRAG(Retrieval-Augmented Generation)、つまり「自社のデータをAIに読み込ませて質問に答えさせる仕組みのこと」を作るときも、トークナイゼーションの知識は超重要なんだ。

RAGでは社内マニュアルや議事録を「チャンク」と呼ばれる小さなかたまりに分割して保存するんだけど、このチャンクの切り方がトークン数を考慮しないといけない。チャンクが大きすぎるとコンテキストウィンドウに収まらないし、小さすぎると意味のある情報が欠けてしまう。適切なチャンクサイズを設計するために、トークナイゼーションの知識が欠かせないんだよ。

プロンプトエンジニアリングでのトークン最適化

プロンプトエンジニアリングとは、つまり「AIに効果的な指示を出すための文章の設計技術のこと」だよ。プロとアマの差が出るのは、同じ結果を得るのにどれだけ少ないトークンで実現できるか、という点にある。

たとえば同じ内容を伝えるにも。

  • 悪い例:「以下の文章を読んで、その内容をわかりやすく要約してください。要約は3行以内でお願いします。」(約50トークン)
  • 良い例:「3行以内で要約:」(約10トークン)

大量のAPIリクエストを送るシステムだと、この差が積み重なって月のコストに大きく影響してくるんだ。プロンプトを短く・明確にすることは、コスト削減と品質向上を同時に達成する鉄則だよ。

多言語対応サービスでの注意点

グローバルなサービスを作るとき、日本語・英語・中国語・アラビア語など複数の言語をAIで処理するなら、言語ごとのトークン数の差を事前に考慮する必要がある。英語ユーザーと日本語ユーザーで同じ機能を使っているのに、料金が2〜3倍違うという状況になり得るからだよ。

この問題を解決するために、各言語に最適化されたモデルを組み合わせたり、日本語専用のトークナイザーを持つモデルを選んだりするアプローチが取られることもあるんだ。ビジネスでAIを設計するときは、「どの言語のユーザーが何トークン使うか」まで試算する習慣をつけておくと安心だよ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大人になってから「これ知らなかった…」と恥ずかしい思いをした経験から、このサイトを作りました。お金・仕事・社会のしくみって、学校で教えてくれないのに知らないと損することだらけ。むずかしい言葉を「あーそういうことか!」って思えるまでかみ砕いて説明するのが得意です。主に経済・法律・税金・ライフイベント周りの用語を毎日更新中。

目次