首页 > 解决方案 > 如何在Spacy(Python)中获取所有名词短语

问题描述

我想从一个句子中提取“所有”名词短语。我想知道我该怎么做。我有以下代码:

doc2 = nlp("what is the capital of Bangladesh?")
for chunk in doc2.noun_chunks:
    print(chunk)

输出:

1. what

2. the capital

3. bangladesh

预期的:

孟加拉国首都

我已经尝试过 spacy doc 和 StackOverflow 的答案。没有任何效果。似乎只有cTakes并且Stanford core NLP可以给出如此复杂的 NP。

任何帮助表示赞赏。

标签: pythonnlpspacy

解决方案


Spacy 清楚地将名词块定义为:

基本名词短语或“NP 块”是一个名词短语,它不允许其他 NP 嵌套在其中——因此没有 NP 级别的协调,没有介词短语,也没有关系从句。”(https://spacy .io/api/doc#noun_chunks )

如果您以不同的方式处理依赖项解析,允许介词修饰符和嵌套的短语/块,那么您最终可以得到您正在寻找的内容。

我打赌你可以很容易地修改现有的 spacy 代码来做你想做的事:

https://github.com/explosion/spaCy/blob/06c6dc6fbcb8fbb78a61a2e42c1b782974bd43bd/spacy/lang/en/syntax_iterators.py


推荐阅读