Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在NLTK 3.0中使用Wordnet从语法集中提取单词_Python_Nlp_Nltk_Wordnet - Fatal编程技术网

Python 在NLTK 3.0中使用Wordnet从语法集中提取单词

Python 在NLTK 3.0中使用Wordnet从语法集中提取单词,python,nlp,nltk,wordnet,Python,Nlp,Nltk,Wordnet,不久前,有人在SO上要求使用NLTK的wordnet包装器。以下是建议的回答之一: for synset in wn.synsets('dog'): print synset.lemmas[0].name 使用NLTK 3.0运行此代码会产生TypeError:“instancemethod”对象不可下标 我尝试了之前提出的每个解决方案(上面链接的页面上描述的每个解决方案),但每个都会抛出一个错误。因此,我想问:是否可以使用NLTK 3.0打印语法集列表的单词?我非常感谢其他人在这个问

不久前,有人在SO上要求使用NLTK的wordnet包装器。以下是建议的回答之一:

for synset in wn.synsets('dog'):
    print synset.lemmas[0].name
使用NLTK 3.0运行此代码会产生
TypeError:“instancemethod”对象不可下标


我尝试了之前提出的每个解决方案(上面链接的页面上描述的每个解决方案),但每个都会抛出一个错误。因此,我想问:是否可以使用NLTK 3.0打印语法集列表的单词?我非常感谢其他人在这个问题上提供的任何建议。

WordNet在NLTK 3.0中运行良好。您只是以错误的方式访问引理(和名称)。请尝试以下方法:

>>> import nltk
>>> nltk.__version__
'3.0.0'
>>> from nltk.corpus import wordnet as wn
>>> for synset in wn.synsets('dog'):
    for lemma in synset.lemmas():
        print lemma.name()


dog
domestic_dog
Canis_familiaris
frump
dog
dog
cad
bounder
blackguard
...
synset.lemmas
是一种方法,没有
\uuu getitem\uuuu()
方法(因此不可下标)。

使用:

wn.synset('dog.n.1').name() 
而不是:

wn.synset('dog.n.1').name 
因为NLTK更改了Synset属性以获取函数。看


这是一个很好的NLTK API更改列表,以适应py3.x:

您还可以使用
引理名称()直接转到引理名称:

wordnet.synset('dog.n.1')。引理名称() [‘狗’、‘家养狗’、‘家犬’]
它适用于多种语言

>wordnet.synset('dog.n.1')。引理名称(lang='jpn')
['イヌ', 'ドッグ', '洋犬', '犬', '飼犬', '飼い犬']

是否有理由使用最新的NLTK而不是更稳定的NLTK(尽管更早)版本?我在多语言环境中工作,我认为开放式多语言Wordnet仅在3.0中实现。但是,如果它在早期迭代中可用,我洗耳恭听!OMW似乎已经通过NLTK可用一段时间了。我将尝试恢复到更早更稳定的版本…您能说明您的尝试失败的地方吗,e、 g.您尝试了什么以及错误/投诉?具体的错误消息和MWE会很有帮助。我在以下语法中遇到错误:nltk.\uUu版本\uUu'3.0.0'我的nltk版本是3.2.1,我尝试了nltk.\uUu版本\uUUu'3.2.1'。但出现了错误。