algorithm - Google(或任何搜索引擎)的拼写检查器和拼写修复器如何工作?

标签 algorithm data-structures string search-engine

在 Google 中搜索某些内容时,如果您拼错了某个单词(可能是误拼,也可能是您真正指的是这个非字典单词),Google 会说: “显示......的结果,而是搜索......”。

我正在尝试弄清楚这是如何工作的。 这基本上意味着能够找到与输入的非词典单词最接近的词典单词。它是如何工作的?我可以猜测的一种方法是: 数数每个字符的实例,然后扫描字典以查找具有相同编号的单词。每个字符的实例数(仅具有 +-1 差异)。但这也会返回字谜。

是否有某种在这里有用的概率模型,例如马尔可夫等。我不太了解马尔可夫,无法随意使用它,但这只是一个非常疯狂的猜测。

有什么见解吗?

最佳答案

您忘记了 Google 提供的信息比您多得多。他们跟踪人们何时输入单词,不选择结果,然后不久后进行另一次搜索。然后,他们使用这些信息来为您提供更好的搜索建议。

参见How does the Google "Did you mean?" Algorithm work?以获得更全面的解释。

请注意,当您认为 Google 实际上并未进行拼写检查时,这种方法是有意义的。相反,他们正在尝试找出哪些搜索词可以为您提供所需的答案。显然,这和拼写检查之间有很多重叠,但这意味着他们并不总是尝试纠正搜索,例如“Flickr”。

关于algorithm - Google(或任何搜索引擎)的拼写检查器和拼写修复器如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5840564/

相关文章:

php - 获取数组元素的所有有序、连续组合

algorithm - 具有非成对互质模的同余系统

haskell - 在 Haskell 中表达逻辑一致性

将二进制链表转换为等效的十进制数

c# - 如何在 C# 中将 List<string> 转换为 ReadOnlyCollection<string>

C:初始化字符指针(字符串)数组并使用 fgets 遍历文件以将值放入这些字符串

ruby - 方法不返回 Ruby 中的预期值

algorithm - 欧几里德算法的时间复杂度

c++ - 文件支持的 Trie(或前缀树)实现

c - 如何正确转义嵌套特殊字符