Как получить все гипонимы слова /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())