google/sentencepiece

Unsupervised text tokenizer for Neural Network-based text generation.

何を解決するか

SentencePieceは、大規模言語モデルなどのニューラルネットワークベースのテキスト生成システムに使用するための、高速で言語に依存しない方法で、生テキストをサブワード単位(トークン)に変換します。言語固有の前処理やプリトークナイザーの必要性を排除しており、中国語、日本語、タイ語のように単語境界が明確でない言語において特に有用です。

動作方法

入力テキストをUnicode文字の連続として扱い、Byte-Pair-Encoding (BPE) やユニグラム言語モデルなどのサブワードアルゴリズムを実装しています。デトークナイズが損失なしで逆変換可能になるように、空白文字を特別なメタ記号()に置き換えます。システムは高性能を実現するため、最適化されたC++で記述されており、すべての語彙マッピングと正規化ルールを含む自己完結型の.modelファイルを生成します。

対象ユーザー

LLMやその他のニューラルテキスト生成システムを構築する開発者や研究者向けです。訓練前に固定された語彙サイズが必要な場合に最適です。

特徴

  • 損失なしのデトークナイズ: 空白を記号として扱うため、トークンをテキストに戻す操作は単純な文字列結合で実現できます。
  • 言語に依存しない: MeCab や Moses などの外部プリトークナイザーを必要とせず、生の文から直接学習できます。
  • サブワード正則化: BPE-Dropout やユニグラムサンプリングなど、実行時にサンプリングを行うことで、モデルのノイズや綴りの違いに対する耐性を高めます。
  • 高パフォーマンス: 最適化されたC++実装により、約50,000文/秒の処理速度を達成し、メモリ使用量も小さいです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト