我希望将文本分成句子。任何人都可以帮助我吗?
我还需要处理缩写。但是我的计划是在早期阶段更换这些。先生 - >先生
import re
import unittest
class Sentences:
def __init__(self,text):
self.sentences = tuple(re.split("[.!?]\s", text))
class TestSentences(unittest.TestCase):
def testFullStop(self):
self.assertEquals(Sentences("X. X.").sentences, ("X.","X."))
def testQuestion(self):
self.assertEquals(Sentences("X? X?").sentences, ("X?","X?"))
def testExclaimation(self):
self.assertEquals(Sentences("X! X!").sentences, ("X!","X!"))
def testMixed(self):
self.assertEquals(Sentences("X! X? X! X.").sentences, ("X!", "X?", "X!", "X."))
谢谢, 百里
编辑:首先,我很乐意满足上面列出的四项测试。这有助于我更好地理解正则表达式的工作原理。现在我可以在我的测试中定义一个句子为X.等。
答案 0 :(得分:5)
句子分割可能是一项非常困难的任务,尤其是当文本包含虚线缩写时。它可能需要使用已知缩写列表或训练分类器来识别它们。
我建议您使用NLTK - 它是一套开源Python模块,专为自然语言处理而设计。
您可以使用NLTK here 阅读有关句子分段的信息, 并自行决定这个工具是否适合你。
已编辑:甚至更简单 here ,此处为 source code 。 这是Punkt句子标记器,包含在NLTK中。