Soundex語音算法

在看《編程珠璣》變位詞程序的時候看到簽名算法的思想非常好...

Soundex是一種語音算法,利用英文字的讀音計算近似值,值由四個字符構成,第一個字符爲英文字母,後三個爲數字。在拼音文字中有時會有會念但不能拼出正確字的情形,可用Soundex做類似模糊匹配的效果。

之前做過模糊匹配,用的是正則表達式。但顯然,用簽名算法的效率更高。

 

算法簡要說明

  • 將英文字按以下規則替換(除第一個字符外):
   a e h i o u w y -> 0
   b f p v -> 1
   c g j k q s x z -> 2
   d t -> 3
   l -> 4
   m n -> 5
   r -> 6
  • 去除0,對於重複的字符只保留一個
  • 返回前4個字符,不足4位以0補足

以Knuth和Kant爲例:

   Knuth -> K5030 -> K53 -> K530
   Kant  -> K053  -> K53 -> K530

 http://zh.wikipedia.org/wiki/Soundex

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章