くらっちのクラウド日記

仕事や勉強で得た Microsoft 365 関連の技術知識を投稿していくブログです。

【ChatGPT】トークン数、日本語と英語で比較したら全然違う!

はじめに

こんにちは、くらっちです。
ChatGPT を使っていると必ず聞くトークンという重要キーワード。
プロンプト英語入力の時と日本語入力の時でトークン数に結構な差があるようです。
今回、日本の童話「桃太郎」を題材にどれくらいトークン数が違うのか「 OpenAI Platform 」を使って調べてみました。

OpenAI Platform :入力文字をトークン化して、トークンごとに視覚化してくれるツールです。

目次

トークンとは

ChatGPTにおける「トークン」とは、モデルにテキストデータを入力する最小単位を指し、文字や​単語がトークンとして扱われます。
​ChatGPTは​トークンを受け取ることで自然な文章を生成します。

日本語の場合

まずは、日本の童話「桃太郎」の冒頭部分を使ってトークン数を見てみました。

むかし、むかし、ある所におじいさんとおばあさんが住んでいました。
おじいさんは山へしば刈りに、おばあさんは川へ洗濯に行きました。
おばあさんが川で洗濯をしていると大きな桃が流れてきました。
「なんと大きな桃じゃろう!家に持って帰ろう。」
とおばあさんは背中に担いで家に帰り、その桃を切ろうとすると、なんと桃から大きな赤ん坊が出てきたのです。
「おっとたまげた。」
二人は驚いたけれども、とても喜び、
「何という名前にしましょうか。」
「桃から生まれたから、桃太郎というのはどうだろう。」


トークン化すると以下のような結果となります。
入力文と比較すると、ひらがな1文字=トークン数1~2個。
漢字1文字=トークン数2~3個になっています。

英語の場合

今度は英訳した文章でトークン数を見てみました。

Once upon a time, there lived an old man and an old woman.
The grandfather went to the mountain to cut grass, and the grandmother went to the river to wash clothes.
When the old woman was washing clothes in the river, a large peach came flowing down the river.
"What a big peach! Let's take it home."
When she and her grandmother carried her home on her back and were about to cut the peach, she saw a big baby come out of it.
“Oops, I got it.”
They were both surprised, but very happy.
“What should we name it?”
“Since he was born from a peach, why not call him Momotaro?”


トークン化すると以下のような結果となります。
英語の場合は1単語1トークンです。
ただし、Momotaroのような固有名詞はトークンが2つ以上になることもあるようです。

比較まとめ

上記の結果を比較してみましょう。
同じ内容の文章にもかかわらず、日本語のトークン数は英語の2.3倍。
一方、文字数は日本語は英語の0.6倍です。

日本語 英語 
トークン数 329 146
文字数 243 573


日本語は文字単位トークンがカウントされています。
 ひらがな1文字1~2トークン、漢字1文字2~3トークであり、単純に文字数=トークン数ではありません。
英語は単語単位トークンがカウントされています。
 1単語1トークンで、固有名詞は複数のトークンに分かれる場合があります。

日本語と英語でトークン数に差が発生するのは、トークンとなる対象が違うのが原因です。
ChatGPTとの会話が長文になるほど、この違いは致命的です。

トークン数には気を付けよう

既に感じているかもですが、ChatGPTを扱う上でトークン数には注意が必要です。
理由は大きく3つあります。
 その1:トークン数が多いほど利用料金が大きくなる。
 その2:モデルごとに最大トークン数が決まっている。
 その3:トークン数は入力と出力の合計から成る。

1:トークン数が多いほど利用料金が大きくなる。

ChatGPTのAPI 利用料金は、トークン数やモデルの性能によって異なりますが、トークン数が大きくなるほど利用金額も大きくなります。
言うまでもなく短いトークン数(=短いやり取り)の方がお得なのです。
ちなみに、利用料金は1000トークンあたりで計算されます。

OpenAI と Azure OpenAI Service の料金表
OpenAI
Azure OpenAI Service

2:モデルごとに最大トークン数が決まっている。

モデルごとに、会話の中で使える最大トークン数(トークンの上限)が決まっています。
ちなみに一連の会話で最大トークン数を超えてもChatGPTとの会話は続けられます。
しかし、最大トークン数を超えると過去の会話が削除されて最大トークン数以下の情報で会話を実現します。
会話の情報が削られるため、モデルは文脈全体を理解できなくなります。

結果として、過去の会話が削除されることで回答に一貫性がなかったり、回答の正確性も下がる可能性があります。

Azure OpenAI Service のトークン数の上限について

3:トークン数は入力と出力の合計から成る。

トークン数は、過去の会話を含めた入力と出力の合計で計算されます。
例えば以下のような会話では、ユーザーが入力した2つの文章と、システムが出力した2つの文章が全て合計され、その結果が使用したトークン数となるわけです。

日本語だとあっという間に最大トークン数に達するし、利用料金もあっという間に高額になりそうですね。

また、モデルは会話の度に会話内容を先頭から処理して、回答も1文字ずつ出力します。
そのため、回答の全文を出力するまでの応答待機時間もトークン数に比例して大きくなります。

<ユーザー>
Please tell me the name of the first American president.

<システム>
The first president of the United States was George Washington. He served as President of the United States from 1789 to 1797.

<ユーザー>
It has the same name as the capital of the United States.

<システム>
Yes, it is. Washington, D.C., the capital of the United States, is named after George Washington.