【问题标题】:segment paragraph to sentences将段落分段为句子
【发布时间】:2014-06-01 22:02:15
【问题描述】:

我正在尝试将段落分段为句子。我选择了'.'、'?'和 '!'作为分割符号。我试过了:

format = r'((! )|(. )|(? ))'
delimiter = re.compile(format)
s = delimiter.split(line)

但它给了我sre_constants.error: unexpected end of pattern

我也试过

format = [r'(! )',r'(? )',r'(. )']
delimiter = re.compile(r'|'.join(format))

它也会导致错误。

我的方法有什么问题?

【问题讨论】:

    标签: python regex python-2.7 text-segmentation


    【解决方案1】:

    .(通配符)和?(零或一,量词)是特殊的正则表达式字符,您需要对它们进行转义才能按字面意思使用它们。

    但是,在您的情况下,使用字符类会简单得多(在其中这些字符不再特殊):

    split(r'[!.?] ')
    

    字符类[...] 代表“一个字符,包含在字符类中的任何字符”。

    【讨论】:

    • 感谢您的回答。在我的情况下,我也会包含空格(通常每个句子后面都有一个空格,如果我直接使用 [.?!],对于我打印出来的每个句子,(i)前面有一个空格,(ii ) Mary 说的“What you mean?”会被分割成两句话而不是一个)
    • 看到你的更新。有用。非常感谢!将根据需要在 3 分钟内接受 :)
    • @ChuNan:确实更新了。很高兴我能帮忙
    • 赞成简短而甜蜜。我一直注意到你的正则表达式风格。是的,加载这些字符类! [[?*+.-] :)
    猜你喜欢
    • 2013-05-21
    • 2011-01-10
    • 1970-01-01
    • 2013-08-13
    • 2010-10-07
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多