我使用类似于以下模式的东西来检索原始文档中Spacy句子的开始和结束索引:
nlp = spacy.en.English()
doc = nlp(fulltext)
tot = 0
prev_end=0
for sent in doc.sents:
x = re.search(re.escape(sent.text), fulltext)
print (x.start(), x.end(), ">>>", sent.text)
tot += (x.end()-prev_end)
prev_end = x.end()
if len(fulltext) == tot: print ("works")
这似乎适用于我使用的那些测试文档。但是担心我是否会忽视像spacy这样的任何'陷阱',有时会剥掉一些我不知道的角色。我呢?
PS:如果有帮助,我需要将这些索引与Brat注释文件中的索引进行比较。
答案 0 :(得分:2)
您应该能够使用sent.start_char
和sent.end_char
属性。这些完全给出了你所追求的指数:https://spacy.io/docs/api/span#attributes
同样doc.text
始终应等于原始全文。如果没有,请提交错误报告。