关于模糊搜索:基于Levenshtein距离的方法与Soundex

关于模糊搜索:基于Levenshtein距离的方法与Soundex

Levenshtein distance based methods Vs Soundex

根据相关主题中的注释,我想知道为什么基于Levenshtein距离的方法比Soundex更好。


Soundex相当原始-它最初是为手动计算而开发的。它导致可以比较的键。

Soundex最初是为美国人口普查数据开发的,因此与西方名称配合得很好。用于语音比较。

Levenshtein距离查看两个值,并根据它们的相似性产生一个值。它正在寻找丢失或替换的字母。

基本上,Soundex更好地发现" Schmidt"和" Smith"可能是同一个姓。

Levenshtein距离更适合于发现用户输入了错误的" Levnshtein";-)


我建议使用Metaphone,而不是Soundex。如前所述,Soundex是在19世纪为美国名字开发的。在检查"说出来"并以语音进行拼写的不良拼写者的工作时,Metaphone会给您一些结果。

编辑距离擅长捕捉重复的字母,换位的字母或敲错键等拼写错误。

考虑Metaphone补充Levenshtein提出的建议,然后由应用程序决定最适合您的用户(或同时使用)。

关于原始问题,我已经在信息检索应用程序中成功使用了n-gram。


我对Daitch-Mokotoff表示同意,Soundex有偏见,因为最初的美国人口普查人员想要"美国化"名称。

也许有一个区别的例子会有所帮助:

Soundex将附加值放在单词的开头-实际上,它仅考虑前4种语音。因此,尽管" Schmidt"和" Smith"将与" Smith"和" Wmith"匹配。

Levenshtein的算法更适合查找错别字-一个或两个丢失或替换的字母产生较高的相关性,而这些丢失字母的语音影响则不那么重要。

我认为这两者都不是更好的选择,并且我会考虑一种距离算法和一种语音算法,以帮助用户纠正键入的输入。


@Keith:

正如我在另一个问题上发布的那样,戴奇-莫科托夫(Daitch-Mokotoff)对我们欧洲人更好(我会说美国)。

我也阅读了Levenshtein上的Wiki。但是我不明白为什么(在现实生活中)对于用户而言,它比Soundex更好。


推荐阅读