为什么 Java 的 Double Metaphone 只给出四个字母的代码?
Why is Java's Double Metaphone only giving four letter codes?
我想使用 DoubleMetaphone 获取给定字符串的语音编码。例如:
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 个编码字符并停止。在这种情况下,达斯汀 -> TSTN。
我使用了 Double Metaphone 的 Python 实现,它按预期工作。
>>>from metaphone import doublemetaphone
>>>doublemetaphone("dustinhoffmanisanactor")[0]
"TSTNFMNSNKTR"
看来我需要设置最大代码长度。
String s1 = "dustinhoffmanisanactor";
DoubleMetaphone dm = new DoubleMetaphone();
dm.setMaxCodeLen(100);
dm.doubleMetaphone(s1);
这给出了预期的 TSTNFMNSNKTR
。
我想使用 DoubleMetaphone 获取给定字符串的语音编码。例如:
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 个编码字符并停止。在这种情况下,达斯汀 -> TSTN。
我使用了 Double Metaphone 的 Python 实现,它按预期工作。
>>>from metaphone import doublemetaphone
>>>doublemetaphone("dustinhoffmanisanactor")[0]
"TSTNFMNSNKTR"
看来我需要设置最大代码长度。
String s1 = "dustinhoffmanisanactor";
DoubleMetaphone dm = new DoubleMetaphone();
dm.setMaxCodeLen(100);
dm.doubleMetaphone(s1);
这给出了预期的 TSTNFMNSNKTR
。