Soundex 和Metaphone算法

posted at 2021.12.22 06:35 by administrator

       语音算法(phonetic algorithm)是根据语言的发音对其进行分类和操作的算法。例如,假设你是一名客户服务代表,客户告诉你他的姓是李。您需要在数据库中查找该客户,但无法确认其姓是否应为李、力、丽或者里。

如果输入任何合理的符号(例如li),计算机将其转换为语音形式,然后在客户数据库中查找以前存储的语音版本。你可以查看结果,提出几个问题以验证是否找到正确的客户,然后开始故障排除。

不幸的是,从读写中推断一个字是困难的,这意味着这个算法往往又冗长又复杂。

以下描述两种语音算法:Soundex Metaphone

Soundex算法

由罗伯特·拉塞尔(Robert C. Russel)和玛格丽特·金·奥德尔(Margaret King Odell

20世纪初设计的,目的是简化美国人口调查。1918年,早在第一代计算机发明之前,他们就获得了第一代计算机的专利。

下面给出了Soundex规则

1. 保存名称的第一个字母,留作后用。

2. 删除第一个字符后的wh 

3. 使用以下对应将剩余字符转换为代码。如果某一个字符没有出现在对应中(例如wh),保持不变。

Soundex代码0(对应字符 a,e,I,o,u,y

Soundex代码1(对应字符 b,f,p,v

Soundex代码2(对应字符 c,g,j,k,q,s,x,z

Soundex代码3(对应字符 d,t

Soundex代码4(对应字符 l

Soundex代码5(对应字符 m,n

Soundex代码6(对应字符 r 

4. 如果两个或多个相邻代码相同,则只保留其中一个。

5. 将第一个代码替换为原始的第一个字母。

6. 删除代码0(第一个字母后的元音)。

7. 截断,或在右边用0填充,使得结果只有4个字符。

多年来,在原来的Soundex算法上出现了一些变化。大多数SQL数据库系统在查找相邻代码时,使用不考虑元音的微小变化。

原始算法的另一个相对简单的变种是使用以下对应所示的字符代码。

Soundex代码1(对应字符 b,p

Soundex代码2(对应字符 f,v

Soundex代码3(对应字符 c,k,s

Soundex代码4(对应字符 g,j

Soundex代码5(对应字符 q,x,z

Soundex代码6(对应字符 d,t 

Soundex代码7(对应字符 l

Soundex代码8(对应字符 m,n

Soundex代码9(对应字符 r

还有其他设计用于非英语名称和单词的语音算法变体。Daith-Mokotoff Soundex(D-M Soundex)是为了更好地表示日耳曼和斯拉夫的名称而设计的。这些语音算法变体往往比原来的Soundex算法复杂的多。

二、Metaphone算法

1990年,劳伦斯飞利浦(Lawrence Philips)发表了一种新的语音算法——Metaphone,使用一套更复杂的规则来更准确地表示英语发音。

以下给出了Metaphone规则

1. 删除相邻的重复字母,C除外。

2. 如果单词以KNGNPNAEWR开头,则删除第一个字母。

3.如果单词以MB结尾,则删除B

4.转换C:

a.      如果是SCH的一部分,则将C转换为K

b.      如果后面跟有IA或者H,则将C转换为X

c.       如果后面跟有IE或者Y,则将C转换为S

d.      将所有其他C转换为K

5. 转换D:

a. 如果后面跟着GEGY或者GI,则将D转换为J

b. 否则将D转换为T

6. 转换G:

       a.      如果是GH的一部分,就去掉G,除非它在单词的末尾或者在元音之前。

       b.      删除单词末尾的GNGNED中的G

       c.       如果GGIGE或者GY的一部分而不在GG中,则将G转换为J

       d.      将所有其他G转换为K

7.如果H在元音之后而不是在元音之前,就删除H

8.把CK转换成K

9.  PH转换成F

10.把Q转换成K

11.如果S后面跟HIO或者IA,则将S转换为X.

12.  转换T

      a. 如果TTIATIO的一部分,则将T转换为X

      b. TH转换为0

      c. 删除TCH中的T

13.把V转换成F

14.如果WH位于单词的开头,则把WH转换成W。否则,如果后面没有跟元音,则删除W

15.转换X:

      a. 如果X位于单词的开头,则把X转换成S 

      b. 否则将X转换为KS

16.如果Y后面没有跟元音,则删除Y

17. Z转换为S

18.删除第一个字符后的所有剩余元音。

Metaphone是对Soundex的改进,但Metaphone也有几种变体。例如,双Metaphone是原始Metaphone算法的第二个版本。之所以称其为双Metaphone,因为它可以为单词生成主代码和次代码,以区分具有相同代码的单词。

Metaphone3进一步改进了Metaphone的语音规则,并对美国常见的非英语单词和一些常见的名称提供了更好的效果。它是一种商业产品,也有处理西班牙语和德语发音的版本。

 

有关语音算法的详细,参阅以下URL

l  https://en.wikipedia.org/wiki/Phonetic_algorithm

l  https://en.wikipedia.org/wiki/Soundex

l  https://en.wikipedia.org/wiki/Metaphone

l  https://ntz-develop.blogspot.com/2011/03/Phonetic_algorithms.html

 

Tags: , , , , ,

IT技术 | 生活艺术

添加评论

  Country flag

biuquote
  • 评论
  • 在线预览
Loading