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