2011-03-03 208 views
0

你好,我想從一個HTML文檔中提取所有句子。我如何執行該操作?因爲首先有許多條件我們需要去掉標籤,那麼我們需要識別可能結束的句子。要麼 ?要麼 !也可能有像電子郵件地址和網站地址也可能有條件。在他們中我們如何製作這樣的腳本?如何從網站獲取句子html

+6

這是一個巨大的任務,如果它需要在任意數據上提供良好的結果。你究竟需要什麼? – 2011-03-03 11:09:29

回答

6

這就是所謂的編程;)。首先將任務分成更簡單的子任務並實施。例如,你的情況,我會設計出這樣的程序:

  1. Download and parse the HTML document
  2. 提取所有文本內容(特別注意<script><style>元素)
  3. 合併文本內容到一個長串
  4. 解決字符串發現語句的問題(有可能的,只是分析,直到你發現在一個終止符「!?」,然後開始一個新的句子)
  5. 丟棄誤報(就像空的句子,號 - 只有句子等)
+0

如果長文本不是英文怎麼辦?如何在這種情況下得到句子? – 2011-04-15 21:00:41

+0

@ edo888大多數西方語言都有類似的停止字符。如果沒有字符劃分句子,唯一的希望就是語言分析 - 即解析文本並應用定義句子結束或開始的規則。所有語言都沒有通用的解決方案。隨意問一個關於特定語言的新問題。這個答案的前三個步驟是獨立於語言的。 – phihag 2011-04-15 21:17:11

0

首先,你應該剝奪某些標記,其是內聯格式化elemnts像:

I <b>strongly</b> agree. 

但你sbhould留在塊級元素,如DIVP因爲有更強的分隔符比。 ?和!

然後您必須處理這些塊級元素中的內容。通常情況下,導航鏈接只包含一個詞,您可能需要稍後過濾它們,因此這不是刪除文檔的塊結構的正確選擇。

在這一點上,你可以安全地使用正則表達式來識別塊:

>([^<]+)< 

當你有你的塊就可以過濾掉短期的人(導航elemnts)和剝離大的文本(段落)使用您的句子分隔符。

有一個有趣的問題,當一個完整的字符表示句子的結尾,什麼時候它只是一個小數點,但我把它留給你。 :)