機械学習自然言語処理

BPE

びーぴーいー · Byte Pair Encoding
2 views

BPE(Byte Pair Encoding)とは、テキストを頻出する文字列単位で分割・統合して語彙を構築するサブワード分割アルゴリズムです。元々はデータ圧縮技術でしたが、自然言語処理において語彙数を抑えつつ未知語の発生を防ぐトークナイザーの手法として広く活用されています。

BPEとは

BPEは、頻出する文字の並びを段階的に結合していくことで、効率的なトークン単位を構築するサブワード分割アルゴリズムです。

詳しく解説

元々はデータ圧縮アルゴリズムとして開発されましたが、自然言語処理の前処理手法として応用されました。BPEはまずテキストを個別の文字単位(またはバイト単位)に分解し、コーパス内で最も出現頻度が高い隣接する文字ペアを繰り返し結合して新しいトークンとして辞書に登録していきます。このプロセスを事前に設定した語彙サイズに達するまで繰り返すことで、よく使われる単語は1つのトークンとして、出現頻度が低い単語は細かいサブワードに分解して表現できるようになります。これにより、辞書の肥大化を防ぎながら未知語(OOV: Out-of-Vocabulary)の発生を最小限に抑えることが可能です。現代の大規模言語モデルの多くがテキスト入力の前処理にBPEまたはその派生形を採用しています。

具体例・使われ方

例えば、「low」「lower」「newest」「widest」という単語群がある場合、初期状態では「l, o, w」「l, o, w, e, r」「n, e, w, e, s, t」「w, i, d, e, s, t」のように文字単位で分解されます。ここで「e」と「s」、「es」と「t」が頻出すれば「est」というまとまりが作られ、「low」という頻出単語も1つの単位になります。結果として「lowest」という未知の単語が現れた場合でも、「low」と「est」という既知のパーツの組み合わせとして認識できます。GPTシリーズなどの大規模言語モデルにおけるトークナイザーでも、バイト単位でこの処理を行うByte-level BPEが利用されています。

似た用語との違い

形態素解析や単語単位の分割では未知語に対応しにくく、文字単位の分割では系列長が長くなりすぎる欠点があります。サブワード分割手法の仲間にはWordPieceやUnigramなどがありますが、BPEが「頻出ペアを貪欲に結合していく」ボトムアップ方式であるのに対し、WordPieceは言語モデルの尤度を最大化するように結合ペアを選び、Unigramは大きな語彙から不要なトークンを削っていくトップダウン方式を採用している点が異なります。

注意点

BPEは統計的な出現頻度に基づいて機械的に文字列を結合するため、言語学的な形態素や文法構造と完全に一致した分割になるとは限りません。また、学習に用いたコーパスに偏りがあると、珍しい結合パターンが登録されたり、多言語処理時に特定言語のトークン分割効率が低下したりする場合があります。

更新日時: 2026年9月3日 19:31