サブワード分割

Subword Segmentation

サブワード分割とは

サブワード分割(Subword Segmentation)とは、テキストを単語よりも小さい単位(サブワード)に分割する手法です。単語レベルの分割では語彙サイズが膨大になり未知語の問題が発生し、文字レベルでは系列が長くなりすぎる問題があります。サブワード分割はこれらの問題を解決する中間的なアプローチです。

表:サブワード分割の要点まとめ
ひとことで言うと単語より小さい単位に切ることで、未知語にも対応できるようにする分割方法。
何がうれしいか語彙表が小さくて済み、見たことのない単語も部品の組み合わせで表せる。
注意点意味の切れ目とは一致しない。人が読むと不自然な区切りになることがある。

サブワード分割の利点

頻出する単語はそのまま一つのトークンとして保持し、低頻度語をより小さな部分に分割します。例えば「unhappiness」を「un」「happi」「ness」に分割することで、未知語でも既知のサブワードの組み合わせとして処理できます。これにより、語彙サイズを制限しつつ、任意の入力テキストを処理可能になります。

図:未知語がサブワードで表せるしくみ
1未知の単語語彙表にない言葉
▶
2部品に分解既知のサブワードへ
▶
3組み合わせで表現「未」+「知」+「語」
▶
4処理できる未知語でも扱える

代表的な手法

BPE(Byte Pair Encoding)は最も広く使われるサブワード分割手法で、GPTシリーズなどで採用されています。WordPieceはBERTで使用されているGoogleの手法です。SentencePieceはGoogleが開発した言語非依存のトークナイザーで、日本語や中国語など前処理なしで利用できます。Unigram言語モデルは確率的にサブワードを選択する手法です。

語彙サイズの選択

語彙サイズは3万〜10万程度が一般的です。語彙が大きいほど各単語がより少ないトークンで表現されますが、パラメータ数が増加します。モデルの規模と性能のバランスを考慮して決定されます。