nlp - 如何使用 SpaCy 或 NLTK 从英语的词根或引理词中生成所有派生词?
问题描述
NLTK 或 SpaCy 中是否有一个函数可以提供可以从给定引理词中派生的所有可能术语?例如:如果词条是“呼吸”,我需要“呼吸”的所有派生词,例如“呼吸”、“呼吸”等。如果词根是“吃”,我需要“吃”、“吃”、“吃”等。
SpaCy 中的 .lemma_ 属性和 NLTK 中的 WordNetLemmatizer() 函数可用于确定单词的词条,但我该如何做相反的任务,即确定给定词条词的所有派生词条?
解决方案
您可以将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))
推荐阅读
- javascript - 如何将对象添加到 JavaScript 中的特定位置?
- python - 构建 Python Wheel 包时如何指定构建目录?
- java - 如何在 Java 中获取时间戳为 48962-08-06T23:16:59.000Z 的 Instant 对象
- java - 输入的所有奇数位的总和
- c - 如何检测用户何时使用程序>文件?
- python - 导入特定模块不起作用-kivy apk
- c - VS 链接器找不到 PsGetProcessWow64Process
- windows - 使用带有 virtualbox 执行器的 gitlab-runner 确定 vagrant 的 CI/CD 管道的正确方法?
- c# - 计算四面体外心的问题
- flutter - 键盘溢出 * 像素。无法使用 SingleChildScrollView 或 ListView