fac*_*off 4 python nlp list-comprehension nltk wordnet
使用此功能,[x for x in wn.all_synsets('n')]我可以在allnounsNLTK的帮助下获取Wordnet中所有名词的列表.
列表allnouns看起来像这样Synset('pile.n.01'), Synset('compost_heap.n.01'), Synset('mass.n.03'),等等.现在我可以通过使用得到任何元素allnouns[2],这应该是Synset('mass.n.03').
我想只提取单词质量,但由于某种原因我不能把它当作一个字符串,我尝试的所有东西都显示AttributeError: 'Synset' object has no attribute或TypeError: 'Synset' object is not subscriptable或者<bound method Synset.name of Synset('mass.n.03')>如果我尝试使用.name或.pos
尝试这个解决方案怎么样:
>>>> from nltk.corpus import wordnet as wn
>>>> wn.synset('mass.n.03').name().split(".")[0]
'mass'
Run Code Online (Sandbox Code Playgroud)
对于你的情况:
>>>> allnouns = [x for x in wn.all_synsets('n')]
Run Code Online (Sandbox Code Playgroud)
第23个索引的项目是"Synset('substance.n.07')".现在,您可以提取其名称字段
>>>> allnouns[23].name().split(".")[0]
'substance' #output
Run Code Online (Sandbox Code Playgroud)
如果您只想要列表中"名词"类别的同义词的"名称"字段,请使用:
>>>> [x.name().split(".")[0] for x in wn.all_synsets('n')]
Run Code Online (Sandbox Code Playgroud)
应该准确地给出你需要的结果.
注意:在wordnet中,name不是属性,而是一个函数!