AI・機械学習
初級

サブワード分割(サブワードブンカツ)

サブワード分割(Subword Segmentation)は、テキストを単語よりも細かいサブワード単位に分割するNLP技術の総称で、BPE・WordPiece・Unigram LM・SentencePieceなどのアルゴリズムがある。未知語問題の解消と語彙サイズの抑制を両立し、GPT-4o・Llama 3・Gemma 2など全ての現代LLMが採用している基盤技術である。

0 回閲覧
0 いいね

サブワード分割とは

サブワード分割(Subword Segmentation)は、テキストを単語単位でもなく文字単位でもなく、その中間の「サブワード」単位に分割する自然言語処理の基盤技術である。GPT-4o、Claude 3.5 Sonnet、Llama 3.1、Gemma 2、Qwen 2.5、Mistral Largeなど、2026年現在の全ての主要LLMがサブワード分割をテキスト処理の前処理として採用している。

概要

自然言語処理において、テキストをどの粒度で分割するかは根本的な設計選択である。歴史的に3つのアプローチが存在する:

  1. 単語分割: 空白・句読点で区切る(英語向き)。語彙サイズが膨大(英語だけで数十万単語)になり、未知語(OOV: Out-of-Vocabulary)問題が発生する
  2. 文字分割: 1文字ずつ分割する。語彙サイズは小さい(英語26文字+記号)が、シーケンスが極端に長くなりTransformerの計算量O(n²)が爆発する
  3. サブワード分割: 頻出文字列パターンをまとめた「サブワード」単位で分割。語彙サイズとシーケンス長のバランスを取る

サブワード分割は2016年にSennrichらがBPEをニューラル機械翻訳に適用して以降、NLPの標準的な前処理となった。

主要サブワード分割アルゴリズムの比較

アルゴリズム提案年分割方式代表的なモデル特徴
BPE2016 (NLP適用)ボトムアップ(マージ)GPT-4o, Llama 3, Mistral頻度ベースの貪欲マージ、高速
WordPiece2016ボトムアップ(マージ)BERT, DistilBERT, ELECTRA尤度ベースのマージ、##プレフィックス
Unigram LM2018トップダウン(削減)T5, mBART, Gemma 2, ALBERT確率モデルによる最適分割選択
SentencePiece2018BPE or UnigramLlama 2, mT5, XLM-R言語非依存、空白を▁で表現

サブワード分割の仕組み

サブワード分割の基本的な考え方は「よく使われる文字列パターンはまとめて1トークンにする」である。

BPEによるサブワード分割の例

入力テキスト「unhappiness」をBPEで分割する場合:

  1. 初期状態(文字分割): u n h a p p i n e s s
  2. 学習済みマージルール適用:
    • p + p → pp
    • h + a → ha
    • ha + pp → happ
    • i + n → in
    • n + e → ne
    • ne + ss → ness
    • in + ess → iness
    • happ + iness → happiness
    • un + happiness → unhappiness(語彙に存在する場合)
  3. 最終分割: un happiness または un happi ness(語彙サイズに依存)

頻出語「the」「and」「of」は単一トークンとなり、低頻出語「pneumonoultramicroscopicsilicovolcanoconiosis」は細かいサブワードに分割される。この適応的な粒度調整がサブワード分割の強みである。

日本語のサブワード分割

日本語テキスト「自然言語処理」のサブワード分割例:

  • GPT-4o (o200k_base): 自然 言語 処理(3トークン)
  • Llama 3: 自然 言 語 処理(4トークン)
  • Mistral: 自 然 言 語 処 理(6トークン)
  • Qwen 2.5: 自然言語処理(1トークン)

語彙テーブルに日本語の漢字熟語がどれだけ含まれているかで、日本語テキストのトークン効率が大きく変わる。

サブワード分割が解決する問題

未知語(OOV)問題の解消

単語レベルの辞書では、学習データに含まれない新語(「ChatGPT」「VisionPro」など)が出現すると[UNK](未知トークン)に置換され、情報が失われる。サブワード分割では任意の文字列をサブワード(最悪の場合は文字・バイト単位)に分解して表現できるため、OOVが発生しない。

形態素の共有

「play」「playing」「played」「player」は単語辞書では4つの別エントリだが、サブワード分割では「play」「ing」「ed」「er」の組み合わせで表現される。これにより語彙サイズを抑えつつ、「play」の意味的な共通性をモデルが学習しやすくなる。

語彙サイズの制御

単語レベルの英語辞書は20〜50万エントリが必要だが、BPEサブワードでは32K〜256Kエントリで全テキストをカバーできる。語彙サイズの削減は埋め込み層のパラメータ数削減に直結し、モデルのメモリ効率を高める。

サブワード分割の課題と限界

  • 言語間不公平: 英語1単語が1トークンで済む場合でも、日本語の同義語は3〜6トークンを消費する。API課金がトークン数ベースのため、非英語ユーザーのコストが相対的に高くなる
  • 意味境界との不一致: BPEは頻度ベースでマージするため、意味的な形態素境界と一致しない分割が発生する(例:「unfortunately」→ un fort un ately のような非直感的分割)
  • 数値の分割: 「1234567」が 123 45 67 のように分割されると、数値の大きさの理解が困難になる
  • トークナイザー依存性: モデルとトークナイザーは不可分で、異なるトークナイザーを持つモデル間でのtransfer learningが困難

よくある質問(FAQ)

Q1: サブワード分割と形態素解析は何が違いますか? A: 形態素解析は言語学的な知識に基づいて意味のある最小単位(形態素)に分割する手法で、MeCabやJumanなどのツールが代表的です。サブワード分割はコーパスの統計情報のみに基づいて分割する言語非依存の手法で、必ずしも意味のある単位にはなりません。LLMでは言語非依存性と実装の簡便さからサブワード分割が標準です。

Q2: なぜ文字単位の分割ではダメなのですか? A: 文字単位で分割するとシーケンス長が極端に長くなります。例えば「The quick brown fox」は文字分割で19トークン、BPEでは4トークンです。Transformerの自己注意機構はO(n²)の計算量を持つため、シーケンスが5倍長くなると計算量は25倍に増加します。128Kコンテキストのモデルでは文字分割は非現実的です。

Q3: サブワード分割のアルゴリズムはどれを選べばよいですか? A: 2026年現在、BPE(特にバイトレベルBPE)が最も安全な選択です。GPT-4o・Llama 3・Mistralが採用しており、tiktokenやHuggingFace Tokenizersの成熟したツールチェーンがあります。多言語性能を重視する場合はSentencePiece Unigram(Gemma 2方式)も有力な選択肢です。

まとめ

  • サブワード分割は単語分割と文字分割の中間で、語彙サイズとシーケンス長のバランスを取る基盤技術
  • BPE・WordPiece・Unigram LM・SentencePieceの4つが主要アルゴリズム
  • 2026年の全ての主要LLM(GPT-4o、Claude、Llama 3、Gemma 2等)がサブワード分割を採用
  • 未知語問題の解消・形態素の共有・語彙サイズの制御という3つの利点を同時に実現
  • 日本語トークン効率はモデルごとに0.9〜2.5トークン/文字と大きく異なる