0%

Tokenization:SentencePiece 原理

Tokenization:SentencePiece 原理

一句话定位:SentencePiece 把 tokenization 做成”端到端、语言无关”的组件——不依赖预分词、直接吃原始文本,并提供 Unigram 语言模型式的概率化切分,是中日韩等无空格语言的标准选择。

1. 无需预分词,直接在原始文本上训练

  • 传统 BPE 流程假设文本已按空格预分词,这带来两个问题:依赖语言特定的分词器;对无空格语言(中文、日文、韩文、泰文)根本不适用。
  • SentencePiece 把空格本身编码为普通字符(用 表示),于是整个句子就是一个字符流,切分完全由算法学习决定。
  • 直接收益:
    • 语言无关:同一套流程适配任意语言,天然适配中日韩;
    • 完全可逆(lossless):解码时把 还原为空格即可精确还原原文,不丢失空白信息;
    • 训练与推理端一致,无需外挂分词器。

2. Unigram 语言模型式的概率化切分

除支持 BPE 外,SentencePiece 提供 Unigram LM 算法:

  • 假设每个子词独立出现,各有概率 p(x);一个切分方案的概率为其所有子词概率之积;
  • 训练时从一个较大的候选子词集出发,用 EM 算法迭代估计各子词概率,并逐步剪枝掉对总体似然贡献最小的子词,直到词表达到目标大小(注意方向与 BPE 相反:BPE 自底向上合并,Unigram 自顶向下裁剪);
  • 编码时用 Viterbi 算法概率最大的切分路径,即全局最优切分;还支持按概率采样多种切分(subword regularization),可作为数据增强提升鲁棒性。

3. 对比 BPE:概率最优 vs 频率贪心

这是面试的关键落点,一句话概括:

Unigram 是概率最优切分,BPE 是频率贪心合并。

维度 BPE Unigram (SentencePiece)
建词表方向 自底向上,贪心合并高频对 自顶向下,按似然剪枝
切分依据 固定的合并规则顺序(贪心、确定性) 全局概率最大路径(Viterbi)
多切分支持 单一切分 可按概率采样多切分(正则化)
预分词 通常需要 不需要

BPE 的贪心可能得到局部最优切分;Unigram 在给定词表下求全局最优,理论上更合理,但训练成本更高。

参考:论文《SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing》(Kudo & Richardson, 2018);SentencePiece 官方 GitHub 文档