Metaphone Algorithm为输入的文字提供了一个英语语音发声散列(hash)。换句话说,它会根据字的发音而不是拼写生成代码。这就让发音类似但是拼写不同的字(比如Smith和Smythe)实现“模糊匹配(fuzzy matches)”成为可能。Metaphone Algorithm在概念上和Soundex像似,但是前者在发音的处理(方法)上要丰富得多。
Text::Metaphone模块简单易用。你输入一个要被编码的字,它就会返回编码的结果。你可以将最大音位*长度作为第二个参数,从而选择限制编码结果的长度。普遍接受的方案是,一个四字符的代码最适合于匹配大多数名字和英语字。
下面的例子会从命令行里读取一个或者多个字,并返回每个字的Metaphone散列:
use Text::Metaphone;
for (@ARGV)
{
print "$_ = " . Metaphone($_) . "
";
}
由于Metaphone会把所有的字都映射进一个相对较小的散列空间里,所以如果有一大串类似的字,它就会开始分解。
必须匹配文本的任何应用程序都可以从Metaphone Algorithm受益。一个允许“模糊”文本匹配的系统,将有助于提供用户支持、字典(词条)查询、Web搜索,或者建立系谱等。
Metaphone Algorithm让发音相像但是拼写不同词进行匹配变容易了。
*译者注:音位或者叫音素,语言中最小的语音单位,可以表达意义上的区别,如英语里 mat中的m和bat中的b。
本文作者:James Brown具有20年的行业开发专长和经验,拥有多重工作背景,包括数字硬件设计,网络操作系统开发和分布式计算等。