Search code examples
pythonnlpnltkwordnet

How to generate a list of antonyms for adjectives in WordNet using Python


I want to do the following in Python (I have the NLTK library, but I'm not great with Python, so I've written the following in a weird pseudocode):

from nltk.corpus import wordnet as wn  #Import the WordNet library
for each adjective as adj in wn        #Get all adjectives from the wordnet dictionary
    print adj & antonym                #List all antonyms for each adjective 
once list is complete then export to txt file

This is so I can generate a complete dictionary of antonyms for adjectives. I think it should be doable, but I don't know how to create the Python script. I'd like to do it in Python as that's the NLTK's native language.


Solution

  • from nltk.corpus import wordnet as wn
    
    for i in wn.all_synsets():
        if i.pos() in ['a', 's']: # If synset is adj or satelite-adj.
            for j in i.lemmas(): # Iterating through lemmas for each synset.
                if j.antonyms(): # If adj has antonym.
                    # Prints the adj-antonym pair.
                    print j.name(), j.antonyms()[0].name()
    

    Note that there will be reverse duplicates.

    [out]:

    able unable
    unable able
    abaxial adaxial
    adaxial abaxial
    acroscopic basiscopic
    basiscopic acroscopic
    abducent adducent
    adducent abducent
    nascent dying
    dying nascent
    abridged unabridged
    unabridged abridged
    absolute relative
    relative absolute
    absorbent nonabsorbent
    nonabsorbent absorbent
    adsorbent nonadsorbent
    nonadsorbent adsorbent
    absorbable adsorbable
    adsorbable absorbable
    abstemious gluttonous
    gluttonous abstemious
    abstract concrete
    ...