Получить глагол от существительного Wordnet python

Я пытаюсь получить глагол от существительного с помощью Wordnet в python. Вот код:

nouns = ["slip", "frustration"]
def nominalization(noun_word):
   set_of_related_verbs = set()

   for lemma in wn.lemmas(wn.morphy(noun_word, wn.NOUN), pos="n"):
      for related_form in lemma.derivationally_related_forms():
        set_of_related_verbs.add(related_form)
   return set_of_related_verbs

for word in nouns:
    set_of_words = nominalization(word)
    if len(set_of_words) >= 1:
        print word + "+++"
        print set_of_words

Мне нужны только глаголы, но я получаю и другие поз. например: скольжение+++ set([Lemma('slippery.a.01.slippy'), Lemma('err.v.01.slip') ])

Как я могу это изменить?

Если я использую строку:

for synset in wn.synsets(related_form.name(), pos=wn.VERB):

Я получаю только глаголы, но некоторые глаголы могут быть не связаны с моим существительным, например: Приобретение+++ set([Synset('get.v.01'), Synset('предположим.v.03'), Synset('grow.v.08'), Synset('acquire.v.04'), Synset('acquire.v.05'), Synset( 'разработать.v.03'), Synset('учиться.v.01')])


person Python123    schedule 14.07.2017    source источник


Ответы (1)


Вы можете вывести леммы и родственные словоформы, из которых можно извлечь глаголы:

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

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

Результат:

[Lemma('frustration.n.01.frustration'), Lemma('frustration.n.02.frustration'), Lemma('frustration.n.03.frustration')]

Из которых можно получить такие глаголы:

related_forms = [lem[i].derivationally_related_forms() for i in range(len(lem))]
print related_forms

Результат:

[[Lemma('thwart.v.01.frustrate')], [Lemma('thwart.v.01.frustrate')], [Lemma('thwart.v.01.frustrate'), Lemma('torment.v.02.frustrate')]]
person Sriram Sitharaman    schedule 14.07.2017
comment
Но тогда я получаю только результаты для lem[0] (Lemma('creation.n.01.creation')) и мне нужны соответствующие формы для всех из них (Lemma('creation.n.01.creation'), Лемма('творение.n.02.творение'), Лемма('творение.n.03.творение')) - person Python123; 14.07.2017
comment
И lem[0] может быть другим словом (вероятно, из synset?), например lem[0] от expiation is atonement: [Lemma('atonement.n.01.expiation'), Lemma('expiation.n.02 .искупление')] - person Python123; 14.07.2017
comment
Да, это может быть другое слово. Вы можете проверить первый символ, чтобы получить точную форму глагола - person Sriram Sitharaman; 14.07.2017
comment
Я получаю другие pos с этим кодом: [Lemma('steal.v.02.slip'), Lemma('skid.v.04.slip'), Lemma('dislocate.v.01.slip'), Лемма('slippery.a.01.slippy')] :( - person Python123; 15.07.2017
comment
вам нужна прямая глагольная форма определенного слова? - person Sriram Sitharaman; 15.07.2017
comment
что, если я хочу получить в конечном результате только глаголы? возвращенный набор, кажется, содержит другие формы, такие как существительные и прилагательные. - person AveryLiu; 16.05.2020