Soundex 和Metaphone算法

posted at 2021.12.22 08: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技术 | 生活艺术

Add comment

  Country flag

biuquote
微笑得意调皮害羞酷大笑惊讶发呆喜欢可怜尴尬闭嘴噘嘴皱眉伤心抓狂呕吐坏笑漫骂发怒
Loading