当句号后没有空格时,如何将文本拆分成句子?

2024-06-16 12:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一条短信

Lapindo Brantas公司运营的东爪哇泗水附近的一口气井从去年5月开始喷出蒸汽泥浆,淹没了村庄、工业和油田。PT Lapindo Brantas运营的东爪哇泗水附近的一口气井从去年5月开始喷出蒸汽泥浆,淹没了村庄、工厂和油田字段。最后一个周,印尼社会福利协调部长阿布里扎尔巴克里(Aburizal Bakrie)的家族企业控制着拉宾多布兰塔斯(Lapindo Brantas),他说火山是一场与钻探无关的“自然灾害”活动。总统Susilo Bambang Yudhoyono上个月命令Lapindo支付3.8万亿卢比(4.207亿美元)的赔偿和费用

我想把它分成句子。NLTK或我在网上找到的任何标准regex都失败了。在


Tags: pt工厂公司短信泥浆蒸汽工业油田
2条回答

您可以使用regex肯定的lookahead在句子末尾添加空格,然后将其传递给您选择的工具。这会为没有空格的句点添加空格,但会跳过逗号等非字母数字。通过坚持使用字符类而不是A-Z,这适用于任何语言。在

>>> re.sub(r'\.(?=[^ \W\d])', '. ', 'Foo bar.Baz Inc., foobar. 1.1, and abc._')
'Foo bar. Baz Inc., foobar. 1.1, and abc. _'

您可以通过添加另一个前瞻性搜索斜杠来捕获一些url

^{pr2}$

您可以使用此正则表达式来捕获后跟新句子的点

(\.)(?:[A-Z]) 你可以把它传给re.sub公司用r'\1\n'作为替换

parsed_text = re.sub(r'(\.)(?:[A-Z])',r'\1\n',your_text)

你也可以把它分成一个句子列表(但是你会失去结尾的点)

 sentence_list = re.split(r'\.(?=[A-Z])',your_text)

相关问题 更多 >