Я использую JAWS для обычных вещей wordnet, потому что он прост в использовании. Однако для показателей сходства я использую библиотеку, расположенную здесь. Вам также потребуется загрузить эту папку, содержащую предварительно обработанные данные WordNet и корпуса, чтобы она работала. Код можно использовать следующим образом, если вы поместили эту папку в другую папку с именем «lib» в папке вашего проекта:
JWS ws = new JWS("./lib", "3.0");
Resnik res = ws.getResnik();
TreeMap<String, Double> scores1 = res.res(word1, word2, partOfSpeech);
for(Entry<String, Double> e: scores1.entrySet())
System.out.println(e.getKey() + "\t" + e.getValue());
System.out.println("\nhighest score\t=\t" + res.max(word1, word2, partOfSpeech) + "\n\n\n");
Это напечатает что-то вроде следующего, показывающего оценку сходства между каждой возможной комбинацией синсетов, представленных сравниваемыми словами:
hobby#n#1,gardening#n#1 2.6043996588901104
hobby#n#2,gardening#n#1 -0.0
hobby#n#3,gardening#n#1 -0.0
highest score = 2.6043996588901104
Существуют также методы, которые позволяют указать значение одного или обоих слов: res(String word1, int senseNum1, String word2, partOfSpeech)
и т. д. К сожалению, исходная документация не является документом JavaDoc, поэтому вам придется просматривать ее вручную. Исходный код можно загрузить здесь.
Доступные алгоритмы:
JWSRandom(ws.getDictionary(), true, 16.0);//random number for baseline
Resnik res = ws.getResnik();
LeacockAndChodorowlch = ws.getLeacockAndChodorow();
AdaptedLesk adLesk = ws.getAdaptedLesk();
AdaptedLeskTanimoto alt = ws.getAdaptedLeskTanimoto();
AdaptedLeskTanimotoNoHyponyms altnh = ws.getAdaptedLeskTanimotoNoHyponyms();
HirstAndStOnge hso = ws.getHirstAndStOnge();
JiangAndConrath jcn = ws.getJiangAndConrath();
Lin lin = ws.getLin();
WuAndPalmer wup = ws.getWuAndPalmer();
Кроме того, вам потребуется файл jar для JWI MIT.
person
Nate Glenn
schedule
18.06.2011