pythonnltkwordnet

How to get all the hyponyms of a word/synset in python nltk and wordnet?


I have a list of all the nouns in WordNet. I want to remove all the nouns that are not vehicles. How do I do it? Below is the pseudo-code I want to make, but I do not know how to make it work:

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

Solution

  • 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()]))
    

    This will give you all the unique words from every synset that is a hyponym of the noun "vehicle" (1st sense).