Getting adjective from an adverb in nltk or other NLP library

后端 未结 2 1341
猫巷女王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())
    
    0 讨论(0)
  • 2020-12-16 07:21

    As MKoosej mentioned, nltk's lemmas is no longer an attribute but a method. I also made a little simplification to get the most possible word. Hope someone else can use it also:

    wordtoinv = 'unduly'
    s = []
    winner = ""
    for ss in wn.synsets(wordtoinv):
        for lemmas in ss.lemmas(): # all possible lemmas.
            s.append(lemmas)
    
    for pers in s:
        posword = pers.pertainyms()[0].name()
        if posword[0:3] == wordtoinv[0:3]:
            winner = posword
            break
    
    print winner # undue
    
    0 讨论(0)
提交回复
热议问题