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 句的处理速度,内存占用小。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目