基于编辑距离和lcs的暗示拼写检查器?

时间:2010-01-07 01:40:50

标签: c#

如何实现一个简单的拼写检查器,它接受拼写错误的单词和编辑距离阈值,然后生成一个建议的正确单词列表。 希望使用一种算法来实现 1 - 使用编辑距离和最长公共子序列 2 - 不要计算字典中每个单词的编辑距离???????

2 个答案:

答案 0 :(得分:1)

所以你有一个单词词典,你想使用编辑距离来计算与给定单词最接近的匹配。

快速检查所有可能选项的过程的一些建议:

  • 在进行计算时,将最接近的匹配缓存到单词。如果有人输入“拼写”并且您的最高匹配是“拼写”,“喷涌”和“溢出”,请将这些匹配与其计算的距离和阈值保存在一起。下次看到“拼写”时,您可以检索阈值< =新阈值的任何结果。
  • 使用levenshtein距离,在计算时,您可以丢弃长度差异大于阈值的任何单词。您应该能够快捷该过程。当然,如果你想要共同的后续序列,这就会失败。
  • 一旦达到阈值,修改levenshtein距离计算器就会中断。你仍然会开始检查很多不匹配的单词,但是你可以通过提前打破来减少工作量。

如果您仍在使用levenshtein距离算法,请查看此示例。这很快。

http://dotnetperls.com/levenshtein

答案 1 :(得分:0)

Peter Norvig在Python中做到了这一点,并且有人将他的拼写检查程序移植到C#

http://norvig.com/spell-correct.html

http://www.codegrunt.co.uk/?page=cSharp#norvigSpell