def get_word_forms(word):
"""
args
word : a word e.g "love"
returns the related word forms corresponding to the input word. the output
is a dictionary with four keys "n" (noun), "a" (adjective), "v" (verb)
and "r" (adverb). The value for each key is a python Set containing
related word forms with that part of speech.
e.g. {'a': {'lovable', 'loveable'},
'n': {'love', 'lover', 'lovers', 'loves'},
'r': set(),
'v': {'love', 'loved', 'loves', 'loving'}}
"""
word = singularize(word)
related_lemmas = get_related_lemmas(word)
related_words_dict = {"n" : set(), "a" : set(), "v" : set(), "r" : set()}
for lemma in related_lemmas:
pos = lemma.synset().pos()
if pos == "s":
pos = "a"
related_words_dict[pos].add(lemma.name())
noun_set = [noun for noun in related_words_dict["n"]]
for noun in noun_set:
related_words_dict["n"].add(inflect.engine().plural_noun(noun))
verb_set = [verb for verb in related_words_dict["v"]]
for verb in verb_set:
for conjugated_verbs in CONJUGATED_VERB_LIST:
if verb in conjugated_verbs:
for conjugated_verb in conjugated_verbs:
related_words_dict["v"].add(conjugated_verb)
adjective_set = [adjective for adjective in related_words_dict["a"]]
for adjective in adjective_set:
try:
related_words_dict["r"].add(ADJECTIVE_TO_ADVERB[adjective])
except KeyError:
pass
return related_words_dict
评论列表
文章目录