Here are some helper functions to make NLTK easier to use, and two examples of how those functions can be used.
def download_nltk_dependencies_if_needed(): try: nltk.word_tokenize('foobar') except LookupError: nltk.download('punkt') try: nltk.pos_tag(nltk.word_tokenize('foobar')) except LookupError: nltk.download('averaged_perceptron_tagger') def get_some_word_synonyms(word): word = word.lower() synonyms = [] synsets = wordnet.synsets(word) if (len(synsets) == 0): return [] synset = synsets[0] lemma_names = synset.lemma_names() for lemma_name in lemma_names: lemma_name = lemma_name.lower().replace('_', ' ') if (lemma_name != word and lemma_name not in synonyms): synonyms.append(lemma_name) return synonyms def get_all_word_synonyms(word): word = word.lower() synonyms = [] synsets = wordnet.synsets(word) if (len(synsets) == 0): return [] for synset in synsets: lemma_names = synset.lemma_names() for lemma_name in lemma_names: lemma_name = lemma_name.lower().replace('_', ' ') if (lemma_name != word and lemma_name not in synonyms): synonyms.append(lemma_name) return synonyms
Example 1: get_some_word_synonyms
This approach tends to return the most relevant synonyms, but some words like "angry" won't return any synonyms.
download_nltk_dependencies_if_needed() words = ['dog', 'fire', 'erupted', 'throw', 'sweet', 'center', 'said', 'angry', 'iPhone', 'ThisIsNotARealWorddd', 'awesome', 'amazing', 'jim dandy', 'change'] for word in words: print('Synonyms for {}:'.format(word)) synonyms = get_some_word_synonyms(word) for synonym in synonyms: print(" {}".format(synonym))
Example 1 output:
Synonyms for dog: domestic dog canis familiaris Synonyms for fire: Synonyms for erupted: erupt break out Synonyms for throw: Synonyms for sweet: henry sweet Synonyms for center: centre middle heart eye Synonyms for said: state say tell Synonyms for angry: Synonyms for iPhone: Synonyms for ThisIsNotARealWorddd: Synonyms for awesome: amazing awe-inspiring awful awing Synonyms for amazing: amaze astonish astound Synonyms for jim dandy: Synonyms for change: alteration modification
Example 2: get_all_word_synonyms
This approach will return all possible synonyms, but some may not be very relevant.
download_nltk_dependencies_if_needed() words = ['dog', 'fire', 'erupted', 'throw', 'sweet', 'center', 'said', 'angry', 'iPhone', 'ThisIsNotARealWorddd', 'awesome', 'amazing', 'jim dandy', 'change'] for word in words: print('Synonyms for {}:'.format(word)) synonyms = get_some_word_synonyms(word) for synonym in synonyms: print(" {}".format(synonym))
Example 2 output:
Synonyms for dog: domestic dog canis familiaris frump cad bounder blackguard hound heel frank frankfurter hotdog hot dog wiener wienerwurst weenie pawl detent click andiron firedog dog-iron chase chase after trail tail tag give chase go after track Synonyms for fire: firing flame flaming ardor ardour fervor fervour fervency fervidness attack flak flack blast open fire discharge displace give notice can dismiss give the axe send away sack force out give the sack terminate go off arouse elicit enkindle kindle evoke raise provoke burn burn down fuel Synonyms for erupted: erupt break out irrupt flare up flare break open burst out ignite catch fire take fire combust conflagrate come out break through push through belch extravasate break burst recrudesce Synonyms for throw: stroke cam stroke shed cast cast off shake off throw off throw away drop thrust give flip switch project contrive bewilder bemuse discombobulate hurl hold have make confuse fox befuddle fuddle bedevil confound Synonyms for sweet: henry sweet dessert afters confection sweetness sugariness angelic angelical cherubic seraphic dulcet honeyed mellifluous mellisonant gratifying odoriferous odorous perfumed scented sweet-scented sweet-smelling fresh unfermented sugared sweetened sweet-flavored sweetly Synonyms for center: centre middle heart eye center field centerfield midpoint kernel substance core essence gist heart and soul inwardness marrow meat nub pith sum nitty-gritty center of attention centre of attention nerve center nerve centre snapper plaza mall shopping mall shopping center shopping centre focus on center on revolve around revolve about concentrate on concentrate focus pore rivet halfway midway Synonyms for said: state say tell allege aver suppose read order enjoin pronounce articulate enounce sound out enunciate aforesaid aforementioned Synonyms for angry: furious raging tempestuous wild Synonyms for iPhone: Synonyms for ThisIsNotARealWorddd: Synonyms for awesome: amazing awe-inspiring awful awing Synonyms for amazing: amaze astonish astound perplex vex stick get puzzle mystify baffle beat pose bewilder flummox stupefy nonplus gravel dumbfound astonishing awe-inspiring awesome awful awing Synonyms for jim dandy: Synonyms for change: alteration modification variety alter modify vary switch shift exchange commute convert interchange transfer deepen
wn.synsets('small'), it has the exact same top-level members as the web page.wn.synsets('word')[i].hypernymsis just going to return you a bound method; I think you wanted a()at the end…