Spacy,名词短语:如何使用 spacy 在文档中找到每个 noun_chunk 的名词短语跨度开始和结束标记

Spacy, noun phrases: How to locate noun phrase span start and end token of every noun_chunk in doc with spacy

我正在使用 spacy 获取文本的名词短语。 我想做的是根据单词的标记索引在文本中找到那些名词短语。

例如

import spacy

# Load English 
nlp = spacy.load("en_core_web_sm")
doc = nlp("The blue car is nicer than the white car"
noun_chunks = list(doc.noun_chunks)

for i,noun_chunk in enumerate(noun_chunks):
    for j,token in enumerate(noun_chunk):
        print(i,noun_chunk,j,token.text)

值j是token.text在名词块范围内的索引,但是我想得到[=38=的第一个词和最后一个词的token.i个数]

示例中的两个名词块是: "the red car" 和 "the white car"

所需的输出将是:

代币: 1 蓝色 2 汽车 3 是 4 更好 5 比 6 7 白色 8 汽车 9

名词块 1:"the blue car";开始 1,结束 3

名词块 2:"the white car";开始 7,结束 9

有了名词块的开头和结尾,我将能够在文档中识别名词块的跨度

谢谢

我不知道块的开始和结束方法

chunk.start 给你块跨度的起始标记号 chunk.end 给你块跨度的结束标记号