nou*_*nia 4 python tokenize nltk
我想提取文本的句子,但是我需要结果的确切位置。当前tokenize.sent_tokenize在NLTK中的实现不会返回提取句子的位置,因此我尝试了以下操作:
offset, length = 0, 0
for sentence in tokenize.sent_tokenize(text):
length = len(sentence)
yield sentence, offset, length
offset += length
Run Code Online (Sandbox Code Playgroud)
但是它不会返回句子的确切位置,因为sent_tokenize会在结果句子边界之外删除一些书写字符(例如,换行符,多余的空格和...)。我不想使用简单的正则表达式模式来拆分句子,我知道在这种情况下,这个问题很小。
谢谢。
您可以PunktSentenceTokenizer直接使用(用于实现sent_tokenize()):
from nltk.tokenize.punkt import PunktSentenceTokenizer
text = 'Rabbit say to itself "Oh dear! Oh dear! I shall be too late!"'
for start, end in PunktSentenceTokenizer().span_tokenize(text):
length = end - start
print buffer(text, start, length), start, length
Run Code Online (Sandbox Code Playgroud)
如果您不介意复制每个句子,可以使用text[start:end]代替buffer(text, start, end - start)。