ws4j дал 1,3333 балла за меры сходства, которые должны возвращать результат от 0 до 1
Код должен вычислять меру сходства Ву и Палмера, которая находится между 0 и 1, но дает значения выше 1. Я уже исследовал подобные примеры, но не нашел ошибку.
public class WordsSimilarity{
public static void main(String[] args) {
ILexicalDatabase db = new NictWordNet();
RelatednessCalculator rc = new WuPalmer(db);
String word1="cancer";
POS posWord1= POS.n;
String word2= "disease";
POS posWord2= POS.n;
double maxScore = 0;
try {
WS4JConfiguration.getInstance().setMFS(true);
List<Concept> synsets1 = (List<Concept>)db.getAllConcepts(word1, posWord1.name());
List<Concept> synsets2 = (List<Concept>)db.getAllConcepts(word2, posWord2.name());
for(Concept synset1: synsets1) {
for (Concept synset2: synsets2) {
Relatedness relatedness = rc.calcRelatednessOfSynset(synset1, synset2);
double score = relatedness.getScore();
if (score > maxScore) {
maxScore = score;
}
}
}
}
catch(Exception e) {
}
if (maxScore == -1D) {
maxScore = 0.0;
}
System.out.println("Similarity score of " + word1 + " & " + word2 + " : " + maxScore);
}
}