语音匹配算法

您所在的位置:网站首页 gop发音良好度算法 语音匹配算法

语音匹配算法

2024-01-26 16:50| 来源: 网络整理| 查看: 265

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