2015-05-02 3 views
1

Я написал очень простой фрагмент кода, чтобы попытаться напечатать синонимы, связанные со словом.Ошибка при доступе к синонимам в python с использованием nltk?

import nltk 
from nltk.corpus import wordnet as wn 
wordNetSynset = wn.synsets('small') 
for synSet in wordNetSynset: 
    for synWords in synSet.lemma_names: 
     synonymList.add(synWords) 
print synonymList 

Однако, я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "test.py", line 6, in <module> 
    for synWords in synSet.lemma_names: 
TypeError: 'instancemethod' object is not iterable 

Кто-нибудь знает, что может быть проблема?

+0

Можете ли вы добавить версию python и версию «nltk»? –

+0

Несомненно. Это Python 2.7.6, а для nltk - «3.0.2». – Jess

+0

Прохладный получил проблему! –

ответ

2

В Nltk 3 lemma_names был заменен на метод из атрибута.

Таким образом, вы должны вызвать метод

for synWords in synSet.lemma_names(): 

Другие незначительные изменения, необходимые являются:

  • synonymList не определен
  • Список не будет иметь add метод, даже если synonymList определен
  • Лучше назовите свою переменную synonymSet
+0

Конечно. Я должен был подумать об этом. Благодаря! – Jess

+0

@ Джесс Ницца. Я ждал, чтобы вы упомянули Nltk 3! –