Python 如何获得SENT的索引';什么是空间的开始和结束?

Python 如何获得SENT的索引';什么是空间的开始和结束?,python,nlp,spacy,Python,Nlp,Spacy,我不熟悉使用spacy。我有一个场景,在这个场景中,我必须得到句子开始和结束的索引。如果我使用doc。然后我得到一份Sent的名单。sent.beg和sent.end打印令牌索引,但我需要字符索引 for sent in doc.sents: print(sent.start,sent.end) #prints token index 例如: completeText = "Hi, I am using StackOverflow. The community is

我不熟悉使用spacy。我有一个场景,在这个场景中,我必须得到句子开始和结束的索引。如果我使用doc。然后我得到一份Sent的名单。sent.beg和sent.end打印令牌索引,但我需要字符索引

for sent in doc.sents:
    print(sent.start,sent.end)     #prints token index
例如:

completeText = "Hi, I am using StackOverflow. The community is great."
nlp = spacy.load('en_core_web_sm')
nlp.add_pipe(nlp.create_pipe('sentencizer'))
doc = nlp(completeText)
for sent in doc.sents:
    print(sent.start,sent.end)  #prints 0,7 and 7,12 the token indices
上面的print语句只打印令牌索引,不打印字符索引。我想要的输出是0,29和30,54

我试着得到句子的长度如下。我在最后添加了一个if语句,因为句子中忽略了句号后的空格

start = [0] * len(list(doc.sents))
end = [0] * len(list(doc.sents))
for index, i in enumerate(doc.sents):

    if index !=0:
        start[index] = end[index-1] + 1

    length += len(str(i))

    if index == 0:
         end[index] = length
    else:
        end[index] = length 
    if end[index] + 1 < len(sent) and sent[end[index]+1] == " ":        
        length += 1
start=[0]*len(列表(doc.sents))
结束=[0]*len(列表(文件发送))
对于索引,枚举中的i(doc.sents):
如果索引=0:
开始[索引]=结束[索引-1]+1
长度+=长度(str(i))
如果索引==0:
结束[索引]=长度
其他:
结束[索引]=长度
如果结束[索引]+1
如果在完全停止后只有空格,则此功能可以正常工作。但是在完整的文本中(超过10000行),我没有得到正确的答案。spacy是否忽略了任何其他字符,如上面提到的,包括在Sent中


有更好的方法吗?

您可以使用
start\u char
end\u char

for sent in doc.sents:
    print(sent.start_char,sent.end_char) 
一个句子是一个空间跨度,包含了许多有用的属性,这些属性都包含在本文中