作者|徐婧扬,单位:中国移动智慧家庭运营中心
Labs 导读
中文文本纠错是针对中文文本拼写错误等进行检测与纠正的一项工作,是自然语言处理的重要应用领域之一。中文文本纠错的应用场景很多,诸如在搜索引擎,问答/对话系统,输入法等领域作为一个前置模块,或作为OCR和ASR检测的后置模块,亦或是公文写作场景,辅助进行公文审阅校对,纠错的质量对后续的处理非常重要。
Part 01 中文错别字类型有哪
我们把常见的中文错别字总结分为三类:
- 拼写错误,由于输入法,音转软件等原因导致的用字/词错误,其主要表现为错误使用了同音字,形近字等,也是纠错领域当前研究比较集中的方向;
- 语法错误,该类错误主要是由于疏忽或对语言运用不熟悉导致的,如字词缺失、冗余、乱序等,其错误片段相对较大,目前也有一些针对简单句法错误的研究;
- 语义错误,该类错误可能由于对某些知识不了解或组织语言能力欠缺等导致,要解决该类问题,通常需要引入外部知识、常识等,当前涉及这部分的研究也比较少。
表1
整体处理难度上:拼写错误 < 语法错误 < 语义错误。
Part 02 智能文本纠错的框架
文本纠错常见思路分为两种:一种是多模型pipeline方法,一种是端到端的方法。
2.1 多模型pipeline方法
把纠错任务分解为错误检测→候选召回→打分排序三个关键步骤,如图1,每个模型解决具体的特定问题,然后通过Pipeline的方式串联,得到最后结果。这种方法的优点是方便针对各个步骤进行重点突破和优化,但也存在明显的缺点是错误会逐级传递,比如,在检测模块识别了非错别字的位置,那么纠错模块针对该位置的纠正也一定是不正确的。
图1
检错模块
检错模块的主要目标是错误识别,识别并定位出文本中的错误字/词位置,若存在则将错误向后传递。
候选召回
候选召回阶段针对检错模块识别到的错误点,结合历史错误信息,以及近音、近形等特征形成纠错候选集合。
纠错模块
纠错模块主要解决候选集合的排序问题,由于纠错的正确结果具有唯一性,该模块的任务是将正确的结果排在第一位。
2.2 端到端的方法
此方法是直接建模原始“错误句子”到修正后的“正确句子”的处理过程,一般这个过程类似于机器翻译任务,如图2,即将错误的句子翻译成正确的句子,一般使用seq2seq类深度学习模型。该方法优点是避免人工提取特征,减少人工工作量,缺点是无法控制特定问题点优化对整个流程的影响。
图2 h代表隐藏层,c代表编码器和解码器之间的状态向量
Part 03 智能文本纠错的一些方案
3.1 多模型pipeline方法
检错模块
(1)基于规则:例如,抽取ngram级别的拼音,构建实体词与拼音映射词表,将抽取的拼音映射到实体词,比较和原词是否一致。
(2)基于语言模型:利用bert模型的MLM任务,将当前词用mask符号代替,然后做预测,若真实字不在topk内即为错。
候选召回
(1)基于规则:近音候选词召回、字音编辑距离召回。
(2)基于语言模型:利用语言模型等计算错误词可能的topk正确答案。
纠错模块
(1)粗排序:通过构造的特征来对候选词进行粗打分。特征主要包括:语料频率比值、编辑距离等。
(2)精排序:采用机器学习模型等对候选进行打分,同时在特征工程方面也进行了更精细化地处理。
3.2 端到端的方法
(1)FASPell,爱奇艺发布在EMNLP2019的基于词的中文纠错的方法。
(2)Soft-Masked BERT,字节发表在ACL 2020的中文纠错方法。
(3)MLM-phonetics MLM-phonetics,在soft-masked BERT的基础上做的优化。
(4)Dynamic Connected Networks,哈工大&讯飞发表在ACL2021的方法。
(5)Transformer-NMT,网易有道NLPCC2018冠军方案。
(6)ErnieCSC,百度在ACL 2021上提出结合拼音特征的Softmask策略的纠错方案。
(7)MacBert4csc,MacBERT模型改变网络结构的中文文本纠错模型。
图3 文本纠错检错阶段的标注
Part 04 未来方向与挑战
最后总结一下文本纠错任务的一些挑战和未来方向:
当前的两大方案,pipeline的机制会导致错误逐级放大,同时串联链越长则耗时越长。端到端方案当前缺少足够的标注语料,另外不方便扩展与领域迁移。
文本纠错后续可探索利用知识图谱完善整个纠错任务,或探索融入实体词纠正到模型中,另外该领域还需积累大量的高质量标注样本和混淆集资源。