2017-07-14 70 views
1

我試圖從一個名詞與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 

我只需要動詞,但我得到了別人的POS太例如: 滑+++ 集([引理( '滑一個 .01.slippy。'),引理( 'err.v.01.slip')])

我該如何改變這種情況?

如果我使用該行:

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

我只得到了動詞,但是有些動詞可以不與我的名詞,例如: 獲取+++ 集([同義詞集(」 得到 .V。 01'),Synset('假設.v.03'),Synset('增長.v.08'),Synset('acquire.v.04'),Synset('acquire.v.05' ),Synset('develop.v.03'),Synset('learn.v.01')])

回答

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

但是後來我只得到了lem [0]的結果(引理('creation.n.01.creation')),我需要一個相關的表格(引理('creation.n.01.creation '),引理('creation.n.02.creation'),引理('creation.n.03.creation')) – Python123

+0

和lem [0]可以是另一個詞(可能來自synset?),例如lem [0] from「expiation」is「贖罪」: [引理('atonement.n.01.expiation'),引理('expiation.n.02.expiation')] – Python123

+0

是的,它可以是另一個詞。你可以檢查第一個字符以得到確切的動詞形式 – Sriram

相關問題