Python:解析英语句子的方法:正则表达式?

时间:2015-07-21 23:52:19

标签: python regex parsing

我必须处理一堆句子(假设格式良好的英语),例如:

" Humpty dumpty坐在墙上,即humpty坐在墙上!然后,他跌倒了。他为什么摔倒?"

我对两件事感兴趣:

  1. 单词(所以逗号,分号等被忽略)
  2. 特定句子终止的地方(我在!?.上思考,但是还有更复杂的问题,即"即"其中有点在其中)
  3. 鉴于该陈述具有诸如"即。"之类的词,使用通用正则表达式跳过" \ W +"没有开箱即用。

    正则表达式是完成上述两件事的好方法吗?如果是,有人可以指点我开始创建这样的正则表达式吗? OR 我应该创建自己的规则来查找句子的结尾吗?

    规则的例子是:

      

    如果句子以.?! AND 结尾,则 AND 之后会有一个空格以大写字母开头,然后上一句结束。

    如果句子有"博士,则该规则失败。约翰回家了。" (.和博士之后的空格跟随" J"在首都错误地发出新句子的开头)

1 个答案:

答案 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?")]