跳转到内容

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

外部链接