2008-09-03 115 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的算法會更好地發現拼寫錯誤 - 一個或兩個缺失或替換的字母會產生高度相關性,而這些缺失字母的語音影響則不那麼重要。

我不認爲要麼更好,我會考慮距離算法和拼音,以幫助用戶更正輸入法。