中文拼写纠错_请问,中文文本纠错如何做?

感谢 @顾颜兮 提到的一个比赛。这个是另外一个比赛,https://sites.google.com/view/nlptea2018,简称CGED吧。从数据上看,两个比赛都是非母语环境。CGED的比赛我测试了2017年的SOTA,距离实际使用还有很远的距离。比赛比的是相对优势而非绝对优势。

首先关键在于定义要识别的错误类型。CGED的比赛定义了四种错误类型,多词,少词,错词和词序不当。我们自己做的应用场景是针对输入法产生的错误。考虑到难度,首先去尝试解决同音字错误,数据集的构建是基于百度拼音输入法的一个API,用候选词去做正确文本的替换。同义字错误要考虑全拼和简拼两种情况,实际上处理的难度也不一样。

针对全拼,从一开始我们就没有尝试基于统计的方法,用BiLSTM+Multi Head Self-Attention做字+带音调拼音->字的映射,针对这种映射,BiLSTM+CRF的话,CRF转移概率矩阵会很大,8000x8000(字的数目)感受一下。所以就采用了Attention,实际上Attention对于指标提升效果还是相对显著的,另外带音调拼音是一个重要特征。

即便这样,使用上述数据集和模型,我们的检错率=60%,纠错率=55%,当然这个指标是在自己构建数据集的基础上得到的。实测效果不如无错字,云差错两款产品(可能更多的是基于统计的方法去做的)。

模型层面上暂且不懂,我们考虑了更多的数据场景,句子长短等问题,重新构造了数据集,正在测试中。

个人认为,单纯的上述模型不能够解决问题,需要一些统计+规则的方法协助处理。此外,中文本文纠错这个问题本身需要对错误类型很好的定义,不同的错误类型,可能需要处理的方式不同,当然我们希望有一个general的模型,但是短期来看,似乎还做不到。

你可能感兴趣的:(中文拼写纠错)