Getting adjective from an adverb in nltk or other NLP library

后端 未结 2 1340
猫巷女王i
猫巷女王i 2020-12-16 06:28

Is there a way to get an adjective corresponding to a given adverb in NLTK or other python library. For example, for the adverb \"terribly\", I need to get

2条回答
  •  醉梦人生
    2020-12-16 06:59

    There is a relation in wordnet that connects the adjectives to adverbs and vice versa.

    >>> from itertools import chain
    >>> from nltk.corpus import wordnet as wn
    >>> from difflib import get_close_matches as gcm
    >>> possible_adjectives = [k.name for k in chain(*[j.pertainyms() for j in chain(*[i.lemmas for i in wn.synsets('terribly')])])]
    ['terrible', 'atrocious', 'awful', 'rotten']
    >>> gcm('terribly',possible_adjectives)
    ['terrible']
    

    A more human readable way to computepossible_adjective is as followed:

    possible_adj = []
    for ss in wn.synsets('terribly'):
      for lemmas in ss.lemmas: # all possible lemmas.
        for lemma in lemmas: 
          for ps in lemma.pertainyms(): # all possible pertainyms.
            for p in ps:
              for ln in p.name: # all possible lemma names.
                possible_adj.append(ln)
    

    EDIT: In the newer version of NLTK:

    possible_adj = []
    for ss in wn.synsets('terribly'):
      for lemmas in ss.lemmas(): # all possible lemmas
          for ps in lemmas.pertainyms(): # all possible pertainyms
              possible_adj.append(ps.name())
    

提交回复
热议问题