《Chinese Spelling Error Detection and Correction Based on Language Model, Pronunciation, and Shape》[1, Yu, 2013] 论文提供了一种准确较高、召回较低的纠错方法。
- Character级别 n-gram language model。
- 拼音和字形召回候选
- 词典过滤掉部分无效候选
- 取最高语言模型打分
- 高于既定阈值则认为是替换候选
各步骤展开,具体简述如下:
- 判断何处有输入错误,两种方式:
- a. 使用正向反向的character级别的ngram语言模型,对每个位置进行打分,得分低的地方标记为待纠错片段。
- b. 切词切出独立的字符。
- 这里的ngram语言模型为5-gram,为了避免过多召回,阈值设定较为严苛。通过语言模型判断出的可疑位置将与上下文组合进行词典查词。
- 召回:上一步词典过滤出的最终可疑词进行同音字和形近字的召回。召回候选与前后近邻组合为词进行词典查词过滤出有效候选。
- 打分:候选中语言模型最高分,且得分大于阈值,则胜出。
source:水滴石穿
- 使用语言模型计算句子或序列的合理性
- bigram, trigram, 4-gram 结合,并对每个字的分数求平均以平滑每个字的得分
- 根据Median Absolute Deviation算出outlier分数,并结合jieba分词结果确定需要修改的范围
- 根据形近字、音近字构成的混淆集合列出候选字,并对需要修改的范围逐字改正
- 句子中的错误会使分词结果更加细碎,结合替换字之后的分词结果确定需要改正的字
- 探测句末语气词,如有错误直接改正
错误检测的目标是识别输入句子可能存在的问题,采用序列表示(Transformer/LSTM)+CRF的序列预测模型,这个模型的创新点主要包括:
-
词法/句法分析等语言先验知识的充分应用;
-
特征设计方面,除了DNN相关这种泛化能力比较强的特征,还结合了大量hard统计特征,既充分利用DNN模型的泛化能力,又对低频与OOV(Out of Vocabulary)有一定的区分;
-
最后,根据字粒度和词粒度各自的特点,在模型中对其进行融合,解决词对齐的问题。
候选召回指的是,识别出具体的错误点之后,需要进行错误纠正,为了达到更好的效果以及性能,需要结合历史错误行为,以及音形等特征召回纠错候选。
主要可分为两部分工作:
-
离线的候选挖掘,在线的候选预排序。离线候选挖掘利用大规模多来源的错误对齐语料,通过对其模型,得到不同粒度的错误混淆矩阵。
-
在线候选预排序主要是针对当前的错误点,对离线召回的大量纠错候选,结合语言模型以及错误混淆矩阵的特征,控制进入纠错排序阶段的候选集数量与质量。
纠错排序解决的是,由于纠错的正确结果具有唯一性,如何在召回的纠错候选中将正确的结果排在第一位。
百度中文纠错采用的是Deep&Wide的混合模型结构,Deep部分学习当前错误点上下文表示,Wide部分基于形音、词法、语义、用户行为等特征学习原词与候选词的多维度距离表示,另外通过GBDT&LR模型学习到更好的特征组合。
source:ccheng
source:baidu