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

    はじめに

    こんにちは。
    株式会社Funkit 倉本です。

    おそらく皆さんお使いのChatGPT。私も最近はChatGPTの業務利用が多くなりました。
    ChatGPTを利用していると、自然言語の回答にに驚き仕組みなどにも興味が出てきます。
    今回はChatGPTの利用の際に1度は耳にする「トークン」について記事にしました。

    プロンプトを英語入力の時と日本語入力の時でトークン数に結構な差があるようです。

    目次

    • トークンとは
    • 日本語の場合
    • 英語の場合
    • 比較結果
    • トークン数に気を付けよう
      • その1:トークン数が多いほど利用料金が大きくなる。
      • その2:モデルごとに最大トークン数が決まっている。
      • その3:トークン数は入力と出力の合計から成る。
    • さいごに

    トークンとは

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

    今回、日本の童話「桃太郎」を題材にどれくらいトークン数が違うのか「https://platform.openai.com/tokenizer 」を使って調べてみました。

    日本語の場合

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

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

    上記をトークン化すると以下のような結果となります。
    入力文と比較すると、ひらがな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倍です。

    日本語英語
    トークン数329146
    文字数243573

    日本語は文字単位でトークンがカウントされています。
    ひらがな1文字1~2トークン、漢字1文字2~3トークンであり、単純に文字数=トークン数ではありません。

    英語は単語単位でトークンがカウントされています。
    1単語1トークンで、固有名詞は複数のトークンに分かれる場合があります。

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

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

    hatGPTを扱う上でトークン数には注意が必要です。
    理由は大きく3つあります。

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

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

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

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

    モデルごとに、会話の中で使える最大トークン数(トークンの上限)が決まっています。
    一連の会話で最大トークン数を超えてもChatGPTとの会話は続けられます。
    しかし、最大トークン数を超えると過去の会話が削除されて最大トークン数以下の情報で会話を実現します。
    会話の情報が削られるため、モデルは文脈全体を理解できなくなるのです。
    結果として、過去の会話が削除されることで回答に一貫性がなかったり、回答の正確性も下がる可能性があります。
    GPT-4などの最近のモデルではこの上限も大きくなっているため、通常利用の範囲であればあまり影響はないかもしれません。
    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.
    ————————————————————————————-

    さいごに

    人の生活を便利にするためのChatGPT。
    使い方は人それぞれですが、ChatGPTの役割は人間のサポートです。
    ChatGPTの回答が全て正解ということではなく、その回答をどのように活用するのかを我々が考えていく必要がある部分となります。

    弊社もAzure OpenAI Serviceを活用したサービスの構築や様々なシステムの開発を行っていますのでご興味ありましたら是非ご連絡ください。

    funkit – 株式会社Funkit

    Related Post