如何在Spacy(Python)中获取所有名词短语

时间:2019-03-10 11:15:46

标签: python nlp spacy

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

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的答案。没事。看来只有cTakesStanford core NLP才能给出如此复杂的NP。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

Spacy明确地将名词块定义为:

  

基本名词短语或“ NP块”是不允许将其他NP嵌套在其中的名词短语-因此,没有NP级别的协调,介词短语和相关从句。”({{ 3}})

如果您以不同的方式处理依赖项解析,允许介词修饰语和嵌套短语/块,那么您最终将得到所需的结果。

我敢打赌,您可以轻松地修改现有的spacy代码以执行您想要的操作:

https://spacy.io/api/doc#noun_chunks

答案 1 :(得分:0)

对于仍在寻找此答案的人

noun_pharses=set()    
for nc in doc.noun_chunks:
    for np in [nc, doc[nc.root.left_edge.i:nc.root.right_edge.i+1]]:
       noun_pharses.add(np)

这就是我得到所有复杂名词短语的方式