SentencePiece

分类: NLP基础

SentencePiece

定义

SentencePiece 是 Google 开源的一种与语言无关的子词分词工具,直接在原始文本(Unicode 字符序列)上训练分词模型,无需预分词(pre-tokenization),支持 BPE 和 Unigram 两种算法,被 T5、LLaMA、ALBERT 等主流模型广泛采用

核心要点

与语言无关:不依赖空格分词或语言特定规则,将空格视为普通字符(用 ”▁” 前缀表示词边界),适用于中文、日文等无空格语言

两种核心算法

  • BPE(Byte Pair Encoding):自底向上,反复合并频率最高的字符对,直到词表大小达标
  • Unigram Language Model:自顶向下,从大词表开始,逐步删除对似然影响最小的子词

端到端分词:输入原始句子,直接输出 subword 序列——不需要 Moses tokenizer、NLTK 等预处理

可逆性:分词结果可以无损还原为原始文本(空格用 ”▁” 编码)

词表大小控制:通过 vocab_size 参数精确控制词表大小(常见设置:32K-64K)

与 BPE 的关系:BPE 最早由 Sennrich et al. (2016) 引入 NMT,SentencePiece 是其工程化实现并增加了 Unigram 方法

CS224N 在讲 Tokenization 时的核心工具

代表工作

SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing (Kudo & Richardson, 2018)

BPE for NMT: Neural Machine Translation of Rare Words with Subword Units (Sennrich et al., 2016)

相关概念

Word Embedding

Machine Translation