从NLTK for Python中的同义词列表中提取单词
作者:互联网
在wn.all_synsets(‘n’)中使用这个[x for x]我可以在NLTK的帮助下从Wordnet获取所有名词的所有名词.
列表allnouns看起来像这个Synset(‘pile.n.01’),Synset(‘compost_heap.n.01’),Synset(‘mass.n.03’)等等.现在我可以使用allnouns [2]获得任何元素,这应该是Synset(‘mass.n.03’).
我想只提取单词mass但由于某种原因我不能把它当成字符串而我尝试的所有东西都显示出一个AttributeError:’Synset’对象没有属性或TypeError:’Synset’对象不是可订阅的或< bound方法Synset的Synset.name('mass.n.03')>如果我尝试使用.name或.pos
解决方法:
尝试这个解决方案怎么样:
>>>> from nltk.corpus import wordnet as wn
>>>> wn.synset('mass.n.03').name().split(".")[0]
'mass'
对于你的情况:
>>>> allnouns = [x for x in wn.all_synsets('n')]
第23个索引的项目是“Synset(‘substance.n.07’)”.现在,您可以提取其名称字段
>>>> allnouns[23].name().split(".")[0]
'substance' #output
如果您只想要列表中“名词”类别的同义词集的“名称”字段,请使用:
>>>> [x.name().split(".")[0] for x in wn.all_synsets('n')]
应该准确地给出你需要的结果.
注意:在wordnet中,name不是属性,而是一个函数!
标签:python,list-comprehension,nlp,nltk,wordnet 来源: https://codeday.me/bug/20190609/1204372.html