gpt4 book ai didi

python - 从动词 Wordnet 中获取名词

转载 作者:太空狗 更新时间:2023-10-29 21:54:57 25 4
gpt4 key购买 nike

我正在尝试使用 Python 中的 Wordnet 从动词中获取名词。我希望能够得到:
从动词“创造”到名词“创造者”,

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

Y 指的是一个人

我已经能够在另一边做到这一点: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

这是给定的输出

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

但是,我正试图做相反的事情。这是一个看起来像我想做的链接,但代码不起作用并且不回答我的请求:
Convert words between verb/noun/adjective forms

最佳答案

你可以尝试这样的事情:

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

此方法查找所有与动词派生相关的名词,并检查它们是否具有“person”作为上位词。

这个输入

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

将返回此输出

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

不幸的是,您的“基金”示例未包含在内,因为“资助者”未在 WordNet 中列为与“基金”相关的派生形式。

关于python - 从动词 Wordnet 中获取名词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30081982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com