摘 要: 先將網(wǎng)頁(yè)轉(zhuǎn)換為規(guī)范的DOM樹,然后計(jì)算每行文本的文本密度、與標(biāo)題相關(guān)度等值,并將其作為輸入?yún)?shù)利用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,進(jìn)而形成抽取規(guī)則,最后通過(guò)實(shí)驗(yàn)驗(yàn)證該方法的可行性。
關(guān)鍵詞: 信息提取; 神經(jīng)網(wǎng)絡(luò); 統(tǒng)計(jì)學(xué)習(xí)
隨著互聯(lián)網(wǎng)的普及,網(wǎng)絡(luò)成為人們獲取信息的重要途徑。而互聯(lián)網(wǎng)上的信息量也與日俱增,網(wǎng)頁(yè)上的內(nèi)容除了主題內(nèi)容外,通常都會(huì)在頁(yè)面中放置導(dǎo)航條以方便用戶訪問(wèn),還有如廣告、版權(quán)信息、歡迎信息等與主題無(wú)關(guān)的內(nèi)容,我們稱之為"噪音"。怎樣去除這些噪音,將網(wǎng)頁(yè)中的正文內(nèi)容提取出來(lái),從而提高人們的閱讀效率,這在垂直搜索和數(shù)據(jù)挖掘方面具有重要意義。在這個(gè)領(lǐng)域已經(jīng)發(fā)表了很多的研究成果,這些研究成果從不同的角度入手,有的只利用網(wǎng)頁(yè)本身的特征,有的還與其他技術(shù)相結(jié)合,使網(wǎng)頁(yè)正文抽取的準(zhǔn)確性和完整性得到不斷提高,但還沒(méi)有一種方法能達(dá)到人們期望的程度,還需要不斷地研究和探索。
1正文抽取相關(guān)研究
到目前為止,已經(jīng)發(fā)表的網(wǎng)頁(yè)正文內(nèi)容抽取方法有很多種,其分類方式的依據(jù)也不盡相同,下面介紹幾種較為常用的抽取方法。
(1) 基于模板的方法
這種技術(shù)依賴HTML文檔的內(nèi)部結(jié)構(gòu)特征來(lái)完成數(shù)據(jù)抽取,需要使用wrapper(包裝器)來(lái)抽取網(wǎng)頁(yè)中的正文內(nèi)容。包裝器可以通過(guò)分析網(wǎng)頁(yè)源代碼來(lái)手工編寫,也可以通過(guò)程序自動(dòng)或半自動(dòng)的實(shí)現(xiàn)。手工編寫的方法一般都針對(duì)特定的網(wǎng)頁(yè)模式,其優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單、準(zhǔn)確率高,缺點(diǎn)是對(duì)于不同的網(wǎng)頁(yè)模式或網(wǎng)頁(yè)結(jié)構(gòu)發(fā)生變化時(shí)需要重新編寫包裝器,如果包裝器類型很多,包裝器的維護(hù)代價(jià)會(huì)很大,但由于該方法的準(zhǔn)確性較高,所以在針對(duì)特定網(wǎng)站的抽取中應(yīng)用很廣。自動(dòng)或半自動(dòng)地生成包裝器的方法在一定程度上減輕了維護(hù)包裝器的工作量,但是需要樣本學(xué)習(xí),對(duì)用戶要求較高。
(2) 基于統(tǒng)計(jì)的方法
這種方法從頁(yè)面的不同角度分析它的統(tǒng)計(jì)特征,采用統(tǒng)計(jì)學(xué)的算法抽取正文。例如根據(jù)統(tǒng)計(jì)的文字?jǐn)?shù)量、鏈接數(shù)量、標(biāo)簽字符數(shù)量等計(jì)算出文本密度、鏈接密度等,并通過(guò)這些值來(lái)判斷哪些為正文文本、哪些為噪音內(nèi)容。參考文獻(xiàn)[1]提出一種通過(guò)分析頁(yè)面文本密度進(jìn)行正文抽取的方法。這種方法實(shí)現(xiàn)簡(jiǎn)單,并且不需要編寫包裝器,但提取的準(zhǔn)確率有限,有時(shí)會(huì)將與正文無(wú)關(guān)的版權(quán)聲明等當(dāng)作正文內(nèi)容提取出來(lái)。
(3) 基于神經(jīng)網(wǎng)絡(luò)的方法
由于神經(jīng)網(wǎng)絡(luò)具有優(yōu)越的非線性處理能力和泛化能力,因此在很多實(shí)際領(lǐng)域中都取得了傳統(tǒng)符號(hào)學(xué)習(xí)機(jī)制難以獲得的效果。文獻(xiàn)[2]搜索結(jié)點(diǎn)的輸入連接權(quán),通過(guò)找出權(quán)值之和超過(guò)閾值的連接權(quán)子集來(lái)抽取規(guī)則。參考文獻(xiàn)[3]利用多層網(wǎng)絡(luò)度量輸入之間的接近程度,并利用單層抑制性網(wǎng)絡(luò)度量輸入、輸出相關(guān)度,從而獲得抽取規(guī)則。
參考文獻(xiàn)[4]針對(duì)新聞?lì)惥W(wǎng)頁(yè)及類似布局的頁(yè)面,在對(duì)頁(yè)面文本密度進(jìn)行統(tǒng)計(jì)之后對(duì)文本密度與頁(yè)面標(biāo)題、正文之間的對(duì)應(yīng)關(guān)系進(jìn)行分析,以對(duì)傳網(wǎng)絡(luò)(CPN)為工具,對(duì)文本密度在標(biāo)題、正文等語(yǔ)義塊中的分布模式進(jìn)行擬合,從而達(dá)到抽取目標(biāo)信息的目的。
參考文獻(xiàn)[5]中以行為單位對(duì)網(wǎng)頁(yè)源代碼中的每一行計(jì)算其相關(guān)的六個(gè)屬性,并以此作為BP神經(jīng)網(wǎng)絡(luò)的輸入?yún)?shù)進(jìn)行學(xué)習(xí)。由于該算法未對(duì)文本內(nèi)容和標(biāo)題的相關(guān)度進(jìn)行判斷,所以導(dǎo)致會(huì)將一些網(wǎng)站的版權(quán)聲明當(dāng)作正文內(nèi)容錯(cuò)誤地提取出來(lái)。所以通過(guò)計(jì)算文本內(nèi)容和標(biāo)題的相關(guān)度來(lái)區(qū)別是否為噪音是合理的。本方法以行為單位對(duì)DOM樹進(jìn)行處理,將每行的文本密度、文本內(nèi)容與標(biāo)題的相關(guān)度作為輸入?yún)?shù)利用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,從而提高信息抽取的準(zhǔn)確度。
2 算法描述
2.1 BP神經(jīng)網(wǎng)絡(luò)模型
BP算法屬于Delta學(xué)習(xí)規(guī)則,是一種有教師的學(xué)習(xí)算法,是以網(wǎng)絡(luò)誤差平方和為目標(biāo)函數(shù),按梯度法(gradient approaches)求其目標(biāo)函數(shù)達(dá)到最小值的算法。一個(gè)典型的BP神經(jīng)網(wǎng)絡(luò)包括:(1)由一個(gè)輸入層x、一個(gè)(或多個(gè))隱藏層y和一個(gè)輸出層o組成的三層或多層結(jié)構(gòu);(2)處理單元(圖1中的圓圈)是網(wǎng)絡(luò)的基本組成部分,輸入層的處理單元只是將輸入值轉(zhuǎn)入相鄰的聯(lián)接權(quán)重,隱層和輸出層的處理單元將它們的輸入值求和并根據(jù)傳遞函數(shù)計(jì)算輸出值;(3)聯(lián)接權(quán)重(如圖1中v,w)將神經(jīng)網(wǎng)絡(luò)中的處理單元聯(lián)系起來(lái),其值隨各處理單元的連接程度而變化;(4)閾值,其值可為恒值或可變值,它可使網(wǎng)絡(luò)能更自由地獲取所要描述的函數(shù)關(guān)系;(5)傳遞函數(shù)F,它是將輸入的數(shù)據(jù)轉(zhuǎn)化為輸出的處理單元,通常為非線性函數(shù)。
輸入層和輸出層的結(jié)點(diǎn)個(gè)數(shù)可以根據(jù)訓(xùn)練集來(lái)確定,而隱藏層的結(jié)點(diǎn)卻需要試驗(yàn)判斷。如果隱藏層結(jié)點(diǎn)數(shù)過(guò)少,網(wǎng)絡(luò)就不能具有必要的學(xué)習(xí)能力和信息處理能力。如果隱藏層結(jié)點(diǎn)數(shù)過(guò)多,不僅會(huì)大大增加網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜性,網(wǎng)絡(luò)在學(xué)習(xí)過(guò)程中更易陷入局部極小值,而且會(huì)使網(wǎng)絡(luò)的學(xué)習(xí)速度變得很慢。
2.2 利用人工神經(jīng)網(wǎng)絡(luò)進(jìn)行正文提取
網(wǎng)頁(yè)的類型大體上可以分為三類:(1)文字多圖片少的內(nèi)容型網(wǎng)頁(yè),如新聞網(wǎng)頁(yè);(2)以圖片為主文字介紹為輔的圖片型網(wǎng)頁(yè),如圖片新聞;(3)以超鏈接為主的目錄型網(wǎng)頁(yè),如新浪首頁(yè)。試驗(yàn)中我們以內(nèi)容型網(wǎng)頁(yè)作為主要研究對(duì)象。
2.2.1 網(wǎng)頁(yè)源文件預(yù)處理
隨著web2.0的發(fā)展,網(wǎng)站為了定制網(wǎng)頁(yè)的表現(xiàn)形式和提高網(wǎng)頁(yè)視覺(jué)效果,在源文件中加入大量Script腳本和CSS代碼。所以在抽取正文之前要對(duì)網(wǎng)頁(yè)源文件進(jìn)行預(yù)處理,去除與正文內(nèi)容不相關(guān)的噪音內(nèi)容。
首先,由于html語(yǔ)言書寫的隨意性,導(dǎo)致有些網(wǎng)頁(yè)源代碼的不規(guī)范,例如標(biāo)簽對(duì)缺失、嵌套不準(zhǔn)確等。所以要將缺失的html標(biāo)簽補(bǔ)齊、修改不正確的嵌套關(guān)系,并將源代碼轉(zhuǎn)換為DOM樹的形式。本文采用HTML Tidy工具來(lái)處理網(wǎng)頁(yè)。
其次,要判斷網(wǎng)頁(yè)源文件的編碼,否則有可能抽取到亂碼。以源文件頭中的meta里聲明的charset為準(zhǔn),對(duì)于編碼為GBK、gb2312等格式的網(wǎng)頁(yè),都將其轉(zhuǎn)為utf8格式。
最后,Script標(biāo)簽對(duì)之間和CSS內(nèi)容都與正文內(nèi)容無(wú)關(guān),要全部刪除。另外,對(duì)于<a></a>等無(wú)用的空標(biāo)簽對(duì)也一并刪除。
2.2.2 神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程
(1)頁(yè)面主題的提取。<title>中的內(nèi)容一般為文章標(biāo)題,但現(xiàn)在各大網(wǎng)站一般采用“文章標(biāo)題+網(wǎng)站名”的形式放在<title>標(biāo)簽中,且用符號(hào)“-”或“_”連接。在此將<title>中的文字內(nèi)容取出,并將“-”或“_”符號(hào)后面的文字刪除;若有多個(gè)這種符號(hào),則將最后一個(gè)這種符號(hào)后面的文字內(nèi)容刪除,剩下的文字內(nèi)容作為文章標(biāo)題。因?yàn)闃?biāo)題中的文字內(nèi)容一般會(huì)在正文內(nèi)容中出現(xiàn),而非正文內(nèi)容一般不會(huì)包含標(biāo)題詞,所以可以將文本內(nèi)容與文章標(biāo)題的相關(guān)度作為判斷文本是否正文的一個(gè)因子。
(2)統(tǒng)計(jì)各項(xiàng)值。以行為單位對(duì)DOM樹進(jìn)行處理,依次統(tǒng)計(jì)每行的文本長(zhǎng)度y和字符總長(zhǎng)度z,用p表示該段的文本密度,則p=y/z,該行的文本內(nèi)容為c。
(3)計(jì)算相關(guān)度。分別對(duì)文章標(biāo)題t和每行取出的文本內(nèi)容c進(jìn)行分詞,得到對(duì)應(yīng)的標(biāo)題詞項(xiàng)(t1,t2…tm)和文本詞項(xiàng)(c1,c2…cn),然后將每個(gè)標(biāo)題詞項(xiàng)ti和文本詞項(xiàng)cj進(jìn)行匹配,統(tǒng)計(jì)匹配次數(shù)并進(jìn)行加權(quán)計(jì)算,得出其相關(guān)度,記相關(guān)度為s。為了提高相關(guān)度的準(zhǔn)確性,本文借鑒搜索引擎中“倒排索引”的經(jīng)驗(yàn),對(duì)“的”“是”等停止詞放在詞庫(kù)中進(jìn)行分詞,但不對(duì)其進(jìn)行相關(guān)度計(jì)算。
采用BP神經(jīng)網(wǎng)絡(luò)作為訓(xùn)練模型,各層的激勵(lì)函數(shù)均為logsig,目標(biāo)誤差設(shè)為0.05,學(xué)習(xí)率為0.2。該模型有12個(gè)輸入結(jié)點(diǎn)、5個(gè)隱藏層結(jié)點(diǎn)和一個(gè)輸出結(jié)點(diǎn)。其中12個(gè)輸入?yún)?shù)為:每行的文本長(zhǎng)度、每行的字符總長(zhǎng)度、每行的文本密度、每行文本內(nèi)容與標(biāo)題的相關(guān)度、上一行的這四個(gè)值和下一行的這四個(gè)值。具體步驟如下:
(1)獲取訓(xùn)練集并做好標(biāo)記。
(2)對(duì)網(wǎng)頁(yè)源文件進(jìn)行預(yù)處理,生成相應(yīng)的DOM樹。
(3)從DOM樹中讀取一行文字,統(tǒng)計(jì)相應(yīng)值,得出輸入向量和期望輸出。
(4)輸入向量經(jīng)過(guò)隱藏層結(jié)點(diǎn)和輸出層結(jié)點(diǎn)的傳遞函數(shù)得到實(shí)際輸出。
(5)計(jì)算實(shí)際輸出向量和期望輸出向量的誤差,并計(jì)算各輸出誤差項(xiàng)和隱藏層結(jié)點(diǎn)誤差項(xiàng)。如果誤差在允許范圍內(nèi),則回到步驟(3),從DOM樹中讀取下一行文字繼續(xù)進(jìn)行。如果誤差不在允許誤差范圍內(nèi),則根據(jù)計(jì)算出的誤差項(xiàng)計(jì)算出各權(quán)重的調(diào)整量,并調(diào)整權(quán)重。
(6)返回步驟(4),繼續(xù)迭代,直到實(shí)際輸出向量和期望輸出向量的誤差滿足要求。返回步驟(3)讀取下一行內(nèi)容,繼續(xù)進(jìn)行學(xué)習(xí)。
(7)標(biāo)簽樹遍歷完畢,訓(xùn)練結(jié)束。
將DOM樹的各個(gè)元素偶對(duì)的相關(guān)值作為神經(jīng)網(wǎng)絡(luò)的輸入,樣本標(biāo)記結(jié)果作為輸出,通過(guò)學(xué)習(xí)算法自動(dòng)生成抽取規(guī)則,對(duì)新的頁(yè)面應(yīng)用抽取規(guī)則進(jìn)行測(cè)試。
3 測(cè)試結(jié)果
采用信息抽取技術(shù)中常用的查全率(R)、查準(zhǔn)率(P)和F值三個(gè)評(píng)價(jià)指標(biāo)對(duì)測(cè)試結(jié)果進(jìn)行評(píng)價(jià)。查全率表示被正確抽取的信息的比例、查準(zhǔn)率表示提取出來(lái)的正確信息的比率、F值是查全率和查準(zhǔn)率的加權(quán)幾何平均值。用公式表示如下:P=(正確抽取出正文內(nèi)容的網(wǎng)頁(yè)數(shù)/總網(wǎng)頁(yè)數(shù))*100%,R=(抽取出完整正文內(nèi)容的網(wǎng)頁(yè)數(shù)/正確抽取出正文內(nèi)容的網(wǎng)頁(yè)數(shù))*100%,在此將查全率和查準(zhǔn)率看的同等重要,得出F=2PR/(P+R)。根據(jù)F值與1的靠近程度來(lái)判斷算法的好壞,越靠近1算法越好。
從幾大新聞網(wǎng)站隨機(jī)抽取20個(gè)網(wǎng)頁(yè)進(jìn)行人工分析和標(biāo)記,按照以上方法進(jìn)行訓(xùn)練。為了測(cè)試抽取方法的可行性,再抽取一定量的網(wǎng)頁(yè)作為測(cè)試集,并利用訓(xùn)練結(jié)果進(jìn)行測(cè)試。測(cè)試結(jié)果如表1所示。
在本文中通過(guò)統(tǒng)計(jì)DOM樹每一行的文本長(zhǎng)度和字符長(zhǎng)度,進(jìn)而計(jì)算文本密度以及文字內(nèi)容與標(biāo)題的相關(guān)度,并將這些數(shù)值作為輸入?yún)?shù)輸入到人工神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。通過(guò)計(jì)算內(nèi)容和標(biāo)題的相關(guān)度可以避免將一些標(biāo)簽字符較少、文字內(nèi)容較多的版權(quán)聲明等內(nèi)容提取出來(lái),進(jìn)而提高正文抽取的準(zhǔn)確度。從測(cè)試結(jié)果看,該方法具有一定的可行性。下一步要尋求更好的相關(guān)度計(jì)算方法,更準(zhǔn)確地計(jì)算正文和標(biāo)題的相關(guān)度,進(jìn)一步提高正文抽取的準(zhǔn)確性。
參考文獻(xiàn)
[1] ALEXJC. The easy way to extract useful text from arbitrary HTML [EB/OL].http://ai-depot.com/articles/ the easy-way-to-extract-useful-text-from-arbitrary-html/. April5, 2007.
[2] FU L M. Rule learning by searching on adapted nets. Proceedings of the 9th National Conference on Artificial Intelligence. Anaheim, CA: AAAI Press, 1991:590-595.
[3] SESTITO S, DILLON T. Knowledge acquisition of conjunctive rules using multilayered neural networks. International Journal of Intelligent Systems,1993, 8(7):779-805.
[4] 陳敬文,彭哲. 基于CPN網(wǎng)絡(luò)的Web正文抽取技術(shù)研究[J]. 現(xiàn)代圖書情報(bào)技術(shù),2008(11):65-71.
[5] 游貴榮,陸玉昌. 基于統(tǒng)計(jì)和機(jī)器學(xué)習(xí)的中文Web網(wǎng)頁(yè)正文內(nèi)容抽取[J]. 福建商業(yè)高等??茖W(xué)校學(xué)報(bào),2009,4(2):68-72.
[6] 樓順天,施陽(yáng). 基于MATLAB的系統(tǒng)分析與設(shè)計(jì)-神經(jīng)網(wǎng)絡(luò)[M]. 西安電子科技大學(xué)出版社, 1998.
[7] 孫承杰,關(guān)毅.基于統(tǒng)計(jì)的網(wǎng)頁(yè)正文信息抽取方法的研究[J].中文信息學(xué)報(bào), 2004,18(5):17-22.