2015-05-06 8 views
6

Ich versuche, das Substantiv von einem Verb mit Wordnet in Python zu bekommen. Ich möchte in der Lage sein zu bekommen:
vom Verb ‚created‘ das Substantiv ‚Schöpfer‘,Erhalten Substantiv von Verb Wordnet

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

Y wird auf eine Person bezieht

Ich habe in der Lage gewesen, es den anderen zu tun Seite: 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 

ist die Ausgabe gegeben

[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')] 

Aber ich versuche das Gegenteil zu tun. Hier ist ein Link, der aussieht, was ich tun will, aber der Code funktioniert nicht und antwortet nicht meine Anfrage:
Convert words between verb/noun/adjective forms

Antwort

3

Sie könnten so etwas wie dies versuchen:

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 

Diese Methode sucht alle derivational verwandten Substantive nach einem Verb und prüft, ob sie "person" als Hypernym haben.

Dieser Eingang

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

dieser Ausgang

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')]) 

Leider jedoch ist Ihr "Fonds" Beispiel nicht abgedeckt, als "Funder" aufgeführt wird nicht als derivationally verwandten zurückkehren Formular in WordNet "fundieren".

+0

Ich muss Ihnen danken, sollten Sie in meiner Hochschule unterrichten! ;) @ Yvespeirsman – dooms