OpenAIが開発したChatGPTをはじめ、さまざまなAIが人間レベルの会話を行ってくれるようになりました。AIは文章を読み書きするとき「トークン」という単位で認識を行うのですが、普通の文章がトークン的にはどのように分解されるのかを一目で教えてくれるツール「Tokenizer」がOpenAIのページ上で公開されています。

OpenAI API

https://platform.openai.com/tokenizer

Tokenizerの画面はこんな感じ。テキストを入力する必要がありますが、いったん「Show example」をクリックして例を見てみます。



英語の場合、252文字の文章で64トークンとなる模様。下部にて文字がトークンのまとまりごとに色分けして表示されています。



「TOKEN IDS」をクリックするとそれぞれの数値も確認できます。人間が見てもなにがなんだか分かりませんが、GPTはこの数値の羅列を見て文章を判断しているということです。



日本語も入力してみました。日本語の場合、49文字で50トークンになり、英語に比べるとはるかにトークン数が多くなってしまいます。特に漢字は1文字で2〜3トークン使ってしまいますが、漢字1文字に含まれる情報量を考えると妥当なのだと思うしかありません。



ひらがなだけを入力してみるとこんな感じ。ひらがなだからといって1トークンになるわけではないようです。



数字の羅列でも実験してみました。3文字までは1トークンで……



4文字で2トークンに分かれました。



単語以外の文字の並びは2~3文字で1トークンにまとめられる模様。



また、GPT-3とCodexでは空白の扱いが異なるとのこと。GPT-3は空白10個で10トークンです。



一方Codexは何個空白を重ねても1トークンとして扱ってくれます。



ChatGPTはトークン数での課金なので、どんな場合にトークン数が多くなるのかを知っていると値段を安く抑えることが可能になりそうです。GPT-3の内部でこのトークンがどのように処理されるのかについては下記の記事が分かりやすくなっています。

OpenAI開発のテキスト生成AI「GPT-3」がどんな処理を行っているのかを専門家が解説