トークナイザーとは
トークナイザー(Tokenizer)とは、テキストをトークン(処理単位)に分割するためのプログラムまたはアルゴリズムです。自然言語処理において、テキストデータをモデルが処理できる形式に変換する前処理の最初のステップとして不可欠な存在です。
| ひとことで言うと | テキストをトークンに分割するプログラムのこと。 |
|---|---|
| 主な方式 | 単語単位/サブワード単位(BPE・WordPiece)/文字単位。今の主流はサブワード。 |
| 注意点 | モデルとトークナイザーは必ずセット。違う組み合わせだと意味が壊れる。 |
トークナイザーの種類
トークナイザーには大きく3つのアプローチがあります。単語ベースのトークナイザーは空白や句読点でテキストを分割します。文字ベースのトークナイザーは1文字ずつ分割します。サブワードベースのトークナイザーはBPE、WordPiece、SentencePieceなどのアルゴリズムを用いて、頻出する文字列の組み合わせを一つのトークンとして扱います。現代の大規模言語モデルではサブワード方式が標準です。
1正規化全角半角・大文字小文字
▶
2分割語彙表に従って切る
▶
3ID変換各トークンに番号を割当
▶
4特殊記号を付加文頭・文末の目印
トークナイザーの学習
サブワードベースのトークナイザーは、大量のテキストコーパスから統計的にトークンの分割ルール(語彙)を学習します。語彙サイズは通常3万〜10万程度で、頻出するサブワードがトークンとして登録されます。モデルの性能はトークナイザーの品質にも大きく依存します。
言語ごとの課題
英語のように単語間にスペースがある言語では単語分割は比較的容易ですが、日本語や中国語のようにスペースで区切られない言語では形態素解析器やサブワード分割が必要です。多言語モデルでは全言語をカバーする語彙の設計が課題となります。