2014-11-23 1 views
2

Я пытаюсь получить синонимы данного слова, используя Wordnet. Проблема в том, что, несмотря на то, что я делаю то же, что написано здесь: here, он возвращает ошибку.Получить синонимы из synset возвращает ошибку - Python

Вот мой код:

from nltk.corpus import wordnet as wn 
import nltk 

dog = wn.synset('dog.n.01') 
print dog.lemma_names 

>>> <bound method Synset.lemma_names of Synset('dog.n.01')> 


for i,j in enumerate(wn.synsets('small')): 
    print "Synonyms:", ", ".join(j.lemma_names) 

>>> Synonyms: 
    Traceback (most recent call last): 
     File "C:/Users/Python/PycharmProjects/PribliznostneVyhladavanie/testy.py", line 38, in   <module> 
    print "Synonyms:", ", ".join(j.lemma_names) 
TypeError 

Единственное, что я хочу, чтобы поставить слово и получить список синонимов. Кто-нибудь знает, что случилось?

EDIT: Я попробовал другой совет, который я нашел здесь, в stackoverflow. Это тоже не работает.

syns = wn.synsets('car') 
print [l.name for s in syns for l in s.lemmas] 

>>> TypeError: 'instancemethod' object is not iterable 
+1

примеры вы нашли это для более ранней версии NLTK. См. Мой ответ ниже для более подробной информации. – Thibaut

ответ

9

Какую версию nltk вы используете (попробуйте print nltk.__version)? Вы используете python 2 или python 3? Кажется, что в используемой вами версии lemma_names - это метод, а не атрибут (это в случае nltk 3.0 для Python 3). Если это так, то вы, вероятно, может исправить свой код, используя вместо этого:

for i,j in enumerate(wn.synsets('small')): 
    print "Synonyms:", ", ".join(j.lemma_names()) 
+0

Версия: sys.version_info (major = 2, minor = 7, micro = 8, releaselevel = 'final', serial = 0) И спасибо, это помогло мне. –

+0

Итак, кажется, что вы используете nltk 3 для Python 2. Я обновил код в своем ответе для вашего дела. – Thibaut

+0

Это решило мою проблему в nltk 3.2 и python 2.7. большое спасибо –

1

В Python 2 & 3 версии лемм и lemma_names не работают, поскольку они являются методами. Вместо этого вы должны использовать леммы() и lemma_names().

Для например -

dog = wn.synset('dog.n.01') print dog.lemma_names()

 Смежные вопросы

  • Нет связанных вопросов^_^