我试着用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我唯一想要的就是放一个词,得到一个同义词的列表。有人知道怎么回事吗?
编辑:我尝试了另一个建议,我在这里发现了堆栈溢出。也不起作用。
syns = wn.synsets('car')
print [l.name for s in syns for l in s.lemmas]
>>> TypeError: 'instancemethod' object is not iterable发布于 2014-11-23 17:04:17
您使用的是哪个版本的nltk (试试print nltk.__version)?您是使用python 2还是python 3?在您使用的版本中,lemma_names似乎是一个方法,而不是一个属性(在Python3的nltk3.0forPython3中就是这种情况)。如果是这样的话,那么您可能可以使用以下方法来修复代码:
for i,j in enumerate(wn.synsets('small')):
print "Synonyms:", ", ".join(j.lemma_names())发布于 2016-11-21 03:46:04
在Python2&3版本中,引理和lemma_names不工作,因为它们是方法。您必须使用引理()和lemma_names()代替。
就像-
dog = wn.synset('dog.n.01') print dog.lemma_names()
https://stackoverflow.com/questions/27091571
复制相似问题