从语法集中获取同义词返回错误 - Python



我正在尝试使用Wordnet获取给定单词的同义词。问题是,尽管我正在做与此处所写相同的操作:在这里,它返回错误。

这是我的代码:

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

我唯一想要的就是输入一个单词并获取同义词列表。有人知道出了什么问题吗?

编辑:我尝试了另一个建议,我在stackoverflow上找到了。它也不起作用。

syns = wn.synsets('car')
print [l.name for s in syns for l in s.lemmas]
>>> TypeError: 'instancemethod' object is not iterable

您使用的是哪个版本的 nltk(请尝试print nltk.__version)?您使用的是 python 2 还是 python 3?似乎在您使用的版本中,lemma_names是一个方法而不是一个属性(Python 3.0 的 nltk 3 就是这种情况)。如果是这种情况,那么您可以通过改用以下命令来修复代码:

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

在Python 2和3版本中,引理和lemma_names不起作用,因为它们是方法。你必须改用引理()和lemma_names()。

例如 -

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

最新更新