2015-07-21 70 views
0

我不得不處理一堆句子(假設英文良好),例如:Python:解析英文句子的方法:正則表達式?

「矮胖坐在牆上,即矮胖坐在牆上! 「

我感興趣的兩兩件事:

  1. 字(所以逗號,分號等被忽略)
  2. 當一個特定的句子結束(我倒是覺得在!?.,但有「點」的進一步複雜化,其中有點)

鑑於該語句包含「ie」等詞,使用通用正則表達式跳過「\ W +」不能開箱即用。

是正則表達式完成上述2件事的好方法嗎?如果是這樣,有人能給我指示開始創建這樣一個正則表達式嗎? 我應該創建自己的規則來尋找句子的結尾嗎?

規則的例子是:

如果句子中.?!結束還有就是下一個單詞以大寫字母開頭,那麼後一個空間前一句話結束。

如果這句話有「約翰博士回家」這句話,這條規則就失效了。 (.和博士後r之後的空格,後面跟着大寫的「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?")] 
+0

不錯的一個!謝謝,是的一個很好的Python庫會做... – labheshr

+0

其實我只是嘗試TextBlob和即沒有得到正確對待......它假設句末在即哪個是不正確的 – labheshr

+2

沒關係,我把它拿回來,textblob工程只是很好,也就是說,後面應該跟一個英文逗號! – labheshr