我正在尝试使用 Wordnet 获取给定单词的同义词。问题是尽管我做的和这里写的一样:here ,它返回错误。
这是我的代码:
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 的 nltk 3.0 就是这种情况)。如果是这种情况,那么您可能可以改用它来修复您的代码:
for i,j in enumerate(wn.synsets('small')):
print "Synonyms:", ", ".join(j.lemma_names())
关于python - 从 synset 获取同义词返回错误 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27091571/