AI・機械学習

トークナイゼーション とーくないぜーしょん

トークンサブワードBPE形態素解析自然言語処理テキスト前処理
トークナイゼーションについて教えて

簡単に言うとこんな感じ!

「文章をAIが理解できる小さな部品に分解する」処理だよ!例えば「ChatGPTはすごい」という文章を「Chat」「G」「PT」「は」「すごい」みたいに分割するんだ。料理で言えば「食材を下ごしらえする」工程。この分割の仕方でAIの性能が大きく変わるんだよ!


トークナイゼーションとは

トークナイゼーション(Tokenization) とは、テキスト(文字列)を トークン(Token) と呼ぶ小さな単位に分割する処理です。コンピューターは文字をそのままは扱えないため、テキストを数値(ベクトル)に変換する必要があり、その前準備として「どの単位に分割するか」を決めるのがトークナイゼーションです。

分割の単位は 文字・単語・サブワード・文 など様々です。現在の大規模言語モデル(GPTやBERTなど)では、単語よりも小さい サブワード単位 での分割が主流です。「Tokenization」なら「Token」「ization」のように、意味を持つ最小単位に近いレベルで分けます。これにより未知語(学習データに出てこなかった単語)への対応力が上がります。

ビジネス的に重要なのは、LLMの利用料金がトークン数で課金される 点です。OpenAIのAPIは「入力トークン数×単価」が課金基準です。日本語は英語と比べてトークン効率が低い(同じ文字数でも多くのトークンを使う)ため、長文を処理する場合はコスト計算に注意が必要です。


トークン分割の種類

「Tokenization is important」の分割例 文字単位 T o k e … (37文字 = 37トークン) 単語単位 Tokenization is important (3トークン) サブワード (BPE) Token ization is import ant (5トークン) 日本語例 「東京都に住む」→ サブワード: 東京 (5トークン) 日本語は英語よりトークン効率が低い → API利用コストに注意

主なトークナイザーの比較

アルゴリズム仕組み採用モデル
BPE(Byte Pair Encoding)頻出文字ペアを繰り返しマージGPT-2/3/4、Llama
WordPiece語彙の可能性を最大化するよう分割BERT、RoBERTa
SentencePiece言語非依存のサブワード分割T5、mBERT、日本語モデル
形態素解析(MeCab等)日本語の品詞・語幹で分割日本語専用モデル

歴史と背景

  • 1986年 — Philip RissanenがMDL原理を提案。圧縮ベースのトークン化の基盤
  • 2015年 — SennrichらがBPE(Byte Pair Encoding) を機械翻訳に適用して注目
  • 2018年 — GoogleがSentencePiece をオープンソースで公開
  • 2018年 — BERTでWordPiece トークナイザーが広く採用
  • 2020年代 — LLMの普及でトークン数=コストという認識が一般に広まる
  • 現在 — tiktoken(OpenAI製)など高速トークナイザーが標準ツールに

LLMのトークン数とコスト(目安)

日本語テキスト量目安トークン数
A4用紙1枚(約800字)約600〜1,000トークン
10ページ資料約6,000〜10,000トークン
書籍1冊(約10万字)約75,000〜120,000トークン

※日本語は英語の約1.5〜2倍のトークン数が必要になることが多い


関連する規格・RFC

規格・RFC番号内容
Unicode Standard多言語文字コードの基盤規格

関連用語