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

时间:2019-08-22 10:10:18

标签: python nlp spacy

我想知道是否存在一种优雅的方法来获取实体相对于句子的索引。我知道我可以使用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和结束索引5。我该怎么办?

1 个答案:

答案 0 :(得分:3)

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

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