Python 在NLTK 3.0中使用Wordnet从语法集中提取单词
不久前,有人在SO上要求使用NLTK的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打印语法集列表的单词?我非常感谢其他人在这个问
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'。但出现了错误。