引言
在语音识别、拼音输入、歌曲歌词对照等应用场景中,需要对单词进行音译处理。nysiis-phonetics 是一款基于 NYSIIS 算法生成单词音译的 npm 包。本篇文章将详细介绍如何使用 nysiis-phonetics。
安装
使用 npm 包管理工具,可安装 nysiis-phonetics:
npm install nysiis-phonetics
使用
引入
在 JavaScript 文件中,可使用以下方式引入 nysiis-phonetics:
const nysiis = require('nysiis-phonetics');
使用示例
- 将单词转换为音译
console.log(nysiis('Martinez')); // MARNAS
- 将句子按单词转换为音译
const str = "In a bowl combine 2 eggs, 2 cups of flour, and 1 cup of milk." const res = str.split(' ').map(word => nysiis(word)).join(' '); console.log(res); // AN I BAAL CAMBAN 2 AGS 2 CAPS AF FLAR AN 1 CAP AF MILC.
深度讲解
NYSIIS 算法(New York State Identification and Intelligence System)是一种用于姓名音译的算法,由纽约州政府犯罪调查局(New York State Department of Criminal Justice Services)发明。该算法移除了姓名中不重要的元音,将姓名翻译为一个七位字母表达的代码,有助于机器识别及比较。
NYSIIS 算法主要有以下几个步骤:
- 将字符串转换为大写
- 若字符串以 MAC 开头,将其转换为 MCC
- 若字符串以 KN 开头并且其后跟一个 AE,将 KN 转换为 N 后去掉 AE,举例:KNAACK => NACK,KNIGHT => NAT
- 将字符串中的 EV 和 E 抛弃,将 AY 转换为 Y,举例:BALEY => BLY,MARY => MERY
- 将字符串中的 PH 和 PF 替换为 F,将 SCH 替换为 S,将 H 从字符串中移除,举例:PHOENIX => FENIX,SCHAFER => SAFER
- 将字符串中的 EO、IA、IO、IE 替换为 Y,将 SH、SCH 替换为 S,将 EE、IE、DT、RT、RD 替换为 D,将 OH、OK、U、OO、LE 替换为 A,将 ANY、ERY、ARY、OR、UR 替换为 Y,将 AU、AW 替换为 A,举例:MACDONALD => MCCDNALD;DU BOIS => DABAS;KNIGHT => NAT;SCHAFER => SAFER;BOWIE => BAY;TURPIN => TARPN;CONNOLLY => CONALY;CAGLE => CAAL;MCCARTHY => MCCARTY;SCHULTZ => SULTS;MADRIZ => MADRAS
- 舍去字符串末尾的 S 或 Z,并在字符串末尾添加 A,直到代码长度达到 7 为止
NYSIIS 算法的代码输出具有如下特点:
- 同音字将有相同的代码输出(如 write 和 right 输出的代码都为 RAT)
- 姓名相似的人,其代码输出有相似之处
指导意义
nysiis-phonetics 是一款将英文单词翻译为代码的 npm 包,适用于语音识别、拼音输入、歌曲歌词对照等场景。对于同音字的处理,可以将其代码输出作为比对参考。对于姓名相似的人,可以通过比对其代码判断是否为同一人。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f9b3d1de16d83a66e0d