使用 NLTK,当给定某个词时,如何生成不同形式的词?

with NLTK, How can I generate different form of word, when a certain word is given?

例如,假设给定了"happy"这个词,我想生成其他形式的happy,比如happiness,happyly...等等

我已经阅读了一些关于 Whosebug 和 NLTK 参考资料的其他问题。然而,只有词性标注,变体就像识别句子中某些词的语法形式,而不是生成不同词的列表。有没有人遇到过类似的问题?谢谢。

此类信息包含在 NLTK 的 WordNet 实现的 Lemma class 中。具体来说,它位于 Lemma.derivationally_related_forms().

这是一个示例脚本,用于查找 "happy" 的所有可能派生形式:

from nltk.corpus import wordnet as wn

forms = set() #We'll store the derivational forms in a set to eliminate duplicates
for happy_lemma in wn.lemmas("happy"): #for each "happy" lemma in WordNet
    forms.add(happy_lemma.name()) #add the lemma itself
    for related_lemma in happy_lemma.derivationally_related_forms(): #for each related lemma
        forms.add(related_lemma.name()) #add the related lemma

很遗憾,WordNet 中的信息并不完整。上面的脚本找到了 "happy" 和 "happiness",但是找不到 "happily",即使有多个 "happily" 引理。