如何在空间的句子中获取实体的索引?



我想知道是否有一种优雅的方法来获取与句子相关的实体索引。我知道我可以使用ent.start_charent.end_char获取字符串中实体的索引,但该值是相对于整个字符串的。

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp(u"Apple is looking at buying U.K. startup for $1 billion. Apple just launched a new Credit Card.")
for ent in doc.ents:
print(ent.text, ent.start_char, ent.end_char, ent.label_)

我希望两个句子中的实体Apple分别指向开始索引 0 和结束索引 0 和 5。我该怎么做?

您需要从实体开始位置中减去句子的起始位置:

for ent in doc.ents:
print(ent.text, ent.start_char-ent.sent.start_char, ent.end_char-ent.sent.start_char, ent.label_)
#                                 ^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^^^^

输出:

Apple 0 5 ORG
U.K. 27 31 GPE
$1 billion 44 54 MONEY
Apple 0 5 ORG
Credit Card 26 37 ORG

最新更新