1. Unigram分词算法概述
在自然语言处理领域,子词(subword)分词算法是连接字符级和词级表示的重要桥梁。Unigram分词算法以其独特的"剪枝"策略和概率模型框架,在BERT、T5等主流预训练模型中得到了广泛应用。
与常见的BPE(Byte Pair Encoding)和WordPiece算法不同,Unigram采用了一种逆向思维:不是从零开始构建词表,而是从一个庞大的候选词表出发,通过迭代裁剪的方式逐步优化。这种思路反转带来了几个关键优势:
- 概率模型完整性:每个子词都有明确的概率值,任何切分方式都可以计算其出现概率
- 全局最优切分:通过动态规划算法可以找到概率最大的切分方式
- 多切分可能性:同一文本可以保留多种合法的切分方式
这种概率框架使得Unigram成为三种主流子词算法中理论最为自洽的一种。在实际应用中,Unigram分词器通常通过SentencePiece工具库实现,支持包括中文在内的多种语言处理。
值得注意的是,Unigram虽然理论优美,但在当前大语言模型(LLM)时代,BPE因其实现简单、确定性强的特点成为了更主流的选择。这种工程实践与理论完美的权衡,在技术演进过程中并不罕见。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心算法原理
2.1 与BPE/WordPiece的对比
理解Unigram的独特之处,最好的方式是与主流算法进行对比:
BPE算法:
- 初始词表:256个字节
- 构建方式:迭代合并最高频的字符对
- 编码策略:按合并规则顺序重放
WordPiece算法:
- 初始词表:基础字符集
- 构建方式:迭代合并互信息(PMI)最高的字符对
- 编码策略:贪心最长匹配
Unigram算法:
- 初始词表:大规模候选子词集合(通常10万+)
- 构建方式:迭代删除对语料似然影响最小的子词
- 编码策略:Viterbi动态规划寻找全局最优切分
这三种算法代表了子词分词的不同哲学。BPE和WordPiece都是"自底向上"的构建过程,而Unigram则是"自顶向下"的裁剪过程。这种方向性的差异导致了它们在理论性质和实际表现上的诸多不同。
2.2 概率模型基础
Unigram算法的核心是建立在一元语言模型(unigram language mode
