トークンとは
トークン(Token)とは、自然言語処理においてテキストを分割した最小の処理単位のことです。トークンは単語、サブワード(単語の一部)、文字、あるいは記号など、使用するトークナイザーの方式によって異なります。テキストをトークンに分割する処理をトークン化(Tokenization)と呼びます。
| ひとことで言うと | テキストを分割したときの最小の処理単位。単語・サブワード・文字のいずれか。 |
|---|---|
| どこで使う | 言語モデルへの入力、API料金の計算、入力できる長さの見積もり。 |
| 注意点 | 「単語=トークン」ではない。日本語は1文字が複数トークンになることもある。 |
トークンの種類
トークンの粒度にはいくつかの選択肢があります。単語レベルのトークン化は直感的ですが、未知語への対応が課題です。文字レベルのトークン化は未知語の問題を解消しますが、系列が長くなり文脈の把握が難しくなります。サブワードレベルのトークン化はこの2つの中間に位置し、BPEやSentencePieceなどの手法で実現されます。現代の大規模言語モデルの多くはサブワード方式を採用しています。
1元のテキストそのままの文章
▶
2トークナイザールールに従って分割
▶
3トークン列処理単位の並び
▶
4IDに変換数値としてモデルへ
トークンとモデルの関係
大規模言語モデルではトークン数が処理コストに直結します。GPTやClaudeなどのモデルでは入力と出力のトークン数に基づいて課金が行われます。また、モデルが一度に処理できるトークン数の上限(コンテキストウィンドウ)も重要な制約です。日本語は英語に比べて同じ文章でもトークン数が多くなる傾向があります。
トークン数の見積もり
英語では1トークンは約4文字、1単語は約1.3トークンに相当します。日本語では漢字1文字が1〜2トークンになることが多く、言語やトークナイザーによって大きく変わります。正確なトークン数はトークナイザーを使って計測する必要があります。