wordnet中如何判断多词A是B?
How to determine multiword A is a B in wordnet?
我在这里使用 nltk post 处理我模型的分类标签(来自 imagenet)。例如,我的模型可能会在图像上放置标签 'black bear'。我应该如何使用wordnet确定'black bear'是否是一种'animal'(动物的下称)?
我试过了this method
但诡异的部分是,当我使用下面的代码获取 'black bear' 的同义词集时,我得到一个空列表!因此我无法确定 'black bear' 是否是 'animal'
的下位词
from nltk.corpus import wordnet as wn
blackbear = wn.synsets('black bear')
这个问题有什么解决办法吗?
谢谢!
对于多词表达式,使用下划线代替空格,即
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('black bear')
[]
>>> wn.synsets('black_bear')
[Synset('asiatic_black_bear.n.01'), Synset('american_black_bear.n.01')]
并从 Determining Hypernym or Hyponym using wordnet nltk 得到 hyper/hyponym:
>>> bear = wn.synsets('bear', pos='n')[0]
>>> bear.definition()
u'massive plantigrade carnivorous or omnivorous mammals with long shaggy coats and strong claws'
>>> black_bear = wn.synsets('black_bear', pos='n')[0]
>>> black_bear.definition()
u'bear with a black coat living in central and eastern Asia'
>>> hypobear = set([i for i in bear.closure(lambda s:s.hyponyms())])
>>> hyperblackbear = set([i for i in black_bear.closure(lambda s:s.hypernyms())])
>>> black_bear in hypobear
True
>>> animal = wn.synsets('animal')[0]
>>> animal.definition()
u'a living organism characterized by voluntary movement'
>>> hypoanimal = set([i for i in animal.closure(lambda s:s.hyponyms())])
>>> black_bear in hypoanimal
True
>>> bear in hypoanimal
True
但请注意,WordNet 的覆盖范围有限,尤其是在多词表达 (MWE) 方面。
我在这里使用 nltk post 处理我模型的分类标签(来自 imagenet)。例如,我的模型可能会在图像上放置标签 'black bear'。我应该如何使用wordnet确定'black bear'是否是一种'animal'(动物的下称)?
我试过了this method 但诡异的部分是,当我使用下面的代码获取 'black bear' 的同义词集时,我得到一个空列表!因此我无法确定 'black bear' 是否是 'animal'
的下位词from nltk.corpus import wordnet as wn
blackbear = wn.synsets('black bear')
这个问题有什么解决办法吗? 谢谢!
对于多词表达式,使用下划线代替空格,即
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('black bear')
[]
>>> wn.synsets('black_bear')
[Synset('asiatic_black_bear.n.01'), Synset('american_black_bear.n.01')]
并从 Determining Hypernym or Hyponym using wordnet nltk 得到 hyper/hyponym:
>>> bear = wn.synsets('bear', pos='n')[0]
>>> bear.definition()
u'massive plantigrade carnivorous or omnivorous mammals with long shaggy coats and strong claws'
>>> black_bear = wn.synsets('black_bear', pos='n')[0]
>>> black_bear.definition()
u'bear with a black coat living in central and eastern Asia'
>>> hypobear = set([i for i in bear.closure(lambda s:s.hyponyms())])
>>> hyperblackbear = set([i for i in black_bear.closure(lambda s:s.hypernyms())])
>>> black_bear in hypobear
True
>>> animal = wn.synsets('animal')[0]
>>> animal.definition()
u'a living organism characterized by voluntary movement'
>>> hypoanimal = set([i for i in animal.closure(lambda s:s.hyponyms())])
>>> black_bear in hypoanimal
True
>>> bear in hypoanimal
True
但请注意,WordNet 的覆盖范围有限,尤其是在多词表达 (MWE) 方面。