google/sentencepiece

Unsupervised text tokenizer for Neural Network-based text generation.

解決的問題

SentencePiece 提供了一種快速、語言無關的方式,將原始文字轉換為子詞單位(標記),用於基於神經網絡的文本生成系統,例如大型語言模型。它消除了對語言特定預處理或預分詞器的需求,尤其適用於中文、日文和泰文等沒有明確詞邊界的語言。

工作原理

它將輸入文字視為原始的 Unicode 字符序列,並實現 BPE(位元組對編碼)和 unigram 語言模型等子詞演算法。為了確保反分詞是無損且可逆的,它用特殊元符號()取代空白。該系統使用優化過的 C++ 寫成,性能高,並產生一個包含所有詞彙對應與正規化規則的自包含 .model 檔案。

適用對象

專為需要在訓練前具有固定詞彙量的 LLM 或其他神經文本生成系統開發的開發者與研究人員設計。

主要亮點

  • 無損反分詞:將空白視為符號,使得將標記還原為文字的操作僅需簡單的字串串接。
  • 語言無關:可直接從原始句子訓練,無需依賴 MeCab 或 Moses 等外部預分詞器。
  • 子詞正則化:支援即時採樣(BPE-Dropout 和 Unigram 採樣),使模型對雜訊與拼字變異更具韌性。
  • 高效率:優化過的 C++ 實作,可達每秒約 50,000 句的處理速度,記憶體佔用小。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案