Re Reference AI

技術

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

Tokenization / トークン化 / トークナイザー

テキストをモデルが扱う最小単位であるトークンの列へ分割する処理

トークナイゼーションNLP

ひとことで言うと

文章をAIが読める細かい部品(トークン)に切り分ける処理。切り方しだいでAIの効率や得意・不得意が変わる。

概要

トークナイゼーションとは、テキストをモデルが扱う最小単位であるトークンの列へ分割する処理を指す。分割するプログラムはトークナイザーと呼ばれる。 単語単位や文字単位の分割に対し、現在のLLMでは頻出パターンをまとめるサブワード分割(BPEやUnigram法など)が主流で、未知語への頑健さと語彙サイズのバランスを取る。 トークンの区切り方は、モデルの処理コスト・多言語の効率・数値や文字列の扱いに直結する。日本語はアルファベット圏の言語より1文字あたりのトークン数が多くなりやすいなど、言語による差も生む。

歴史

サブワード分割の代表であるBPEは、2016年に機械翻訳向けの手法として導入されたものがLLMへ受け継がれている。

コード例

Hugging Face Transformersでのトークン化

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")
tokens = tokenizer.encode("Hello, world!")
print(tokens)
print(tokenizer.convert_ids_to_tokens(tokens))

利点

  • 語彙サイズを抑えつつ、未知語にもサブワード単位で対応できる
  • 文字単位より少ないトークン数で長い文章を表現でき、計算効率を高める

欠点

  • 分割の境界が人間の直感的な単語区切りと一致しないことがあり、数値計算や文字列操作を誤らせやすい
  • 言語によってトークン化の効率に差があり、非英語圏の言語ではトークン数が増えやすい
  • 学習後に語彙やトークナイザーを変更するのが難しく、モデル設計の初期段階で決定する必要がある

関連用語

トークンByte Pair EncodingN-gramコーパスコンテキストウィンドウ

よくある質問

トークンと単語は同じか。

異なる。トークンはトークナイザーが定めた分割単位で、単語より短くなる場合と長くなる場合がある。1単語が複数トークンに分かれる場合と、複数文字が1トークンにまとまる場合がある。

BPEとは何か。

Byte Pair Encodingの略で、頻出する文字やサブワードのペアを繰り返し結合して語彙を構築するサブワード分割手法。LLMのトークナイザーで広く使われている。

参考文献

関連Zenn記事