【发布时间】:2013-07-18 23:36:41
【问题描述】:
我有一个取自 this example 的非常简单的代码,我在其中使用 Lin、Path 和 Wu-Palmer 相似度度量来计算两个单词之间的相似度。我的代码如下:
import edu.cmu.lti.lexical_db.ILexicalDatabase;
import edu.cmu.lti.lexical_db.NictWordNet;
import edu.cmu.lti.ws4j.RelatednessCalculator;
import edu.cmu.lti.ws4j.impl.Lin;
import edu.cmu.lti.ws4j.impl.Path;
import edu.cmu.lti.ws4j.impl.WuPalmer;
public class Test {
private static ILexicalDatabase db = new NictWordNet();
private static RelatednessCalculator lin = new Lin(db);
private static RelatednessCalculator wup = new WuPalmer(db);
private static RelatednessCalculator path = new Path(db);
public static void main(String[] args) {
String w1 = "walk";
String w2 = "trot";
System.out.println(lin.calcRelatednessOfWords(w1, w2));
System.out.println(wup.calcRelatednessOfWords(w1, w2));
System.out.println(path.calcRelatednessOfWords(w1, w2));
}
}
除了两个单词相同时,分数与预期相同。如果两个词相同(例如w1 = "walk"; w2 = "walk";),我拥有的三个度量值都应该返回 1.0。但相反,他们返回 1.7976931348623157E308。
我以前使用过 ws4j(实际上是相同的版本),但我从未见过这种行为。在网上搜索并没有找到任何线索。这里可能出了什么问题?
附: Lin、Wu-Palmer 和 Path 度量值应该返回 1 的事实也可以通过 the online demo provided by ws4j 进行验证
【问题讨论】: