语音匹配算法 |
您所在的位置:网站首页 › gop发音良好度算法 › 语音匹配算法 |
Soundex最初用于美国移民信息统计,因为在20世纪初期美国还有许多文盲。不能正确的规范的拼写他么的姓氏。 例如smith 和 smyth 发音是相同的。但是如果计算机并不知道,这样不便于检索。 Soundex算法就是将相近发音的字母归为一类。例如 D 和 T 归为同一个发音组,因为其发音近似。下面就是Soundex 发音组表格。 Soundex代码语音组0A,E,I,O,U,W,H,Y1B,F,P,V2C,G,J,K,Q,S,X,Z3D,T4L5M,N6R
根据英语发音可以将算法归纳如下 1. 代码固定长度为4位,不足4位后面补0,首字母为单词首字母。 2. 由于元音字符AEIOU,以及WHY在发音的时候贡献较小所以【忽略不在词首】 3. 针对NN,SS 通常只发一个音,【去除前后相同字符】 4. 针对MN,通常也只发一个音,【去除前后在相同发音组】
代码如下 package com.lt; import com.lt.util.Justify; import com.lt.util.StringAlign; public class Soundex { /** * 字符发音对照表 * AEHIOUWYBFPVCGJKQSXZDTLMNR * 00000000111122222222334556 */ private static final char[] SOUNDMAP = { //A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z '0','1','2','3','0','1','2','0','0','2','2','4','5','5','0','1','2','6','2','3','0','1','0','2','0','2' }; public String sound(String name){ String nameUpper = name.toUpperCase(); StringBuilder soundRes = new StringBuilder(); char prevChar = '?'; char prevOut = '?'; char c; for(int i=0;i |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |