SentencePiece(Googleトークナイザー)(センテンスピースグーグルトークナイザー)
Googleが開発した言語非依存のサブワードトークナイザーライブラリ。BPEとUnigram Language Modelの両アルゴリズムを実装し、事前の単語分割(スペース依存)なしに生テキストから直接トークン化できる。T5・Gemma・LLaMA/Mistral等で採用。
SentencePiece(Googleトークナイザー)
SentencePieceはGoogleのKudo & Richardsonが2018年に発表したオープンソースのサブワードトークナイザー実装。既存のトークナイザーが「スペースで分割された単語」を入力として想定していたのに対し、SentencePieceは生テキストを直接入力として受け取り、言語固有の前処理(形態素解析等)を必要としない設計を採用した。
主要な特徴
- 言語非依存設計: 日本語・中国語・アラビア語等のスペースなし言語でも前処理不要
- スペースのトークン化: スペース自体を特殊記号(▁)として語頭に付与し、デトークナイズを可逆に
- BPEとUnigram両対応: 同一ライブラリで両アルゴリズムを切り替え可能
- C++/Python: 高速なC++コアにPythonラッパー提供
- 完全再現性: 同じモデルファイルから完全に同一のトークン化を保証
BPEとUnigram LMの選択
| 特性 | BPE | Unigram LM |
|---|---|---|
| 学習方向 | ボトムアップ(結合) | トップダウン(除去) |
| 語彙構築 | 決定的 | 確率的 |
| 正則化 | なし | サブワードサンプリング可 |
| 使用例 | LLaMA-2/Mistral | T5/XLNet/mBART |
サブワードサンプリング: Unigramモードでは学習時に複数のサブワード分割をサンプリングすることでデータ拡張効果が得られ、低リソース言語での性能が向上する。
主要モデルでの採用状況
T5/T5-XXL(Google): SentencePiece Unigram、32,000 vocab。LLaMA-2/Code Llama: SentencePiece BPE、32,000 vocab。Mistral-7B/Mixtral: SentencePiece BPE、32,000 vocab(LLaMA-2互換)。Gemma-2(Google): SentencePiece BPE、256,000 vocab。mT5/mBART(多言語): SentencePiece Unigram、250,000 vocab。
日本語処理での重要性
日本語は単語間にスペースがないため、従来のトークナイザーは形態素解析(MeCab/KNP)が前提だった。SentencePieceは文字レベルから直接学習するため、形態素解析に依存せず日本語・中国語・韓国語を統一的に処理できる。ただしLLaMA-2の32,000 vocabは日本語に対して語彙が少なく、日本語テキストを英語の3〜5倍のトークン数で表現する問題がある。LLaMA-3やGemma-2のように大きな語彙サイズへの移行はこの問題への対策でもある。