谐音字词,如 配副眼睛-配副眼镜
混淆音字词,如 流浪织女-牛郎织女
字词顺序颠倒,如 伍迪艾伦-艾伦伍迪
字词补全,如 爱有天意-假如爱有天意
形似字错误,如 高梁-高粱
中文拼音全拼,如 xingfu-幸福
中文拼音缩写,如 sz-深圳
语法错误,如 想象难以-难以想象
错误检测
字粒度:语言模型困惑度(ppl)检测某字的似然概率值低于句子文本平均值,则判定该字是疑似错别字的概率大。
词粒度:切词后不在词典中的词是疑似错词的概率大。
通过错误检测定位所有疑似错误后,取所有疑似错字的音似、形似候选词,
使用候选词替换,基于语言模型得到类似翻译模型的候选排序结果,得到最优纠正词。
### 英文检测 直接使用编辑距离
一个类中 EnSpell,通过加载一个很大的英文语料来进行英文纠错
实例化 EnSpell之后,直接调用 en_correct方法即可对传入的单词进行纠错。
重点:候选值怎么确定 + 概率怎么确定
候选值生成
首先,通过candidates方法获得可能的正确地拼写词,获取编辑距离1,2内的候选值以及当前值和子集候选值生成方法
编辑距离词的构建方法以及词的过滤,编辑距离词生成方法
然后依次遍历单词中的每个字母,筛选出存在于WORDS字典中的词
子集生成
WORDS是我们开头讲到的那个超大英文语料的词频字典。
概率计算
概率计算通过调用probability方法进行计算,
概率计算方法 计算方法是使用当前词的频率/总得词频数量
pycorrector过程:
1、把长句分为短句
2、顺序遮盖一个词 然后把当前序列送给模型进行预测(取TOP5的值)
3、取出所有满足规则条件的值token 对应的str 暂存起来
4、然后取出MASK值得所有同音字或者相似值 作为candidates候选值 (问题在于咱们有没有具体的西班牙语的同音字或者相似字)
5、看token里面的值是否在候选值里面 如果在直接选取当前值为正在MASK的值 否则继续使用原来的值
注释: 就是bert模型预测出来该位置的可能性值token 然后去该词的近似值candidates里面去寻找是否有该值 如果有则替换为找到的那个字 否则还是使用原来的那个词
直接使用shop item mx 作为词频表 并且和标准的词频做一个合并
使用 query_pv_mx 和 少无结果 通过求编辑距离 作为一个形近词
same_stroke.txt 形似字
same_pinyin.txt 同音字
可能性对的表
word_freq 词频表