首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从synset获取同义词返回错误- Python

从synset获取同义词返回错误- Python
EN

Stack Overflow用户
提问于 2014-11-23 16:50:55
回答 2查看 3.6K关注 0票数 2

我试着用Wordnet来获取给定单词的同义词。问题是,尽管我所做的与这里所写的相同:here,但它返回错误。

这是我的代码:

代码语言:javascript
复制
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

我唯一想要的就是放一个词,得到一个同义词的列表。有人知道怎么回事吗?

编辑:我尝试了另一个建议,我在这里发现了堆栈溢出。也不起作用。

代码语言:javascript
复制
syns = wn.synsets('car')
print [l.name for s in syns for l in s.lemmas]

>>> TypeError: 'instancemethod' object is not iterable
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-23 17:04:17

您使用的是哪个版本的nltk (试试print nltk.__version)?您是使用python 2还是python 3?在您使用的版本中,lemma_names似乎是一个方法,而不是一个属性(在Python3的nltk3.0forPython3中就是这种情况)。如果是这样的话,那么您可能可以使用以下方法来修复代码:

代码语言:javascript
复制
for i,j in enumerate(wn.synsets('small')):
    print "Synonyms:", ", ".join(j.lemma_names())
票数 10
EN

Stack Overflow用户

发布于 2016-11-21 03:46:04

在Python2&3版本中,引理和lemma_names不工作,因为它们是方法。您必须使用引理()和lemma_names()代替。

就像-

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27091571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档