我必须处理一堆句子(假设格式良好的英语),例如:
" Humpty dumpty坐在墙上,即humpty坐在墙上!然后,他跌倒了。他为什么摔倒?"
我对两件事感兴趣:
!
,?
和.
上思考,但是还有更复杂的问题,即"即"其中有点在其中)鉴于该陈述具有诸如"即。"之类的词,使用通用正则表达式跳过" \ W +"没有开箱即用。
正则表达式是完成上述两件事的好方法吗?如果是,有人可以指点我开始创建这样的正则表达式吗? OR 我应该创建自己的规则来查找句子的结尾吗?
规则的例子是:
如果句子以
.
或?
或!
AND 结尾,则 AND 之后会有一个空格以大写字母开头,然后上一句结束。
如果句子有"博士,则该规则失败。约翰回家了。" (.
和博士之后的空格跟随" J"在首都错误地发出新句子的开头)
答案 0 :(得分:4)
您的示例文本结构不合理,因为第一句话在语法上不正确。
你必须使用正则表达式吗?或者你只是在寻找一个好的库来解析文本以找到整个句子?
我建议使用TextBlob来解析文本。这是一个例子:
from textblob import TextBlob
blob = TextBlob("Humpty dumpty sat on a wall i.e. humpty was sitting on a wall! Then, he fell down. Dr. John (BA in Medical Engineering) helped reconstruct humpty?")
blob.sentences
# [Sentence("Humpty dumpty sat on a wall i.e."),
# Sentence("humpty was sitting on a wall!"),
# Sentence("Then, he fell down."),
# Sentence("Dr. John (BA in Medical Engineering) helped reconstruct humpty?")]