WordNet (JWI MIT): антонимы слова?

Я использую словарь с открытым исходным кодом www.wordnet.princeton.edu с www.projects.csail.mit.edu/jwi/api/edu/mit/jwi ?

Я не могу найти антонимы слова. Люди утверждают, что это очень хороший словарь, но я не смог найти в нем своих слов. Мне нужны антонимы и другие родственные слова. Хорошие описания и другая словарная информация, но я не могу найти то, что мне нужно.

Вот мой код:

List<IWordID> wordIDList = indexWordList.get(0).getWordIDs();
        for(int idIndex = 0; idIndex < wordIDList.size(); idIndex++)
        {
            IWordID wordID = wordIDList.get(idIndex);
            IWord word = m_Dict.getWord(wordID);
            System.out.println("Id = " + wordID);

            System.out.println(" Lemma = " + word.getLemma());
            System.out.println(" Gloss = " + word.getSynset().getGloss());

            ISynset synset = word.getSynset();
            String LexFileName = synset.getLexicalFile().getName();
            System.out.println("Lexical Name : " + LexFileName);

            /** Finding stem for the word. */
            WordnetStemmer stem = new WordnetStemmer(m_Dict);
            //System.out.println("test" + stem.findStems(key, POS.NOUN));

            ArrayList<String> antonymsList = new ArrayList<String>();

            List<IWordID> relatedWords = word.getRelatedWords();
            Map<IPointer, List<IWordID>> map = word.getRelatedMap();
            AdjMarker marker = word.getAdjectiveMarker();

            for (IWordID antonym : word.getRelatedWords()) {
                String meaning = m_Dict.getWord(antonym).getLemma();
                antonymsList.add(meaning);
                System.out.println("Antonym: " + meaning);
                System.out.println("Antonym POS: " + m_Dict.getWord(antonym).getPOS());
            } 

        }

Что мне на самом деле нужно? :::

Мне нужны предложения о том, как я могу получить соответствующую информацию из WordNet. Кроме того, **I am open to accept any other API or library that will provide me the latest version of Dictionary, antonyms, Synonyms and well written description.** каждое предложение приветствуется.


person Master    schedule 21.01.2014    source источник
comment
Не у каждого слова есть антоним. сравните свои тесты с любым браузером wordnet, чтобы проверить, правильный ли результат. например artha.sourceforge.net   -  person Amit G    schedule 27.01.2014
comment
В WordNet до сих пор отсутствуют антонимы некоторых слов. Но у слов есть антонимы.   -  person Master    schedule 27.01.2014
comment
@PJakhar: Какой будет антоним, скажем, козе?   -  person Chthonic Project    schedule 21.11.2014


Ответы (1)


Используйте IWord#getRelatedMap чтобы получить карту java.util.Map<IPointer,java.util.List<IWordID>>. Эта карта содержит карту отношений текущей леммы (слова) с другими словами.

Проверьте наличие Pointer#Antonym на этой карте.

Взгляните на интерфейс wordnet Artha, чтобы сравнить правильность результатов поиска в словаре.

Не существует прямого способа получить список всех слов. Использовали хак:

sed 's/^\ *//' index.adj | cut -f1 -d\ 

Расставьте точки над всеми индексными файлами: index.adj, index.adv, index.noun, index.sense, index.verb.

person Amit G    schedule 27.01.2014
comment
Спасибо, Амит Г. Я уже реализовал это, но для мобильных приложений эта база данных слишком велика, и частые запросы к ней в течение долгого времени требуют дополнительных затрат. Я прошел через эти указатели. Я могу подобрать антонимы к слову, которое есть в словаре. - person Master; 27.01.2014
comment
Словарь Wordnet имеет размер около 35 МБ, но я думаю, что он довольно впечатляющий, поскольку содержит более 200 тысяч слов с их значениями, примерами использования, семантическими и лексическими отношениями. - person Amit G; 27.01.2014
comment
Но, как я уже сказал, частые запросы обо всем могут замедлить весь процесс. И да, еще одна вещь. Если вы можете мне помочь, мне нужен список всех слов в последовательном порядке. КАК я могу найти это. - person Master; 27.01.2014
comment
вам нужно будет получить доступ к wordnet, выхода нет. Относительно всех слов: прочитайте обновленный ответ. - person Amit G; 27.01.2014
comment
Один палец вверх за ваши усилия, Амит Г. Но вы можете получить все слова POS, используя. IDictionary getIndexWordIterator(POS); - person Master; 27.01.2014
comment
перепутались все слова и все слова POS. - person Amit G; 28.01.2014
comment
Например, вы хотите получить все слова (глаголы) из WOrdNet, в этом случае передайте getIndexWordIterator(POS.VERB); Он вернет вам все глаголы в базе данных. - person Master; 28.01.2014
comment
спасибо @Hoosier за указание на это. Не исследовал JWI, будет. пожалуйста, примите ответ, если он помог. - person Amit G; 28.01.2014
comment
давайте продолжим это обсуждение в чате - person Master; 28.01.2014
comment
С моей стороны большой палец вверх за информацию, которую вы предоставили, но я не собираюсь использовать ее, так как способ, которым я сказал вам в комментарии, лучше. - person Master; 28.01.2014