2008-09-03 110 views

回答

13

Soundex是相当原始的 - 它最初被开发为手算。它产生了一个可以比较的关键。

Soundex与西方国家的名字一起使用,因为它最初是为美国人口普查数据开发的。它旨在用于拼音比较。

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

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

Levenshtein距离是察觉到用户拼写错误“Levnshtein” ;-)

0

@Keith更好:正如我贴在其他问题

,Daitch-Mokotoff对我们欧洲人更好的(和我我认为美国)。

我也读了关于Levenshtein的Wiki。但我不明白为什么(在现实生活中)为用户比为Soundex更好的

8

我会建议使用Metaphone,而不是Soundex。如上所述,Soundex是在19世纪为美国人开发的。当检查那些正在“发出声音”的拼音者的拼音和拼写发音时,Metaphone会给你一些结果。

编辑距离擅长捕捉错字,如重复的字母,转置的字母或打错的键。

请考虑应用程序来决定哪个最适合您的用户—或者同时使用这两个选项,以及补充Levenshtein制作的建议的Metaphone。

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

2

我同意你在Daitch-Mokotoff,Soundex是有偏见的,因为原来的美国人口普查员想要'美国'的名字。

也许上的差异的例子可以帮助:

探测法把增加值在单词的开始 - 事实上,它只会考虑第4周拼音的声音。所以虽然“施密特”和“史密斯”将匹配“史密斯”和“Wmith”不会。

Levenshtein的算法会更好地发现拼写错误 - 一个或两个缺失或替换的字母会产生高度相关性,而这些缺失字母的语音影响则不那么重要。

我不认为要么更好,我会考虑距离算法和拼音,以帮助用户更正输入法。