2015-05-06 24 views
6

Próbuję uzyskać rzeczownik od czasownika z Wordnetem w python. Chcę być w stanie uzyskać:
od czasownika „stworzył” rzeczownika „twórca”,Uzyskaj rzeczownik od czasownika Wordnet

'funded' => 'funder' 
Verb X => Noun Y 

Y odnosi się do osoby

Byłem w stanie zrobić to druga strona: Noun Y => Verb X

import nltk as nltk 
from nltk.corpus import wordnet as wn 

lem = wn.lemmas('creation') 
print lem 

related_forms = lem[0].derivationally_related_forms() 
print related_forms 

Oto wynik podany

[Lemma('creation.n.01.creation'), Lemma('creation.n.02.creation'), Lemma('creation.n.03.creation'), Lemma('initiation.n.02.creation'), Lemma('creation.n.05.Creation'), Lemma('universe.n.01.creation')] 

[Lemma('create.v.02.create'), Lemma('produce.v.02.create'), Lemma('create.v.03.create')] 

Ale staram się zrobić odwrotnie. Tu jest link, który wygląda jak to, co chcę zrobić, ale kod nie działa i nie jest odpowiedź na moje zapytanie:
Convert words between verb/noun/adjective forms

Odpowiedz

3

można spróbować coś takiego:

def nounify(verb_word): 
    set_of_related_nouns = set() 

    for lemma in wn.lemmas(wn.morphy(verb_word, wn.VERB), pos="v"): 
     for related_form in lemma.derivationally_related_forms(): 
      for synset in wn.synsets(related_form.name(), pos=wn.NOUN): 
       if wn.synset('person.n.01') in synset.closure(lambda s:s.hypernyms()): 
        set_of_related_nouns.add(synset) 

    return set_of_related_nouns 

ten metoda wyszukuje wszystkie pochodne rzeczowniki pochodne na czasownik i sprawdza, czy mają "osobę" jako hypernu.

Wejście

print nounify("created") 
print nounify("teach") 
print nounify("spoke") 

powróci to wyjście

set([Synset('creator.n.02'), Synset('creature.n.02'), Synset('creature.n.03')]) 
set([Synset('teacher.n.01')]) 
set([Synset('speaker.n.03'), Synset('speaker.n.01')]) 

Niestety, Twój „fundusz” jest przykładem nie zadaszone, jako „fundator” nie jest wymieniony jako derivationally pokrewne formularz do "finansowania" w WordNet.

+0

Muszę ci podziękować, powinieneś uczyć w moim college'u! ;) @yvespeirsman – dooms