Как получить все гипонимы слова /synset в python nltk и wordnet?

У меня есть список всех существительных в wordnet, теперь я хочу оставить только слова, которые являются транспортными средствами, и удалить остальные. Как мне это сделать? Ниже приведен псевдокод, который я хочу сделать, но я не знаю, как заставить его работать

for word in wordlist:
  if not "vehicle" in wn.synsets(word):
    wordlist.remove(word)

2 ответа

Решение
from nltk.corpus import wordnet as wn
vehicle = wn.synset('vehicle.n.01')
typesOfVehicles = list(set([w for s in vehicle.closure(lambda s:s.hyponyms()) for w in s.lemma_names]))

Это даст вам все уникальные слова из каждого набора, который является гипонимом существительного "транспортное средство" (1-е чувство).

def get_hyponyms(synset):
    hyponyms = set()
    for hyponym in synset.hyponyms():
        hyponyms |= set(get_hyponyms(hyponym))
    return hyponyms | set(synset.hyponyms())
Другие вопросы по тегам