基于Levenshtein距离的方法与Soundex

时间:2020-03-05 18:47:07  来源:igfitidea点击:

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

解决方案

回答

Soundex相当原始,它最初是为手动计算而开发的。它产生一个可以比较的密钥。

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

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

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

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

回答

@基思:

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

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

回答

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

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

考虑使用该应用程序来决定哪一种将最适合用户,或者两者结合使用,Metaphone将补充Levenshtein提出的建议。

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

回答

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

也许关于差异的一个例子会有所帮助:

Soundex实际上将添加值放在单词的开头,它仅考虑前4个语音。因此,尽管"施密特"和"史密斯"将匹配"史密斯",而"史密斯"将不匹配。

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

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