通用論壇內容提取演算法
很久之前參加了個比賽,實現了一個提取論壇內容的演算法。
一、挖掘目標
將論壇之中的內容按以下方式存儲:
二、總體流程
三、主要貢獻
本文做的主要貢獻是實現了根據樓層相似結構地位並分割樓層。
我們查看BBS論壇頁面的網頁結構發現以下特徵:
1.在同一個web頁面中,每個樓層所在的DOM結構的節點的子樹都很相似。
2.不同樓層都位於同一個父節點下面。
3.不同樓層之間為兄弟節點。
如下圖所示:
樓層分割演算法具體步驟:
1.篩選標籤
首先將web頁面轉化為DOM結構,找出不可能成為節點的標籤並剔除例如:
<link><head><p>......
對於一個帖子而言,有這麼幾方面重要的內容:作者、時間、正文內容,這三個方面之中,作者、正文內容結構是難以預測的,但是時間我們可以通過使用正則表達式進行匹配。因此,我們遍歷出所有節點,將節點中不含有時間的節點剔除。
另外我們發現,一個樓層塊中必定有很多的標籤塊,如作者、時間、內容等等,我們對每個樓層下的節點進行遞歸循環,發現樓層下的標籤數量比較多,因此我們設置一個閾值進行過濾。將的標籤數目少的節點過濾。
2.定位樓層
經過以上幾個步驟之後,我們將每一塊與他的所有兄弟節點進行比較,找到相同的塊,並作為一個列表存儲。如下圖:
將2、3與4進行比較,8、9、10進行比較,最終我們會得到幾個列表:
[2] [3] [4] [5,6] ...[8,9,10]...
列表內節點個數最多的為樓層序列。
推薦閱讀: