Я использую 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 ('room.n.02'): 1, Synset ('position.n.07'): 2, Synset ('ratio.n.01'): 3, Synset ('abstraction.n.06'): 4, Synset ('entity.n.01'): 5, Synset (' ROOT '): 6} {Synset ('building.n.01'): 0, Synset ('structure.n.01'): 1, Synset ('артефакт.n.01 '): 2, Synset (' whole.n.02 '): 3, Synset (' object.n.01 '): 4, Synset (' Physical_entity.n.01 '): 5, Synset ('entity.n.01 '): 6, Synset (' ROOT '): 7}
Здесь соединение проходит через entity.n.01, который, честно говоря,корень для почти всех физических существительных.Как я могу получить что-то лучше, чем это?
Я бы хотел получить что-то вроде «парковка» -> «конструкция» -> «здание»;это может быть длиннее, но «чужие» слова не должны быть там, как, например, «обезьяна», которая также проникает в сущность.