我使用nltk和wordnet链接属于某种关系组的单词。例如,“停车场”和“建筑”应该有一些家长的联系。我用的是超自然词,但有些词是没有联系的。
x = wordnet.synset('parking.n.01')
y = wordnet.synset('building.n.01')
print(x._shortest_hypernym_paths(y))
print(y._shortest_hypernym_paths(x)){Synset('parking.n.01'):0,Synset(‘ROOT.n.02’):1,Synset(‘plaction.n.07’):2,Synset('relation.n.01'):3,Synset(‘Accaction.n.06’):4,Synset(‘物.n.01’):5,Synset('ROOT'):6} {Synset('building.n.01'):0,Synset(‘struc.nture.01’):1,同步集(‘artifact.n.01’):2,同步集(‘整体性.n.02’):3,同步集(‘object.n.01’):4,同步集(‘physical_entity.n.01’):5,同步集(‘实体.n.01’):6,同步集(‘根’):7}
在这里,这种联系通过‘实体,n.01’,诚实地说是几乎所有物理名词的根。我怎么能得到比这更好的东西呢?
我想要一些像‘泊车’->‘结构’->‘建筑’;它可以是更长的,但“外星”词不应该在那里,例如‘猴子’,它也拉链实体。
发布于 2019-02-12 13:47:01
找到了一些查看可能性的有用方法:
def getShortestHypernymPath(word1, word2, nulls=False):
syns1 = wordnet.synsets(word1)
syns2 = wordnet.synsets(word2)
for s1 in syns1:
for s2 in syns2:
lch = s2.lowest_common_hypernyms(s1)
if len(lch) > 0 or nulls:
print(s1, '<-->', s2, '===', lch)
nlpf.getShortestHypernymPath('parking', 'building', nulls=False)这将返回:
同步集(‘parking.n.01’)<->同步集(‘building.n.01’) === Synset(‘实体.n.01’)合成集(‘parking.n.01’)<->合成集(‘struction.n.01’) === Synset(‘抽象.n.06’)合成集(‘parking.n.01’)<->合成集(‘struction.n.07’) ===合集(‘抽象.n.06’)( 07') === Synset('act.n.02') Synset('parking.n.02') <->同步集(‘building.n.04’) === Synset(‘抽象.n.06’)合成集(‘park.v.02’)<->同步集(‘build.v.05’) ===同步集(‘Control.v.01’)
所以我至少可以调解一下。
https://stackoverflow.com/questions/54636917
复制相似问题