モデル・技術

SentencePieceとは?空白がなくても切れる——言語非依存のサブワードトークナイザ

読み:せんてんすぴーす / 英:SentencePiece

更新日: 読了目安:約7分

SentencePieceは、Googleが公開した言語非依存のサブワード・トークナイザ実装です。英語は空白で単語が見える一方、日本語は単語境界が空白に現れない——SentencePieceはテキストを生の文字列として扱い、言語ごとの前処理ルールに頼らず同じ仕組みで語彙を学習します。本記事はアルゴリズムの数式より、「なぜLLMは形態素解析の前にトークナイザを通すのか」に焦点を当てます。

試験で問われる見方

SentencePiece単独の過去問は少ない一方、辞典の定義は「言語非依存のサブワードトークナイザ実装」です。試験ではトークンの意味(TF-0156)、形態素解析との区別G-022)、サブワード思想G-347)を土台に整理します。

誤答では、SentencePiece=形態素解析(G-022)、SentencePiece=BPEそのものSentencePiece=BERTモデルなどのすり替えに注意します。

言語非依存の意味

多くの英語向けトークナイザは、空白で単語を分けてから語彙を学習します。しかし日本語・中国語・タイ語などは、単語間に空白がないため、言語ごとに別の前処理(形態素解析など)が必要になりがちでした。

SentencePieceは、入力をUnicodeの生テキストとして扱い、空白の有無に依存しない設計です。「言語非依存」とは、日本語用・英語用で別ツールを用意しなくてよい——という実務上のメリットを指します。

  • 従来の課題 — 言語ごとに分かち書き・形態素解析が前提
  • SentencePiece — 生テキストから直接サブワード語彙を学習
  • 試験向け — 形態素解析(G-022)とは別の段階・別の目的

サブワード語彙を学ぶ

SentencePieceの出力はトークン——LLMが実際に処理する単位です。語彙は「単語の丸ごと一覧」ではなく、サブワード(語の一部・文字のまとまり)の組み合わせで構成されます。

性質説明試験向け
未知語への強さ未登録語もサブワードで表現語彙爆発を抑える
語彙サイズ学習時に上限を設定(例: 32k)モデル規模とトレードオフ
特殊記号文頭・文末などの境界記号を付与系列の区切りを明示

G-347のfastTextが「文字n-gramで部分語情報を使う」と説明されるのと同様、語の内部構造を活かす思想の一族です。fastTextは単語埋め込み、SentencePieceはトークン化——役割は異なります。

BPEとの関係

混同しやすいのが、BPE(Byte Pair Encoding)との関係です。整理は次のとおりです。

用語何か例え
BPE頻出ペアを統合する手法「レシピ」
SentencePiece語彙学習・トークン化の実装「キッチン器具」
ユニグラム LM別の語彙学習方式(SentencePieceでも選択可)別レシピを同じ器具で

SentencePieceは内部でBPE方式ユニグラム言語モデル方式を選べます。「BPE=SentencePiece」と答えるのは不正確——手法と実装を分けるのが試験の得点ポイントです。

GPT系列のTokenizerもBPE系が多いですが、実装ライブラリはモデルごとに異なります。SentencePieceはT5LLaMAなどで広く使われた代表例として名前が出ます。

形態素解析との違い

観点形態素解析(MeCab等)SentencePiece
目的意味単位への分割+品詞推定LLM向けトークン列の生成
出力形態素+品詞タグ整数IDのトークン列
言語日本語向け辞書・ルールが典型言語非依存
試験G-022(NLP前処理)LLMのTokenizer段階

G-022では、形態素解析は「文章を意味を持つ最小単位に近い形態素へ分割する処理」と定義されます。SentencePieceは品詞を推定せず、モデル学習に最適なサブワード単位をデータから学ぶ——NLP前処理の「古典」とLLM前処理の「現代」は、別レイヤーとして押さえます。

LLMパイプラインでの位置

テキストがTransformerに入るまでの流れを、試験向けに簡略化すると次のとおりです。

  1. 生テキスト — ユーザー入力・コーパス
  2. トークナイズ — SentencePieceなどでトークン列へ変換
  3. 埋め込み — 各トークンをベクトル化
  4. TransformerAttentionでトークン間の関係を学習(TF-0153)
  5. 出力 — 次トークン予測(TF-0178

学習時の教師強制G-244)も、正解トークンを次の入力として渡す——つまり、すべての系列処理はトークン単位で進みます。SentencePieceは、その入口で「どう切るか」を決める部品です。

すり替えに注意

誤った説明正しい理解
SentencePiece=形態素解析サブワードトークナイザ vs 品詞付き分割(G-022)
SentencePiece=BPE実装・ライブラリ vs ペア統合の手法
SentencePiece=トークン分割器 vs 分割後の単位
SentencePiece=BERT前処理ツール vs 言語モデル
SentencePiece=BoW系列トークン化 vs 文書ベクトル表現
日本語は必ずMeCabが先LLMではトークナイザ単独で十分なことも

よくある質問

SentencePieceは何をするツールですか?

テキストをLLMが扱えるトークン列に分割するための、言語非依存のサブワードトークナイザ実装です。コーパスから語彙を学習し、未知語や複合語をサブワードの組み合わせで表現します。T5やLLaMAなど多くのモデルで採用されています。

SentencePieceとBPEは同じですか?

同じではありません。BPEは頻出ペアを統合して語彙を構築するトークン化の手法です。SentencePieceはトークナイザの実装・ライブラリで、内部にBPEやユニグラム言語モデルなどの方式を選べます。手法と実装を分けて整理します。

SentencePieceと形態素解析は同じですか?

いいえ。形態素解析は文章を意味を持つ形態素へ分割し品詞などを推定するNLPの前処理です。SentencePieceはLLM向けにサブワード単位で語彙を学習するトークナイザであり、品詞推定や文法情報は目的に含みません。