如何在给定字符串的给定编辑距离内查找所有字符串

时间:2012-10-14 22:04:01

标签: string algorithm edit-distance

我们在谷歌看到过,如果我们输入一个查询并输入错字,谷歌会建议一个更健全的查询版本(这通常是正确的)。现在他们是怎么做到的?我能想到的一种可能的方法是在给定字符串的编辑距离1处查找所有其他字符串,如果其中任何字符串返回一个字符串,其值为'searching`属性值较高(可能来自后端DB,其中每个索引查询术语具有与其相关联的权重(基于该术语在查询中出现的频率)而不是给定的字符串,建议使用该字符串。如果没有找到,则搜索编辑距离为2的字符串,依此类推,直到比如5,SE判定可能是该字符串 是用户正在寻找的字符串,并返回相应的搜索结果。

现在可以找到给定字符串给定编辑距离的字符串吗?这个过程的效率如何?有没有很酷的算法呢?

2 个答案:

答案 0 :(得分:1)

这当然是猜测,但当然,谷歌有一个巨大的统计基础来猜测正确的词。上下文可能是另一个依赖于其他词的因素。

所以我的猜测是他们首先使用的算法根据所有单词确定可能的上下文,然后统计查找给定上下文中正确单词的拼写错误变体。如果没有上下文(单个单词),他们可能会查找任何类似的内容。

此外,由于谷歌使用基于MySQL的数据库,他们也可以使用SOUNDS LIKE功能,根据人声列出听起来相似的单词。

答案 1 :(得分:1)

Peter Norvig有一篇有趣的文章“How to Write a Spelling Corrector”谈论“你的意思”如何运作