Ich arbeite zur Zeit an einem Linguistik-Tool, welches aus gegebenen Verben Nomen bilden soll (wenn möglich jeweils DAS dazugehörige Nomen, d.h. beispielsweise "to die --> death" usw.).
Für die englische Sprache konnte ich das Tool erfolgreich erstellen. Nun meine Frage: Wäre das auch auf Deutsch möglich? Also das heisst: Gibt es Ressourcen, sodass ich so wenig wie nötig am Code ändern muss, um dasselbe auf Deutsch hinzukriegen? (Bsp.: "sprechen" --> "Sprache", ...) ?
Hier ist mein Code, welcher für's Englische ganz gut funktioniert:
Code: Alles auswählen
from nltk.corpus import wordnet as wn
def nounify(verb_word):
""" Transform a verb to the closest noun: die -> death """
verb_synsets = wn.synsets(verb_word, pos="v")
# Word not found
if not verb_synsets:
return []
# Get all verb lemmas of the word
verb_lemmas = [l for s in verb_synsets for l in s.lemmas() if (s.name()).split('.')[1] == 'v']
# Get related forms
derivationally_related_forms = [(l, l.derivationally_related_forms()) for l in verb_lemmas]
# filter only the nouns
related_noun_lemmas = [l for drf in derivationally_related_forms for l in drf[1] if l.synset().name().split('.')[1] == 'n']
# Extract the words from the lemmas
words = [l.name for l in related_noun_lemmas]
len_words = len(words)
# Build the result in the form of a list containing tuples (word, probability)
result = [(w, float(words.count(w))/len_words) for w in set(words)]
result.sort(key=lambda w: -w[1])
# return all the possibilities sorted by probability
return result
if __name__ == '__main__':
print nounify("sprechen")
