Wordnet Сходство в Java: JAWS, JWNL или Java WN :: Сходство? - PullRequest
7 голосов
/ 12 мая 2011

Мне нужно использовать Wordnet в Java-приложении.Я хочу:

  • поиск наборов

  • найти сходство / сходство между наборами

Мое приложениеиспользует графики RDF, и я знаю, что есть конечные точки SPARQL с Wordnet, но я думаю, что лучше иметь локальную копию набора данных, так как он не слишком большой.

Я нашел следующие jar:

Что бы вы порекомендовали для моего приложения?

Можно ли использовать библиотеку Perl из приложения java через некоторые привязки?

Спасибо!Mulone

Ответы [ 3 ]

12 голосов
/ 18 июня 2011

Я использую 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 для MIT JWI

1 голос
/ 22 мая 2012

В JAWS есть функция для поиска похожих словоформ Вот подробности:

public AdjectiveSynset [] getS Similar () генерирует исключение WordNetException, и вот ссылка, которую вы можете проверить: http://lyle.smu.edu/~tspell/jaws/doc/edu/smu/tspell/wordnet/AdjectiveSynset.html эта ссылка содержит подробности, которые вы можете использовать.

0 голосов
/ 26 мая 2011

Я не уверен, что JAWS или JWNL предоставляют методы для вычисления сходства между наборами синтаксиса, но я пробовал оба для поиска наборов, и я обнаружил, что JAWS проще в использовании.В частности, мне было проще понять:

    // Specifying the Database Directory
    System.setProperty("wordnet.database.dir", "C:/WordNet/2.1/dict/");

, чем требование JWNL file_properties.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...