本文系统梳理三种基于pipeline的经典中文文本纠错系统:TM+LMM、LMPS 和 ACE,帮助读者深入理解各自的运行机制、处理流程及适用场景。
1 简介
传统的中文文本纠错系统大多采用pipeline架构,将分词、错误检测、错误纠正等模块依次串联,并常在流程中嵌入规则模块,形成类似生产流水线的执行链路。这种设计直观易懂,便于人工介入排查问题和针对性优化。然而,一旦前置环节出现错误,后续模块难以弥补;任意一个模块的偏差都会拖累整体纠错效果。同时,各个子模块独立训练与调优,局部优化未必能带来系统全局性能的提升。
2 TM+LMM
这是早期较有代表性的中文文本纠错系统,该系统融合了规则模板与统计模型,显著降低了同期纠错系统误报率偏高的问题。TM+LMM中的TM指规则模板(template module),LMM指统计模型(translate module)。
构建该中文纠错系统需提前准备以下资源:
- a) 混淆集,为疑似错别字提供候选字符。该系统为5401个中文字符分别建立了混淆集,每个汉字对应1~20个候选字符(即可能被误写为该字的其他字符),涵盖读音相似和字形相似两类。混淆集中的候选按谷歌搜索频次排序,便于后续纠正模块按优先级尝试。
- b) n-gram语言模型,用于评估字符序列的正确性。n-gram语言模型通过最大似然估计从训练语料中学习得到——语料中某字符组合共现频率越高,对应n-gram得分越大。这些得分可衡量句子的合理程度:若句子所有n-gram得分均较高,则句子大概率正确;反之,若n-gram得分普遍偏低,则句子很可能存在错别字。句子总分与各n-gram得分正相关,与句子长度负相关。该系统使用1-gram和2-gram信息。

图1:2gram得分计算
- c) 统计翻译模型,可视为n-gram语言模型的增强版。它能计算将字符A替换为字符B的条件概率。
TM+LMM的处理流程如下:

图2: TM+LMM框架
- a) 分词模块,将句子切分为以词语为基本单位的序列。其中被切分为单字的片段会被格外关注——系统认为这些位置更可能出现错误。原因在于:错误字符通常导致语法或语义不连贯,分词时易被孤立为单字。
- b) 规则模块,检索第一步中疑似错误位置的混淆集,依次用混淆集中的候选字符替换当前字符。若替换结果匹配系统预设的规则模板,则执行替换;否则保持原样。这就是规则模板的作用:命中规则则替换,反之不操作。
- c) 翻译模块,同样获取第一步疑似错误位置的混淆集,用候选字符替换后,通过2-gram语言模型和翻译模型计算组合得分,两者相乘得到困惑度分数(公式如下图,p(S)为经平滑后的2-gram语言模型与翻译模型乘积得分,N为句子长度),最终选择困惑度最小的候选字符作为替换结果。换言之,正确字符对应的语言模型和翻译模型乘积得分更高,困惑度更低。

图3: 困惑度计算公式
- d) 输出模块,汇总规则模块与翻译模块的纠错结果,可选择取交集或并集作为最终输出。
