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)