首页 > 解决方案 > 如何使用 SpaCy 或 NLTK 从英语的词根或引理词中生成所有派生词?

问题描述

NLTK 或 SpaCy 中是否有一个函数可以提供可以从给定引理词中派生的所有可能术语?例如:如果词条是“呼吸”,我需要“呼吸”的所有派生词,例如“呼吸”、“呼吸”等。如果词根是“吃”,我需要“吃”、“吃”、“吃”等。

SpaCy 中的 .lemma_ 属性和 NLTK 中的 WordNetLemmatizer() 函数可用于确定单词的词条,但我该如何做相反的任务,即确定给定词条词的所有派生词条?

标签: nlpnltkspacy

解决方案


您可以将pyinflect其用作 spacy 扩展。您需要先使用pip install pyinflect. 使用它的例子:

import spacy
import pyinflect

nlp = spacy.load("en_core_web_sm")

verbs = "eating goes touch felt hit sleeping"
doc = nlp(verbs)
for token in doc:
    base = token._.inflect("VB")
    gerund = token._.inflect("VBG")
    past_tense = token._.inflect("VBD")
    past_participle = token._.inflect("VBN")
    print(token.text, "-", base, "-", gerund, "-", past_tense, "-", past_participle)

# Output:
# eating - eat - eating - ate - eaten
# goes - go - going - went - gone
# touch - touch - touching - touched - touched
# felt - feel - feeling - felt - felt
# hit - hit - hitting - hit - hit
# sleeping - sleep - sleeping - slept - slept

编辑:要获得带有简短描述的完整标签列表,请运行以下代码:

nlp = spacy.load('en_core_web_sm')
for label in nlp.get_pipe("tagger").labels:
    print(label, " -- ", spacy.explain(label))

推荐阅读