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. 删除第一个字符后的w和h。
3. 使用以下对应将剩余字符转换为代码。如果某一个字符没有出现在对应中(例如w和h),保持不变。
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. 如果单词以KN、GN、PN、AE、WR开头,则删除第一个字母。
3.如果单词以MB结尾,则删除B。
4.转换C:
a. 如果是SCH的一部分,则将C转换为K。
b. 如果后面跟有IA或者H,则将C转换为X。
c. 如果后面跟有I、E或者Y,则将C转换为S。
d. 将所有其他C转换为K。
5. 转换D:
a. 如果后面跟着GE、GY或者GI,则将D转换为J。
b. 否则将D转换为T。
6. 转换G:
a. 如果是GH的一部分,就去掉G,除非它在单词的末尾或者在元音之前。
b. 删除单词末尾的GN和GNED中的G。
c. 如果G是GI、GE或者GY的一部分而不在GG中,则将G转换为J。
d. 将所有其他G转换为K。
7.如果H在元音之后而不是在元音之前,就删除H。
8.把CK转换成K。
9. 把PH转换成F。
10.把Q转换成K。
11.如果S后面跟H、IO或者IA,则将S转换为X.
12. 转换T:
a. 如果T是TIA或TIO的一部分,则将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
dccf3f75-83d3-4cd0-83c3-77ba8f3f5933|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Tags: blog, 代码, 类, 数据, 算法, 余
IT技术 | 生活艺术