你好,我想從一個HTML文檔中提取所有句子。我如何執行該操作?因爲首先有許多條件我們需要去掉標籤,那麼我們需要識別可能結束的句子。要麼 ?要麼 !也可能有像電子郵件地址和網站地址也可能有條件。在他們中我們如何製作這樣的腳本?如何從網站獲取句子html
回答
這就是所謂的編程;)。首先將任務分成更簡單的子任務並實施。例如,你的情況,我會設計出這樣的程序:
- Download and parse the HTML document
- 提取所有文本內容(特別注意
<script>
和<style>
元素) - 合併文本內容到一個長串
- 解決字符串發現語句的問題(有可能的,只是分析,直到你發現在一個終止符「!?」,然後開始一個新的句子)
- 丟棄誤報(就像空的句子,號 - 只有句子等)
如果長文本不是英文怎麼辦?如何在這種情況下得到句子? – 2011-04-15 21:00:41
@ edo888大多數西方語言都有類似的停止字符。如果沒有字符劃分句子,唯一的希望就是語言分析 - 即解析文本並應用定義句子結束或開始的規則。所有語言都沒有通用的解決方案。隨意問一個關於特定語言的新問題。這個答案的前三個步驟是獨立於語言的。 – phihag 2011-04-15 21:17:11
首先,你應該剝奪某些標記,其是內聯格式化elemnts像:
I <b>strongly</b> agree.
但你sbhould留在塊級元素,如DIV和P因爲有更強的分隔符比。 ?和!
然後您必須處理這些塊級元素中的內容。通常情況下,導航鏈接只包含一個詞,您可能需要稍後過濾它們,因此這不是刪除文檔的塊結構的正確選擇。
在這一點上,你可以安全地使用正則表達式來識別塊:
>([^<]+)<
當你有你的塊就可以過濾掉短期的人(導航elemnts)和剝離大的文本(段落)使用您的句子分隔符。
有一個有趣的問題,當一個完整的字符表示句子的結尾,什麼時候它只是一個小數點,但我把它留給你。 :)
這是一個巨大的任務,如果它需要在任意數據上提供良好的結果。你究竟需要什麼? – 2011-03-03 11:09:29