将文本拆分为句子

时间:2011-08-25 10:17:12

标签: python regex python-3.x text-segmentation

我希望将文本分成句子。任何人都可以帮助我吗?

我还需要处理缩写。但是我的计划是在早期阶段更换这些。先生 - >先生

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.等。

1 个答案:

答案 0 :(得分:5)

句子分割可能是一项非常困难的任务,尤其是当文本包含虚线缩写时。它可能需要使用已知缩写列表或训练分类器来识别它们。

我建议您使用NLTK - 它是一套开源Python模块,专为自然语言处理而设计。

您可以使用NLTK here 阅读有关句子分段的信息, 并自行决定这个工具是否适合你。

已编辑:甚至更简单 here ,此处为 source code 。 这是Punkt句子标记器,包含在NLTK中。

相关问题