У меня очень простой код, взятый из this example, где я использую методы подобия Lin, Path и Wu-Palmer, чтобы вычислить сходство между двумя словами. Мой код выглядит следующим образом:ws4j возвращает бесконечность для мер сходства, которые должны возвращаться 1
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 раньше (в той же версии, по сути), но я никогда не видел этого поведения. Поиск в Интернете не дал никаких подсказок. Что здесь может быть неправильным?
P.S. Тот факт, что меры Lin, Wu-Palmer и Path должны быть возвращены 1, также может быть проверен с помощью the online demo provided by ws4j
Эй, пожалуйста, расскажите, как применить патч к текущему ws4j jar im using. –