使用python中的wordnet进行分类/获取上位词类型的单词

时间:2018-06-22 06:57:20

标签: python nltk wordnet

在我的项目中,我必须找到特定单词的类别/双音类型。

例如,如果我输入Sushi / lion,则输出将显示食物/动物。主要概念是对单词进行分类。那么,如何在Python中使用nltk和WordNet获得此信息?

1 个答案:

答案 0 :(得分:1)

我不确定您的目标是否可以通过现成的解决方案实现,因为所需的抽象级别很高。就nltk / wordnet而言,您正在寻找单词的上位词(上级/上级)。例如,上一级的“寿司”可能是“海鲜”,而“苹果”可能只是“水果”。可能您将必须经过几个级别的上位字母才能获得所需的输出。作为获取上标的起点,可以使用以下代码(请参见All synonyms for word in python?):

from nltk.corpus import wordnet as wn
from itertools import chain

for i,j in enumerate(wn.synsets('apple')):
    print('Meaning', i, 'NLTK ID', j.name())
    print('Definition:', j.definition())
    print('Hypernyms:', ', '.join(list(chain(*[l.lemma_names() for l in j.hypernyms()]))))

还请注意,一个单词在使用不同的上音符时可能具有不同的含义,这会使您的任务更加复杂。

编辑

实际上,有一个现成的解决方案,称为lowest_common_hypernym

wn.synset('apple.n.01').lowest_common_hypernyms(wn.synset('sushi.n.01'))

虽然此函数非常不错,但不一定返回最明显的解决方案。在这里,它返回[Synset('matter.n.03')]