使用这个 [x for x in wn.all_synsets('n')]
我能够得到一份 list allnouns
在 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' 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'
针对您的情况:
>>>> 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 - 从 NLTK for Python 中的同义词集列表中提取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30812859/