为什么java的双变音只提供四个字母的代码?

i34xakig  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(389)

我想用双变音来获得给定字符串的语音编码。例如:

import org.apache.commons.codec.language.DoubleMetaphone;
String s1 = "computer";
(new DoubleMetaphone()).doubleMetaphone(s1);

结果:计算机->kmpt
当我尝试对较长的字符串进行编码时,问题就出现了。

import org.apache.commons.codec.language.DoubleMetaphone;
String s1 = "dustinhoffmanisanactor";
(new DoubleMetaphone()).doubleMetaphone(s1);

结果:dustinhoffmanisanactor->tstn
很明显,这是采取了前4个编码字符和停止。在这种情况下,dustin->tstn。
我使用了双变音的python实现,它按预期工作。

>>>from metaphone import doublemetaphone
>>>doublemetaphone("dustinhoffmanisanactor")[0]
"TSTNFMNSNKTR"
vsmadaxz

vsmadaxz1#

似乎我需要设置最大代码长度。

String s1 = "dustinhoffmanisanactor";
DoubleMetaphone dm = new DoubleMetaphone();
dm.setMaxCodeLen(100);
dm.doubleMetaphone(s1);

它给出了预期的 TSTNFMNSNKTR .

相关问题