Spell Checking算法

给定一个可能拼写错误的单词(word),跟字典里的单词进行比对,找出可能的正确拼写。

参见维基百科上的Spell Checker条目。

数学理论

  • 要检查的单词 w
  • 字典里的单词 c
  • 贝叶斯概率 P(c|w) = P(w|c)*P(c)/P(w)
  • 简化为 P(c|w) = P(w|c)*P(c) # 考虑到对所有c来说P(w)为常数

求解 P(w|c)

Editing Distance

比较两个字符串s和t,对源字符串s进行d步操作(插入、删除、替换等)可以得到目标字符串t的话,我们可以说两个字符串之间的编辑距离(Editing Distance)是d。这里的操作指的是针对字符的操作。

可以认为,d越小,s和t越接近。实际上是近似认为:`P(w c) ~ d`

每一步允许的操作的不同,是几种不同的编辑距离的主要区别。

Soundex

根据读音来判断两个单词的相似程度也是一个思路。

比如根据单词的 Soundex 来判断。

相关资源