トークナイザ - テキストを分割する

LLMが文章を処理するには、まずテキストをトークンに分割する必要があります。トークナイザの仕組みを解説します。

編集・検証: AIパスポートスタディ編集部 公式情報: GUGA 生成AIパスポート公式ページ 制作・検証方針
香月 リサ 先生(普段) 香月 リサ 先生

最近、ChatGPT などの API 料金表を見たことある?
「1,000トークンあたり◯円」って書かれていて、意外と「トークンって何?」と質問されるのよ。

戸倉 ジャスミン(びっくり) 戸倉 ジャスミン

えっ、知らなかった!
トークンって単語数のことなん?

香月 リサ 先生(普段) 香月 リサ 先生

ほぼ単語だけど、少し違うの。
トークナイザーが文章を AI の処理単位に刻むんだけど、単語より細かいサブワードまで刻む方式が主流なのよ。

深見 つむぎ(普段) 深見 つむぎ

たとえば「unhappiness」は「un」「happi」「ness」のようにサブワード単位に分割される、という理解で合っていますか?
未知語でも、既知のサブワードの組み合わせで表現できるのがサブワード方式の強みですよね。

香月 リサ 先生(普段) 香月 リサ 先生

正解。
BPE(Byte Pair Encoding)が代表格よ。
ざっくり、①最初は文字ごとに分割、②よく一緒に現れる2文字をくっつけて語彙に追加、③これを繰り返して数万語彙を作る——が BPE のコア。
他に WordPiece や Unigram LM があって、BERT、GPT、LLaMA で微妙に違うのよ。

戸倉 ジャスミン(あせる) 戸倉 ジャスミン

細かいとこは分かんないけど、なんとなく形は見えてきた!
日本語はどうなるん?

雪村 ましろ(普段) 雪村 ましろ

あの〜、日本語って英語と違ってスペースで区切れないよね?
どうやって分けるのぉ?

香月 リサ 先生(普段) 香月 リサ 先生

ましろちゃん、それが今日の核心ね。
日本語は1文字単位や、よく使われる文字列の単位で分割されるのよ。
例えば「東京都」なら「東京」「都」のように、ね。
GPT-4 では日本語が GPT-3.5 よりも効率的に分割されるように改良されたわ。

戸倉 ジャスミン(笑い) 戸倉 ジャスミン

すご〜い!
じゃあ日本語で同じ内容書いても、モデルによって消費トークン数が変わるってこと?
英語と日本語でも違うん?

香月 リサ 先生(普段) 香月 リサ 先生

そう。
一般に英語に比べて日本語はトークン消費が多め。
同じ質問でも日本語だと料金が高くつくケースがあるわ。

深見 つむぎ(普段) 深見 つむぎ

ビジネスで API を使う側としては、トークナイザの特性を知って、英語で書いた方が安いケースも考慮すべき、ということですね。

雪村 ましろ(笑顔) 雪村 ましろ

じゃあ俳句とか短文がお得なのぉ?
えへへ。
LLMの入力も出力も、このトークンの単位で数えられてるんだね。
AIの「言葉のカケラ」みたい…ふぇぇ。

香月 リサ 先生(普段) 香月 リサ 先生

ましろちゃん、美しい表現ね。
短く書くことは節約になるわ、意味が伝わる範囲で、ね。
試験的には「トークン化=テキストを処理最小単位に分割」「BPE が代表」「日本語は文字ベース寄り」の3点で押さえて。

深見 つむぎ(普段) 深見 つむぎ

補足すると、LLM のコンテキストウィンドウもトークン単位で定義されるので、長文処理を議論する時には必ず登場します。
100万トークンを謳うモデルでも、日本語だと実質的な文字数はさらに減る可能性があります。
ビジネスでは、RAG の検索結果を何件入れるか・どれだけ長いドキュメントを一括で扱えるかが、トークンコストに直結するんですね。

確認クイズ

トークナイザがテキストをサブワードに分割する利点として最も適切なものはどれか。

  1. 処理速度が必ず上がる
  2. 未知の単語にも対応でき語彙数を抑えられる
  3. 翻訳精度が向上する
  4. 文法エラーを検出できる
こたえを見る

正解: 2. 未知の単語にも対応でき語彙数を抑えられる

サブワード方式では未知語もサブワードの組み合わせで表現でき、語彙爆発を防げます。速度向上・翻訳精度向上・文法エラー検出はサブワード化の直接効果ではありません。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。