Unigram分词算法:概念、原理与应用

作者:Nicky2026.11.03 19:35浏览量:0

简介:本文系统介绍Unigram分词算法的核心概念与工作原理,帮助读者理解其基于概率模型的子词切分思路、训练流程与工程实现要点,并对比其与BPE、WordPiece等常见分词方案的差异,为自然语言处理中的分词选型与落地实践提供参考。

Unigram分词算法:概念、原理与应用

一、它是什么

Unigram分词算法是一类基于概率模型的子词(subword)切分方法,用于将原始文本拆分为词表中的语义单元序列。与基于合并规则的自底向上方法不同,Unigram采用自顶向下的思路:先假定一个足够大的候选词表,再通过统计评估不断裁剪词表,最终得到一个在语料上似然最优的子词集合,并据此对文本进行切分。

从技术视角看,Unigram将分词视为一个概率生成过程:给定一个句子,其生成概率等于该句子所有可能切分方式中概率最大者的概率,而每种切分的概率由各子词单元概率的乘积决定。从使用视角看,它输出的是一个确定性的切分结果,可直接作为模型输入。从业务视角看,它解决的是”词表规模”与”未登录词覆盖”之间的矛盾——既控制词表大小,又能灵活表示罕见词与新词。

二、为什么需要它

传统按词切分面临两个困境:词表过大会导致参数膨胀与稀疏性问题,词表过小则无法覆盖新词、专有名词和形态变化丰富的语言。子词分词通过将词拆分为更小的可复用单元,在词表规模与表达能力之间取得平衡。Unigram在这一思路下的独特价值在于:

  • 概率化的切分依据:每个子词带有概率,切分结果有明确的统计解释,而非仅依赖频次或贪心合并;
  • 可裁剪的词表构建:从大候选集出发逐步删减,使最终词表更贴合语料的实际分布;
  • 对多语言与形态丰富语言友好:子词单元可跨词复用,缓解未登录词问题。

三、核心组成与工作原理

Unigram分词算法的完整流程可分为四个阶段。

1. 候选词表初始化

从语料中统计高频子串,构造一个规模较大的初始词表,通常包含所有单字符以及若干高频多字符片段。单字符的存在保证了任何文本都可被切分,避免出现无法表示的字符。

2. 子词概率估计

采用期望最大化(EM)思路估计每个子词的概率:

  • E步:在当前词表与概率下,对每条训练句子计算所有可能切分的概率,并求出各子词在最优切分中的期望出现次数;
  • M步:用期望频次重新估计各子词概率,使其满足归一化约束。

如此迭代,直至概率收敛。

3. 词表裁剪

词表裁剪是Unigram的关键步骤。对每个子词计算其”移除损失”:若将该子词从词表中删除,语料总似然下降多少。损失较小的子词被视为冗余,优先删除。按损失排序后删除固定比例的子词,再重新估计概率并重复裁剪,直至词表规模达到目标值。

示意性伪代码如下:

  1. 初始化大词表 V
  2. 循环:
  3. 用 EM 估计 V 中各子词概率 p
  4. 对 V 中每个子词 t:
  5. loss(t) = 移除 t 后语料总似然的下降量
  6. 按 loss 升序排序,删除前 k% 的子词
  7. 若 |V| <= 目标规模: 结束
  8. 输出 V 及概率 p

4. 推理切分

推理时,对输入文本枚举所有可能切分,选择概率乘积最大的方案。工程上通常采用动态规划(如维特比算法)求解,将指数级枚举降为线性复杂度:

  1. best[i] = max over j < i of ( best[j] * p(text[j:i]) )

其中 best[i] 表示前 i 个字符的最优切分概率,p 为子词概率。对于未登录片段,可回退到单字符切分,保证鲁棒性。

四、典型应用场景

  • 大规模预训练语言模型的输入处理:在词表规模受限的前提下覆盖多语言语料;
  • 多语言与低资源语言处理:子词复用降低了对每种语言独立词表的依赖;
  • 形态丰富语言:如黏着语中大量词形变化可被拆解为可复用子词;
  • 搜索与文本检索的查询归一化:将查询与文档映射到一致子词空间,提升匹配召回;
  • 部署在云上的推理服务:分词作为预处理环节,可与容器平台、负载均衡、日志与监控等通用云能力配合,构建稳定的文本处理流水线。

五、与相关概念的区别

  • 与BPE的区别:BPE是自底向上的合并方法,从字符开始按频次合并;Unigram是自顶向下的裁剪方法,从大词表出发按似然删除。BPE更依赖合并顺序,Unigram更依赖概率模型。
  • 与WordPiece的区别:WordPiece同样自底向上合并,但其合并准则基于语言模型似然增益而非纯频次;Unigram则在词表构建后以概率最大化选择切分,二者在目标函数与流程上不同。
  • 与按词分词的区别:按词分词词表固定、未登录词处理弱;Unigram以子词为单位,具备更强的泛化能力。

六、使用注意事项

  • 词表规模需权衡:过小导致切分过碎、序列变长;过大削弱子词复用优势,增加嵌入参数。
  • 语料代表性:概率估计依赖训练语料分布,领域偏移时切分质量可能下降,建议在目标领域语料上重新训练或微调。
  • 特殊符号与空白处理:需明确空格、标点、数字的切分策略,避免影响下游任务。
  • 推理性能:动态规划实现需注意长文本的复杂度控制,可通过缓存子词概率、限制候选长度优化。
  • 一致性:训练与推理必须使用同一词表与概率,版本管理不可忽视。

七、总结

Unigram分词算法是一种以概率模型为核心、通过”大候选词表—EM估计—似然裁剪—动态规划切分”流程实现的子词分词方法。其核心价值在于用统计化的方式平衡词表规模与表达能力,适用于多语言、形态丰富及需要稳定预处理的文本场景。理解其概率假设与裁剪机制,有助于在分词方案选型时做出更合理的判断。