检索原始文档中的开始和结束字符索引,对于 Spacy 返回的那些句子
Retrieving the start and end character indices in the original document, for those sentences returned by Spacy
我正在使用类似于以下模式的内容来检索原始文档中 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")
这似乎适用于我使用的那几个测试文档。但是如果我忽略任何 'gotchas' 之类的 spacy 有时会剥离一些我不知道的字符,我会担心。我是吗?
PS:如果有帮助,我需要这些索引与我从 Brat 的注释文件中获得的索引进行比较。
您应该只能使用 sent.start_char
和 sent.end_char
属性。这些准确地给出了您想要的索引:https://spacy.io/docs/api/span#attributes
另外doc.text
应该总是等于原始全文。如果没有,请提交错误报告。
我正在使用类似于以下模式的内容来检索原始文档中 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")
这似乎适用于我使用的那几个测试文档。但是如果我忽略任何 'gotchas' 之类的 spacy 有时会剥离一些我不知道的字符,我会担心。我是吗?
PS:如果有帮助,我需要这些索引与我从 Brat 的注释文件中获得的索引进行比较。
您应该只能使用 sent.start_char
和 sent.end_char
属性。这些准确地给出了您想要的索引:https://spacy.io/docs/api/span#attributes
另外doc.text
应该总是等于原始全文。如果没有,请提交错误报告。