中文的文本纠错,应用场景很多,诸如输入法纠错、输入预测、ASR 后纠错等等。这边简单梳理下对于这个任务的调研结果。
综述中很多内容参考了 hqc888688 的这篇博客,非常感谢。
中文文本纠错,常见类型包括:
当然,针对确定场景,这些问题并不一定全部存在,比如输入法中需要处理1234,搜索引擎需要处理1234567,ASR 后文本纠错只需要处理12,其中5主要针对五笔或者笔画手写输入等。
paper 上方案大多是基于英文纠错的,但中英文纠错区别还是蛮大的。了解清这些区别,有利于我们进行算法选型和调优工作。
由于中文不存在词边界,一方面导致纠错时必须考虑上下文,另一方面拼写错误也会导致分词结果变化。
这就要求尽量基于字符进行建模,保证召回。
英文拼写错误通常与正确拼写的编辑距离在1-2,且由于英文字符集仅有26个,可以简单地针对字符级别的错误进行建模。可是中文常用字符集约7000。
这就要求具体计算过程中非常注意效率。
英文拼写错误通常为 insert、delete、substitute 和 ,而由于中文字符通常可以单独成词,insert、delete、transposite 则体现在了中文的语法错误,通常的拼写错误主要集中于 transposite。
这就要求距离计算中充分优化超参,以突显某些操作的重要性。
交互环境可以提供大量参考信息,如领域、候选词表、热度词表等。
这就要求要充分利用 session 信息,并提供多级算法。
中文输入纠错的评测数据主要包括 SIGHAN Bake-off 2013/2014/2015 这三个数据集,均是针对繁体字进行的纠错。其中,只有 SIGHAN Bake-off 2013 是针对母语使用者的,而另外两个是针对非母语使用者。
虽然没有公开训练数据,但在明确特定场景下纠错任务的 Features 后,我们很容易根据正确文本,通过增删改构造大量的训练样本。
虽然文本纠错具体会分为错误识别和错误修正两部分,并分别构造评价指标。但考虑到端到端任务,我们评价完整的纠错过程:
通常场景下,差准比查全更重要,FN 更难接受,可构造下述评价指标:
1 F β = 2 P + 1 R \frac{1}{F_\beta}=\frac{2}{P}+\frac{1}{R} Fβ1=P2+R1,其中 P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP, R = T P T P + 2 F N R=\frac{TP}{TP+2FN} R=TP+2FNTP。
中文本纠错的 paper 很多,整体来看,可以统一在一个框架下,即三大步:
错误识别
该阶段主要目的在于,判断文本是否存在错误需要纠正,如果存在则传递到后面两层。
这一阶段可以提高整体流程的效率。
生成纠正候选
该阶段主要目的在于,利用一种或多种策略(规则或模型),生成针对原句的纠正候选。
这一阶段是整体流程召回率的保证,同时也是一个模型的上限。
评价纠正候选
该阶段主要目的在于,在上一阶段基础上,利用某种评分函数或分类器,结合局部乃至全局的特征,针对纠正候选进行排序,最终排序最高(如没有错误识别阶段,则仍需比原句评分更高或评分比值高过阈值,否则认为不需纠错)的纠正候选作为最终纠错结果。
大部分的模型基本上可以划分为这三阶段,大多模型省略第一阶段,认为所有文本都默认需要纠正,部分模型会将三阶段联合建模,在逐个构造候选的同时进行评分和筛选,本质上都属于这个框架。
困惑集,是中文文本纠错任务中较为关键的数据之一,用于存储每个字词可能被混淆的错别字词的可能。困惑集的数据格式是 key-value 格式,key 为中文中的常用字词,value 为该字词可能的错误形式。key 可以仅基于字符,也可以包含词语。通常一个 key 对应多个 value。
错误形式,主要分为两大类,分别是发音混淆或者是形状混淆。形状混淆,通常是五笔输入笔画输入手写输入带来的错误。发音混淆最为常见,可分为相同读音、相同音节不同音调、相似音节相同音调、相似音节不同音调。
困惑集的质量很大程度上决定了中文纠错的上限。
这类方法主要有两种思路:一是过滤掉正确的部分,减少替换的次数;一是对于常见的错误构建模板或词表,遇到之后直接替换,避免替换的产生。
模型生成的纠错候选,基本上可以考虑所有的可能,并且利用其本身的评分函数,可以在生成纠错候选的过程中进行预筛选。
目前效果比较好的方式有 HMM 和 基于图理论 的方法,而利用 SMT 进行生成的效果没有这两种好。
虽然方式比较多,但都可以看做基于贝叶斯的信道噪声模型:
T ^ = a r g m a x p ( S ∣ T ) p ( T ) p ( S ) = a r g m a x p ( S ∣ T ) p ( T ) \hat{T}=argmax{\frac{p(S|T)p(T)}{p(S)}}=argmax{p(S|T)p(T)} T^=argmaxp(S)p(S∣T)p(T)=argmaxp(S∣T)p(T)
可见,生成一个纠错候选的决定因素有两个,一个是候选 T 的语言模型,一个是条件概率模型也称为 error model。不同类型方法的主要区别就在于错误模型。如果只考虑替换错误,从而理解为一个对齐之后的字符错误模型。
自动机可以实现高效的字符匹配过程。其中,Levenshtein自动机通过构建一个有限状态自动机,可以准确识别出和某个目标单词相距在给定编辑距离内的所有字符串集合。
这可以实现快速的候选生成,作为困惑集的补充。
在纠错时,除了 Ngram 信息,还有下述统计信息可以作为特征使用:互信息,共现词,拼音的混淆规则、稳定度、相似度,N-gram 距离(Solr 在用方案)。
影响纠错效果的主要因素有如下几点:
从模型选择上,SMT 更适合用于评分阶段,图模型是一个比较好的分词同纠错一起完成的模型,SVM也是评分阶段的常用手段。
下面,以语音控制系统 ASR 产生的的中文文本为例,进行文本纠错,简单描述下主要思路。
该场景下仅处理如下类型问题:谐音纠错,混淆音纠错,乱序纠错,字词补全。
支持同时处理上述错误类型,当同时处理时,优先顺序为:谐音纠错,混淆音纠错,乱序纠错,字词补全。
引入热词干预、纠错对照表干预
充分利用 session 信息。
在确定领域前,主要处理谐音纠错,混淆音纠错,可用资源有领域类别词表、意图类别词表、基于通用语料的其他先验。
在确定领域后,主要处理字词补全、乱序纠错、谐音纠错,混淆音纠错,可充分利用领域内先验。
基于字向量使用 Self-attention 针对每个字符的二分类判别器
基于字符的双向 N-gram LM
分词后,针对单字词,认为有错;针对多字词,若该词不在词表中,认为有错
对于出现在纠错对照表中的认为有错
根据 session 信息,高效利用字典信息
[0] hqc888688, https://blog.csdn.net/hqc888688/article/details/74858126
[1] Yu He and Guohong Fu. 2013. Description of HLJU Chinese spelling checker for SIGHAN Bakeoff 2013. In Proceedings of the 7th SIGHAN Workshop on Chinese Language Processing. 84–87.
[2] Chuanjie Lin and Weicheng Chu. 2013. NTOU Chinese spelling check system in SIGHAN Bake-off 2013. In Proceedings of the 7th SIGHAN Workshop on Chinese Language Processing. 102–107.
[3] Yuming Hsieh, Minghong Bai, and Kehjiann Chen. 2013. Introduction to CKIP Chinese spelling check system for SIGHAN Bakeoff 2013 evaluation. In Proceedings of the 7th SIGHAN Workshop on Chinese Language Processing. 59–63.
[4] Zhang, S., Xiong, J., Hou, J., Zhang, Q., & Cheng, X. 2015. HANSpeller++: A Unified Framework for Chinese Spelling Correction. ACL-IJCNLP 2015, 38.
[5] Jui-Feng Yeh, Sheng-Feng Li, Mei-Rong Wu, Wen-Yi Chen, and Mao-Chuan Su. 2013. Chinese word spelling correction based on N-gram ranked inverted index list. In Proceedings of the 7th SIGHAN Workshop on Chinese Language Processing. 43–48.
[6] Tinghao Yang, Yulun Hsieh, Yuhsuan Chen, Michael Tsang, Chengwei Shih, and Wenlian Hsu. 2013. Sinica- IASL Chinese spelling check system at SIGHAN-7. In Proceedings of the 7th SIGHAN Workshop on Chinese Language Processing. 93–96.
[7] Liu, X., Cheng, F., Duh, K. and Matsumoto, Y., 2015. A Hybrid Ranking Approach to Chinese Spelling Check. ACM Transactions on Asian and Low-Resource Language Information Processing, 14(4), p.16.
[8] Guo, Z., Chen, X., Jin, P. and Jing, S.Y., 2015, December. Chinese Spelling Errors Detection Based on CSLM. In Web Intelligence and Intelligent Agent Technology (WI-IAT), 2015 IEEE/WIC/ACM International Conference on (Vol. 3, pp. 173-176).
[9] Hsunwen Chiu, Jiancheng Wu, and Jason S. Chang. 2013. Chinese spelling checker based on statistical machine translation. In Proceedings of the 7th SIGHAN Workshop on Chinese Language Processing.49–53.
[10] Dongxu Han and Baobao Chang. 2013. A maximum entropy approach to Chinese spelling check. In Proceedings of the 7th SIGHAN Workshop on Chinese Language Processing. 74–78.
[11] Zhao, H., Cai, D., Xin, Y., Wang, Y. and Jia, Z., 2017. A Hybrid Model for Chinese Spelling Check. ACM Transactions on Asian and Low-Resource Language Information Processing (TALLIP), 16(3), p.21.
[12] Hsieh, Y.M., Bai, M.H., Huang, S.L. and Chen, K.J., 2015. Correcting Chinese spelling errors with word lattice decoding. ACM Transactions on Asian and Low-Resource Language Information Processing, 14(4), p.18.
[13] Yu J, Li Z. Chinese spelling error detection and correction based on language model, pronunciation, and shape[C]//Proceedings of The Third CIPS-SIGHAN Joint Conference on Chinese Language Processing. 2014: 220-223.
[14] Lin C J, Chu W C. A Study on Chinese Spelling Check Using Confusion Sets and? N-gram Statistics[J]. International Journal of Computational Linguistics & Chinese Language Processing, Volume 20, Number 1, June 2015-Special Issue on Chinese as a Foreign Language, 2015, 20(1).
[15] Chen K Y, Lee H S, Lee C H, et al. A study of language modeling for Chinese spelling check[C]//Proceedings of the Seventh SIGHAN Workshop on Chinese Language Processing. 2013: 79-83.
[16] Zhao J, Liu H, Bao Z, et al. N-gram Model for Chinese Grammatical Error Diagnosis[C]//Proceedings of the 4th Workshop on Natural Language Processing Techniques for Educational Applications (NLPTEA 2017). 2017: 39-44.
[17] Zheng B, Che W, Guo J, et al. Chinese Grammatical Error Diagnosis with Long Short-Term Memory Networks[C]//Proceedings of the 3rd Workshop on Natural Language Processing Techniques for Educational Applications (NLPTEA2016). 2016: 49-56.
[18] Xie P. Alibaba at IJCNLP-2017 Task 1: Embedding Grammatical Features into LSTMs for Chinese Grammatical Error Diagnosis Task[J]. Proceedings of the IJCNLP 2017, Shared Tasks, 2017: 41-46.