Question

My task is to convert any verb into appropriate noun form.

eg: improve - improvement recognize - recognition

etc ...

I tried this but I am getting an error

my code :

import nltk.app.wordnet_app as nwapp
from nltk.corpus import wordnet as wn

word = "recognize"
print("Nominalizing " + word)
verb_synsets = wn.synsets(word, pos=wn.VERB)
print nwapp.get_relations_data(word,verb_synsets)

my error :

Nominalizing recognize
Traceback (most recent call last):
  File "nominalizeme.py", line 8, in <module>
    print nwapp.get_relations_data(word,
verb_synsets)
  File "/usr/lib/python2.7/dist-packages/nltk/app/wordnet_app.py", line 412, in get_relations_data
    if synset.pos == wn.NOUN:
AttributeError: 'list' object has no attribute 'pos'
Was it helpful?

Solution

The get_relations_data() takes one synset at a time. Your verb_synsets is a list of synsets, see http://www.nltk.org/_modules/nltk/app/wordnet_app.html

>>> import nltk.app.wordnet_app as wnapp
>>> from nltk.corpus import wordnet as wn
>>> word = "recognize"
>>> verb_synsets = wn.synsets(word, pos=wn.VERB)
>>> verb_synsets
[Synset('acknowledge.v.06'), Synset('recognize.v.02'), Synset('spot.v.02'), Synset('recognize.v.04'), Synset('accredit.v.01'), Synset('greet.v.01'), Synset('acknowledge.v.04'), Synset('recognize.v.08'), Synset('recognize.v.09')]
>>> print wnapp.get_relations_data(word, verb_synsets[0])
((18, 'Antonym', []), (0, 'Hyponym', []), (1, 'Direct hypernyms', [Synset('accept.v.01')]), (26, 'Indirect hypernyms', [(Synset('accept.v.01'), [(Synset('evaluate.v.02'), [(Synset('think.v.03'), [])])])]), (17, 'Entailments', []), (14, 'Causes', []), (15, 'Also see', []), (10, 'Verb Groups', []), (25, 'Derivationally related form', []))
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top