如何使用spaCy打印句子中的特定名词?

你好,我需要在使用spaCy时得到帮助。我试图做的是从我输入的句子中提取特定的名词。看看这里的少量代码,假设我想使用句子“the cat is better than a dog and a wolf”。我希望只提取第一个和第三个名词,并将它们分别赋值给随机变量。我该怎么做呢?目前的代码只是打印句子中的所有名词。谢谢你。

import spacy
frase1 = input('> \n\n')
nlp = spacy.load('en')
for t in nlp(frase1):
    if t.tag_ in ['NN']:
        print(t.text)

回答:

如果你想根据名词在句子中的位置获取名词(在你的例子中,是第一个和第三个),你可以这样做:

import spacy
import operator
nlp = spacy.load("en")
doc = nlp("The cat is better than a dog and a wolf.")
nns = [i.text for i in doc if i.tag_ == "NN"]
first, third = list(operator.itemgetter(0, 2)(nns))

如果你只想知道名词的总数,你可以这样做:

len(nns)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注