鄧良聰 晏先政
摘 要:BBS型網(wǎng)站作為整個(gè)互聯(lián)網(wǎng)生態(tài)中的重要一環(huán),其中蘊(yùn)含著海量的數(shù)據(jù),也是我們獲取信息的重要來源。如何針對這些不同類型的論壇網(wǎng)頁,設(shè)計(jì)一種通用的算法,對其主題貼和回帖等有價(jià)值的信息進(jìn)行提取,是文章所研究的主要內(nèi)容。文章在基于對不同類型網(wǎng)頁結(jié)構(gòu)的深入分析,并充分考慮了論壇網(wǎng)頁類型的不一致性、單個(gè)網(wǎng)站的易爬取性及通用爬蟲的不可靠性,設(shè)計(jì)了一種基于網(wǎng)頁縱向分析的提取方案,并詳細(xì)敘述了主題爬蟲的算法方案。
關(guān)鍵詞:BBS; 噪音處理; 聚類分析; 符號匹配
中圖分類號:F724.6 文獻(xiàn)標(biāo)志碼:A 文章編號:2095-2945(2018)09-0132-02
Abstract: As an important part of the whole Internet ecology, BBS-type website contains a huge amount of data, and it is also an important source of information. How to design a general algorithm for these different types of forum pages to extract valuable information such as theme posts and reply posts is the main concern of this paper. In this paper, based on the in-depth analysis of different types of web pages, the inconsistency of web page types, the accessibility of individual web sites and the unreliability of common crawlers are fully considered. An extraction scheme based on longitudinal analysis of web pages is designed, and the algorithm of topic crawler is described in detail.
Keywords: BBS; noise processing; cluster analysis; symbol matching
引言[1]
在當(dāng)今的大數(shù)據(jù)時(shí)代里,伴隨著互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,人們產(chǎn)生的數(shù)據(jù)總量呈現(xiàn)急劇增長的趨勢,當(dāng)前大約每六個(gè)月互聯(lián)網(wǎng)中產(chǎn)生的數(shù)據(jù)總量就會(huì)翻一番。互聯(lián)網(wǎng)產(chǎn)生的海量數(shù)據(jù)中蘊(yùn)含著大量的信息,已成為政府和企業(yè)的一個(gè)重要數(shù)據(jù)來源,互聯(lián)網(wǎng)數(shù)據(jù)處理也已成為一個(gè)有重大需求的熱門行業(yè)。借助網(wǎng)絡(luò)爬蟲技術(shù),我們能夠快速從互聯(lián)網(wǎng)中獲取海量的公開網(wǎng)頁數(shù)據(jù),對這些數(shù)據(jù)進(jìn)行分析和挖掘,從中提取出有價(jià)值的信息,能幫助并指導(dǎo)我們進(jìn)行商業(yè)決策、輿論分析、社會(huì)調(diào)查、政策制定等工作。而大部分網(wǎng)頁數(shù)據(jù)是以半結(jié)構(gòu)化的數(shù)據(jù)格式呈現(xiàn)的,我們需要的信息在頁面上往往淹沒在大量的廣告、圖標(biāo)、鏈接等“噪音”元素中。如何從網(wǎng)頁中有效提取所需要的信息,一直是互聯(lián)網(wǎng)數(shù)據(jù)處理行業(yè)關(guān)注的重點(diǎn)問題之一。
但是,不同網(wǎng)站甚至網(wǎng)頁所使用的網(wǎng)頁格式、網(wǎng)頁結(jié)構(gòu)和標(biāo)簽體系可能是不一樣的,對于從互聯(lián)網(wǎng)中獲取的海量網(wǎng)頁的批量處理,如果還利用傳統(tǒng)的方法去對每個(gè)有差異的網(wǎng)頁逐一做人工分析,是不可行的。因此,如何從這些存在差異的網(wǎng)頁中快速有效的提取所需信息,就成為互聯(lián)網(wǎng)數(shù)據(jù)處理中一個(gè)急需解決的問題。盡管在傳統(tǒng)的網(wǎng)頁結(jié)構(gòu)化數(shù)據(jù)提取智能分析實(shí)踐中,已經(jīng)有很多開源的智能提取算法來分析新聞、文章類數(shù)據(jù),然而這些方法只適用于提取有大段文本的頁面結(jié)構(gòu)數(shù)據(jù)信息,如只包含網(wǎng)頁作者、標(biāo)題、正文內(nèi)容及發(fā)布時(shí)間等內(nèi)容的網(wǎng)頁。而對于BBS論壇型網(wǎng)頁,由于文本在網(wǎng)頁上相對分散且要提取的字段較多,傳統(tǒng)的算法不再適用,需要重新設(shè)計(jì)通用提取算法,針對帖子內(nèi)容進(jìn)行有效地分析提取。
基于上述背景,本文提出一種新的算法,并詳細(xì)描述了該算法的具體實(shí)現(xiàn)過程和原理
1 整體思路分析
通過對論壇網(wǎng)頁結(jié)構(gòu)的深入分析,發(fā)現(xiàn)不同類型的論壇網(wǎng)頁具有一定的共性,比如所有網(wǎng)頁都有發(fā)回帖時(shí)間,且所有網(wǎng)頁的有效信息均散落在噪聲中。如果能先對噪聲做預(yù)處理,把主題帖和回帖從頁面結(jié)構(gòu)中抽離出來,然后再對帖子內(nèi)部的噪聲做處理,最后得到的文本信息即是需要提取的信息。
2 算法過程
2.1 外部噪聲處理
通過對網(wǎng)頁結(jié)構(gòu)的深入分析,可以發(fā)現(xiàn)在需要提取的有效信息周圍,有很多的噪聲。由于本題對圖片音頻視頻不作考慮,因此,本文只討論對文本噪聲的處理[2]。對文本噪聲的具體處理步驟為:
首先,噪聲分類。按照網(wǎng)頁自上而下的分布規(guī)律,將這些文本噪聲大分為以下幾類:(1)導(dǎo)航條列表類噪聲;(2)廣告類噪聲;(3)側(cè)邊欄列表類噪聲;(4)帖子內(nèi)部無用文本類噪聲;(5)底部欄文本類噪聲。
其次,噪聲處理[3]。在分析了所有樣本論壇的頁面結(jié)構(gòu)后,可發(fā)現(xiàn)幾乎所有的主題貼都有發(fā)帖時(shí)間,所有的回帖都有回帖時(shí)間。而上面所提到的5類噪聲中除了第4類帖子內(nèi)部無用文本噪聲包含著時(shí)間格式,其他類別的噪聲大多都不含時(shí)間格式文本。因此,利用正則時(shí)間匹配方式,就可以匹配掉除帖子內(nèi)部噪聲之外的大多數(shù)噪聲。除此之外,有的論壇在底部欄也會(huì)有網(wǎng)站系統(tǒng)時(shí)間,為了防止此類噪聲的干擾,可提前去掉此類標(biāo)簽。由此即可從圖2所示的整個(gè)網(wǎng)頁盒子中分離出主題帖及回帖的盒子。
至此,主題帖盒子和回帖盒子還是緊密相連的,為了達(dá)到最終提取網(wǎng)頁有效信息的目的,還需將這兩個(gè)盒子分開。因此,本文擬采用下一步中利用id聚類分析的方法來對主題帖和回帖進(jìn)行分離。
2.2 基于主帖和回帖id的聚類分析
2.2.1 思路分析
在提取到帶有文本噪聲的主題帖和回帖文本信息后,確定哪部分是主題帖信息、哪部分是回帖信息是該部分要解決的關(guān)鍵問題。本文考慮將主題帖和回帖進(jìn)行分塊,不斷縮小盒子模型,以獲取最終的有效信息。
各不同類型論壇網(wǎng)頁的結(jié)構(gòu)大體相同,大部分網(wǎng)頁的HTML語法都是以
2.2.2 id屬性值轉(zhuǎn)換成ASCII做聚類分析
考慮到id屬性值一般由數(shù)字、下劃線、字母組成,我們無法直接對它們進(jìn)行聚類。因此,在這里統(tǒng)一把它們轉(zhuǎn)換成相同格式的ASCII碼,利用上面介紹的系統(tǒng)聚類分析法,并結(jié)合Python和R語言的相關(guān)函數(shù)對這些ASCII碼做最短距離計(jì)算,即差值小的被聚為一類,差值大的自成一類。
2.2.3 從各類中確定主題帖類和回帖類
通過系統(tǒng)聚類分析方法,帖子的回帖信息被聚為一類,根據(jù)主題帖id屬性值與回帖id屬性值的差異大小,主題帖有可能會(huì)和回帖被分為一類,也有可能被單獨(dú)分成一類。在主題帖和回帖類的上面還有若干嵌套類,這些嵌套類一環(huán)套一環(huán),主題帖和回帖id也在這些嵌套類中。
接下來即要提取主題帖id和回帖id,自上而下的辦法就是刪除嵌套類,自下而上的解決方法就是直接取回帖類,核心的解決思想就是判斷倒數(shù)第二個(gè)類中是否含有回帖屬性(文本內(nèi)容,時(shí)間)具體實(shí)施方法是,取最后一個(gè)類的的第一個(gè)id中的文本信息看其是否在倒數(shù)第二個(gè)類中出現(xiàn),若出現(xiàn),就是主題帖和回帖在一個(gè)類,最后一個(gè)類的第一個(gè)id即為主題帖。若不出現(xiàn),主題帖和回帖不在一個(gè)類,倒數(shù)第二個(gè)類的id即為主題帖,此時(shí)主題帖和回帖盒子被分開。
接下來,還需要對帖子內(nèi)部的噪聲信息進(jìn)行處理,以提取最終的有效信息。
2.3 內(nèi)部噪聲處理
主題帖和回帖被分開后,其內(nèi)部還有諸多無用文本噪聲,對于該部分噪聲,本文決定采用一種符號匹配的方法。即采用逗號進(jìn)行正則匹配,只要帶有逗號的文本信息即是有用信息。對于大部分包含有價(jià)值信息的帖子內(nèi)容而言,逗號出現(xiàn)的頻率最高,而且其他文本噪聲一般情況下是不會(huì)含有逗號等標(biāo)點(diǎn)符號的。為了提高提取的精度和內(nèi)容完整性,還可采用以下兩種方法對其進(jìn)行改進(jìn):(1)建立標(biāo)點(diǎn)符號的模型庫。例如句號、省略號、感嘆號這些常見的且不含在其他文本噪聲的中出現(xiàn)的符號,以提高提取的精度。(2)利用回帖結(jié)構(gòu)的一致性,遍歷回帖類,記錄每個(gè)id中文本信息的個(gè)數(shù),通過符號匹配找到文本信息的位置,即處于第幾個(gè)文本信息,通過這個(gè)位置去查詢該類其他id中回帖的正文信息。這樣做的好處是,只要全部回帖只要有一個(gè)符號例如逗號,就可以查詢所有回帖內(nèi)容,因?yàn)榛靥Y(jié)構(gòu)固定。
2.4 信息提取
經(jīng)過上述的噪音處理和聚類分組之后,即可把主題帖和回帖從頁面中抽離出來,接下來就可以從中提取相關(guān)信息。各個(gè)字段的提取方法如下:
標(biāo)題:從
主題貼作者:從已經(jīng)分好的主題帖類中進(jìn)行檢索,遇到第一個(gè)帶超鏈接的文本信息即是作者。
主題帖:通過符號正則匹配提取。
主題帖時(shí)間:通過時(shí)間正則匹配提取。
回帖作者:從已經(jīng)分好的主題帖類中進(jìn)行檢索,遇到第一個(gè)帶超鏈接的文本信息即是作者。
回帖內(nèi)容:遍歷回帖類,第一個(gè)匹配到標(biāo)點(diǎn)符號模型庫的文本內(nèi)容,即是回帖內(nèi)容。記錄該回帖內(nèi)容在單個(gè)回帖塊中的位置信息,根據(jù)該位置信息取出所有回帖塊中的回帖內(nèi)容。
3 結(jié)束語
BBS論壇系統(tǒng)包含有大量信息,也一直為大量用戶所喜愛,其信息量必然還會(huì)持續(xù)增加,因此如何設(shè)計(jì)相關(guān)提取算法去提取有價(jià)值信息也非常有必要。本文提出的算法更具有通用性,并沒有只針對已有的一些大型開源論壇做信息提取。
將系統(tǒng)聚類分析的思想應(yīng)用到分析網(wǎng)頁結(jié)構(gòu)上,很好的解決了論壇網(wǎng)頁結(jié)構(gòu)復(fù)雜,噪聲過多的情況。但由于部分網(wǎng)頁結(jié)構(gòu)比較特殊,因此該算法還有許多可完善的地方。
參考文獻(xiàn):
[1]劉金紅,陸余良.主題網(wǎng)絡(luò)爬蟲研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2007,24(10):26-29.
[2]蔣琴琴,宮哲,辛陽.基于HTML Parser的BBS信息抽取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化技術(shù)與應(yīng)用,2012(01):32-37.
[3]鄧墾,胡勇.基于DOM樹的通用論壇抽取技術(shù)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(01):20.
[4]胡雷芳.五種常用系統(tǒng)聚類分析方法及其比較[J].浙江統(tǒng)計(jì),2007(04):11-13.