Soundex
Soundex是一種語音算法,利用英文字的讀音計算近似值,值由四個字符構成,第一個字符為英文字母,後三個為數字。在拼音文字中有時會有會念但不能拼出正確字的情形,可用Soundex做類似模糊匹配的效果。例如Knuth和Kant二個字符串,它們的Soundex值都是「K530」。其在計算機科學家高德納名著《計算機程序設計藝術》都有詳細的介紹。
算法簡要說明
- 第一步:保留第一個字母,去掉第一個字母之後的所有的a, e, i, o, u, y, h, w;
- 第二步:將英文字按以下規則替換(除第一個字符外):
b f p v -> 1 c g j k q s x z -> 2 d t -> 3 l -> 4 m n -> 5 r -> 6
- 第三步:對於相鄰的重複的數字只保留一個,即相鄰的兩個被替換為同一個數字的字母只保留一個;例外,如果在第一步驟的時候,這兩個相同數字中間有母音隔開,則這兩個重複的數字都保留(例如Tynczak為T522非T520)。並且請注意,雖然第一個字母不用翻成數字,但如果其數字和第二個數字相同,仍須把第二個數字刪除。(例如Pfister為P236非P123,Honeyman是H555非H500)
- 第四步:保留第一個字母後的三位數字,若不足三位則以0補足。
實例:
單詞 | Soundex |
---|---|
Knuth | K530 |
Kant | K530 |
Jarovski | J612 |
Resnik | R252 |
Reznick | R252 |
Euler | E460 |
Peterson | P362 |
Jefferson | J162 |
外部連結
- The Soundex Indexing System(頁面存檔備份,存於互聯網檔案館) (U.S. National Archives and Records Administration)