基于Levenshtein距离的方法Vs Soundex

时间:2008-09-03 16:04:25

标签: fuzzy-search soundex algorithm

根据相关帖子中的this评论,我想知道为什么基于Levenshtein距离的方法比Soundex更好。

4 个答案:

答案 0 :(得分:14)

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

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

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

基本上Soundex更适合发现“施密特”和“史密斯”可能是同一个姓氏。

Levenshtein距离更好地发现用户错误输入“Levnshtein”; - )

答案 1 :(得分:8)

我建议使用Metaphone,而不是Soundex。如上所述,Soundex是在19世纪为美国名字开发的。 Metaphone会在检查“正在发声”的拼写错误的拼写者的工作时发音,并在拼音上拼写。

编辑距离可以很好地捕捉拼写错误,例如重复的字母,换位字母或敲错键。

考虑应用程序来决定最适合您的用户 - 或同时使用这两者,Metaphone补充了Levenshtein提出的建议。

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

答案 2 :(得分:2)

我同意你对Daitch-Mokotoff的看法,Soundex有偏见,因为美国原始人口普查员希望获得“美国化”的名字。

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

Soundex将加法值放在单词的开头 - 事实上它只考虑前4个语音。因此,虽然“施密特”和“史密斯”将匹配“史密斯”,而“史密斯”则不会。

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

我认为两者都不是更好,我会考虑使用距离算法和语音来帮助用户纠正输入类型。

答案 3 :(得分:0)

@Keith

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

我也读过Levenshtein的Wiki。但我不明白为什么(在现实生活中)为用户提供更好而不是Soundex。