题目假设:
- 有一个真实英文词汇的大辞典。
- 只实现错误单词到正确单词的更正。
- 只考虑不同于错误单词的单个字符(插入、删除或替换)的更正。
实现原理:
参考Peter Norvig的spelling corrector
给定一个单词,我们的任务是选择和它最相似的拼写正确的单词。(如果这个单词本身拼写就是正确的, 那么最相近的就是它自己)。当然,不可能绝对的找到相近的单词,比如说给定 lates 这个单词,它应该别更正为 late 呢,还是 latest 呢?这些困难指示我们,需要使用概率论,而不是基于规则的判断。我们说,给定一个词 w,在所有正确的拼写词中,我们想要找一个正确的词 c,使得对于 w 的条件概率最大,也就是说:
按照 贝叶斯理论 上面的式子等价于:
因为用户可以输错任何词,因此对于任何 c 来讲,出现 w 的概率 P(w) 都是一样的,