英语拼写错误校正序列

时间:2012-09-16 22:00:45

标签: algorithm search linguistics spelling

我正在做一些搜索引擎。其中一个功能是尝试在没有找到任何内容的情况下纠正拼写。我替换以下语音序列:ph - f,ee - < - > i,oo< - > u,ou< - > o(颜色< - >颜色)。在哪里可以找到像英语这样的完整列表? 谢谢。

2 个答案:

答案 0 :(得分:2)

您可能想要启动here(Soundex上的维基百科),然后开始追踪“另见”链接。 (例如,Metaphone有一个替换列表。)

答案 1 :(得分:2)

如果你正在创建搜索引擎,你必须意识到有大量网页,其中包含拼写错误的单词。但是,当然,您需要任何策略来使这些页面也可以搜索。因此,没有通用规则来实现拼写纠正器(因为正确性成为网络中的相对概念)。但是在实践中如何做到这一点有一些技巧: - )

我建议您使用 n-gram index + Levenstein distance (或any similar distance)来更正拼写。

Levenstein距离小的字符串可能是同一个词的变体。

假设您想要更正单词“fantoma”。如果你有大量的单词 - 迭代字典并计算每个单词的距离将是非常昂贵的。所以你必须非常快地找到与“fantoma”的距离很小的单词。

主要思想是在抓取和索引网页时 - 将n-gram(例如 - bigrams)索引到单独的索引中。将每个单词拆分为n-gram,并将其添加到n-gram索引:

1) Split each word from dictionary, 
   for example: "phantom" -> ["ph", "ha", "an", "nt", "to", "om"]

2) Create index:
   ...
   "ph" -> [ "phantom", "pharmacy", "phenol", ... ]
   "ha" -> [ "phantom", "happy" ... ]
   "an" -> [ "phantom", "anatomy", ... ]
   ...

现在 - 你有索引,你可以快速找到你的单词的候选人。

例如:

1) "fantoma" -> ["fa", "an", "nt", "to", "om", "ma"]
2) get lists of words for each n-gram from index, 
   and extract most frequent words from these lists - these words are candidates
3) calculate Levenstein distance to each candidate, 
   the word with smallest distance is probably spell-corrected variant of searched word.

我建议你仔细阅读这本书"Introduction to information retrieval"