分享一个英文拼写纠错的思路,暂时无完整代码,后续如果实现会继续更新
英文拼写纠错这个问题由来已久,在这方面做的最好的就是谷歌了,现在我想自己实现一下这个功能,才疏学浅,分享一下自己的小想法。如果大家有更好的思路或者实现代码,请大家推给我,我会虚心学习。
一、统计英文单词词频
使用一个很大的英文文本语料库统计出每个单词的词频,生成一个词频文件备用。
二、统计bi-gram ,tri-gram 概率
在这个很大的英文文本语料库中统计出前后两个词或者三个词搭配的概率,生成两个文件备用。
三、
输入一个句子,例: I am a students. 单个单个单词判断正确率,在第一个词频文件中判断词频高低。 I , am , a 这三个单词出现的频率很高,不用考虑它们了。接下来是Students,它出现频率不是那么高,那么使用bi-gram 或者tri-gram ,取 students 前面的单词 a 和students 一起组成 a students 去bi-gram 文件中查找组合频率高不高,如果不高,那么有可能是students拼写错了。 找students的候选词也就是很相近的词,可以使用最小编辑距离也可以使用骨架键法,找出来之后挑选出词频比较高的词,再与 a 组合起来去bi-gram 中找高频高概率的组合,改正过来就是最终结果了。如果还是找不出的话,就要使用tri-gram, 就是取students 后面的词(如果有的话,这个例子中没有),组成一个三元组合,去tri-gram 中找到频率概率最高的改正过来即可。
最后放一个核心思想的流程图