劉 斌,張曉婧
目前通過各種搜索引擎進行Web信息搜索,已被廣泛應(yīng)用[1],但搜索引擎并不能收集到網(wǎng)上數(shù)據(jù)庫內(nèi)部的信息,而實際的情況是,目前約80%的網(wǎng)頁是由后臺數(shù)據(jù)庫生成,搜索引擎無法從此類網(wǎng)頁中獲取數(shù)據(jù)。因此產(chǎn)生了Web信息抽取技術(shù)。Web信息提取(Web Information Extraction,Web IE)是將Web作為信息源的一類信息進行提取。目的是從半結(jié)構(gòu)或無結(jié)構(gòu)的信息中,提取出特定的事實信息[2]。比如,從某個網(wǎng)頁新聞中提取出新聞的時間、地點、人物等具體信息;從一篇文章中提取某句話、某個關(guān)鍵詞的信息等。Web信息提取繼承了傳統(tǒng)的信息提取技術(shù)研究成果,其核心是將分散在Internet上的半結(jié)構(gòu)化的HTML頁面中,隱含的信息點提取出來,獲得用戶需要的信息,并以更為結(jié)構(gòu)化、語義更為清晰的形式表示,為用戶Web查詢、利用Web數(shù)據(jù)提供支持。
20世紀60年代中期,Web信息抽取首先被應(yīng)用在文本理解上,主要研究內(nèi)容是從自然語言文本中獲取結(jié)構(gòu)化信息[3][4]。從80年代末開始,Web信息抽取研究日趨活躍,主要研究集中在利用機器學習、語言理解、信息抽取等方面。在應(yīng)用上也大量與其他文檔處理技術(shù)結(jié)合,建立了功能強大的信息服務(wù)系統(tǒng),國外已有Linguamatics、Cymfony、Bhasha等公司的相關(guān)產(chǎn)品;國內(nèi)也有Intel中國研究中心、北大計算語言所等部門,設(shè)計了針對中文Web信息抽取系統(tǒng)。
本文針對XML技術(shù)的Web信息抽取,首先對Web頁面的HTML結(jié)構(gòu)進行文檔的預處理,通過軟件來實現(xiàn)頁面的DOM樹解析,將其轉(zhuǎn)換成XML的格式,并在系統(tǒng)中對XML文檔的優(yōu)化處理,采用Xpath路徑表達式來實現(xiàn)定位具體頁面的信息點,最后采用XSLT語言進行抽取規(guī)則的描述。系統(tǒng)抽取規(guī)則的描述語言采用XML技術(shù)中的XSLT規(guī)則。利用XPath的定位算法然后配合XSLT的規(guī)則描述語言來進行規(guī)則編寫,實現(xiàn)了Web信息的定位和抽取。
Web信息抽取系統(tǒng)模型,系統(tǒng)處理流程,如圖1所示:

圖1 Web信息抽取系統(tǒng)模型
首先,進行信息采集,以獲得待抽取的網(wǎng)頁,即用戶預期得到信息。系統(tǒng)這部分主要利用網(wǎng)絡(luò)爬蟲來獲得,采用主題精選算法,主題精選是基于鏈接分析的排序算法[5],本文采用一種改進的HITS算法來實現(xiàn)。
假設(shè)對網(wǎng)頁P,定義兩個非負的權(quán)威權(quán)值x<p>和中心性權(quán)值y<p>,Q為爬行主題,網(wǎng)絡(luò)爬蟲爬取到的初始網(wǎng)頁集合為sσ,sσ中的所有網(wǎng)頁的權(quán)重和為1,即:

其中x<p>(y<p>)越大,其權(quán)威性(中心性)就越大,則x<p>和y<p>的計算公式為:

其中,E表示以sσ為節(jié)點集構(gòu)成的圖Gσ的邊集。
令n=|sσ|,且定義A為圖Gσ的鄰接矩陣,若Gσ中存在邊)(pj,pi),則矩陣中的(i,j)項為1,否則為0,則上式可用矩陣表示為:

傳統(tǒng)的HITS算法需要一個互聯(lián)網(wǎng)的局部子圖Gσ作為輸入。對圖Gσ中的每一條邊,定義權(quán)威權(quán)值和中心權(quán)值的加權(quán)系數(shù)為a_p和h_p如下:
如果p的所有反向鏈接中,與q來自相同站點的有m個節(jié)點,則

其中,y為當前時間,docTime(q)為網(wǎng)頁q的最近更新時間,y?docTime(q)為時間間隔,DecayRate為衰減參數(shù),取值范圍為[0.2~0.8]。
如果p的所有正向鏈接中,與q來自相同站點的有1個節(jié)點,則h_p=1(1+1),以便計算網(wǎng)頁的權(quán)威權(quán)值和中心權(quán)值。改進后的HITS算法的子圖Gσ與傳統(tǒng)HITS算法類似,也需要一個初始網(wǎng)頁集合。但由于對初始網(wǎng)頁集合的生成方式上進行了改進,因此較傳統(tǒng)算法可以利用一些開源的網(wǎng)絡(luò)爬蟲來生成圖G。
Web頁面文檔大都是以HTML格式存在的[6],許多頁面文檔的標記不完整(如:標記不對應(yīng),大小寫混用等)。這對信息的抽取也產(chǎn)生了很大的問題,因此應(yīng)首先對這種HTML代碼進行轉(zhuǎn)換,形成“格式完整”的HTML文檔。本系統(tǒng)采用HTML的規(guī)范化處理軟件“HTML Tidy”來完成,它可以檢查HTML語法錯誤,將HTML文檔中格式不完整或錯誤的文檔進行格式編排,生成XHTML,再將整個HTML進行DOM樹解析,這樣XHTML文檔中的內(nèi)容就包含在了該DOM樹的結(jié)點上,可以轉(zhuǎn)化成對樹的操作來實現(xiàn)用戶要求。
系統(tǒng)使用JavaXML解析器對XML進行解析,對XHTML文件進行解析的步驟為:
第一步:定義需要解析的對象,并進行初始化;
第二步:調(diào)用DomParser的Parser方法來進行解析;
第三步:使用getDocument()方法來獲取解析后的DOM。
抽取規(guī)則是整個系統(tǒng)的核心,本系統(tǒng)采用XSLT語言來表示抽取規(guī)則,基于DOM的XPath絕對路徑生成算法來獲取被標注結(jié)點的XPath表達式,然后使用XPath并結(jié)合XSLT技術(shù)來編寫抽取規(guī)則,主要步驟及算法如下:
采用JTree樹來對XML文檔的結(jié)構(gòu)來進行樹形的直觀顯示。首先使用解析工具對XML文檔進行解析,生成DOM層次結(jié)構(gòu)的樹;采用優(yōu)先遍歷的算法來對上面解析到的DOM樹進行遍歷,以便獲得XML文檔中的所有子節(jié)點;最后再將獲得的所有子節(jié)點加載到JTree樹的根節(jié)點中,得到整棵DOM樹的顯示過程,構(gòu)造JTree樹算法如下:
BuildJTree(DefaultMutableTreeNode root,NodeList nodelist)
Node cnode;
String str;
if(nodelist.getLength()=0){retum;} //該節(jié)點沒有子節(jié)點
for(int i=0;i {cnode=nodelist.item(i);//獲得子節(jié)點列表中的第i個節(jié)點 if(cnode.getNodeType()=Node.ELEMENT_NODE) { DefaultMutableTreeNode nodel=new DefaultMutableTreeNode (cnode getNodeName()); //將用DOM節(jié)點生成的TreeNode節(jié)點node1作為root的子節(jié)點 //加入到tree中 root.add(nodel); BuildJTree(cnode.getChildNodes(),nodel); } } } 通過上面的算法我們可以得到所示網(wǎng)頁解析后所生成的DOM樹顯示,自動獲取標注信息的XPath表達式的算法如下: //得到XPath路徑表達式 String CreateXPath(TreeNode node){ //node為當前用戶標注節(jié)點 String XPath=null; TreeNode parentNode=node.getParent(); //獲得用戶標洼節(jié)點node的parentNode if ParentNode is null XPath=node.toString(); return XPath; else while node XPath=”/”+node.toString()+”[“+parentNode.getlndex(no de)+”]”+XPath; //構(gòu)造當前node節(jié)點的XPath路徑表達式 parentNode=parentNode.getParent(); node=node.getParent(); end while /*循環(huán)遍歷根節(jié)到當前用戶標注節(jié)點,構(gòu)建從根到標注結(jié)點的XPath路徑表達式*/ end else retun XPath; } 使用XSLT作為本信息抽取的語言來生成抽取規(guī)則,編寫的XSLT模板文件為如下: “http://www.w3.org/1999/XSL/Transform”> 生成XSLT模版后,需要合并所有模版,然后對多個信息塊的模版規(guī)則進行編寫。根據(jù)用戶需要的信息點,得到XPath路徑表達式后就得到合并模板文件,經(jīng)過以上步驟處理生成的信息抽取規(guī)則,我們就可以使用規(guī)則中的XPath表達式來抽取信息。 將抽取出來的規(guī)則結(jié)果按照信息模版的屬性填充在數(shù)據(jù)庫記錄中,形成結(jié)構(gòu)化的數(shù)據(jù)庫或XML文件存儲供用戶使用,從而完成信息的存儲。 選取了國內(nèi)某大型綜合類購物網(wǎng)站主頁面作為實驗對象,選用信息檢索中使用的召回率R和準確率P為技術(shù)指標,由于抽取規(guī)則召回率R和準確率P這兩個指標成反比關(guān)系,當在比較時不是以準確率和召回率來分別度量時,需要同時考慮兩個指標,本實驗采用兩個指標之間的加權(quán)幾何平均值F來計算,即: F=(β2+1)PR/(β2P+R) 其中β預設(shè)值為1,表示相對正確率P來說召回率R在加權(quán)平均值中所占的地位,決定側(cè)重正確率P還是側(cè)重召回率R,這樣可以使準確率和召回率所占的影響權(quán)重相等,通過F值就可看出系統(tǒng)的效率。最終抽取結(jié)果,如表1所示: 表1 某購物網(wǎng)站主頁面抽取結(jié)果 從實驗結(jié)果可以看出,系統(tǒng)平均正確率P為96.95%、平均召回率R為96.50%、平均F指數(shù)為96.75%。可以看出,對于購物網(wǎng)站這類經(jīng)常變化的網(wǎng)頁,系統(tǒng)也能夠快速按照用戶的要求實現(xiàn)抽取,抽取效果良好。 Web信息抽取技術(shù)目前已比較成熟,但在系統(tǒng)的設(shè)計上還不能完全自動獲取知識,本設(shè)計在信息的采集上采用了一種改進的HITS算法,對抽取規(guī)則這一系統(tǒng)的核心部分,采用了XSLT語言來描述抽取規(guī)則,使得信息的抽取易于理解,增加了系統(tǒng)的適應(yīng)性。從而實現(xiàn)了Web信息的有效定位和抽取。通過一個購物網(wǎng)站的抽取實驗表明,該系統(tǒng)具有良好的召回率和準確率,抽取效果良好。今后將在簡化學習過程、提高系統(tǒng)的適應(yīng)性方面繼續(xù)研究,使系統(tǒng)能夠更加快捷地處理動態(tài)海量的Web信息,提高系統(tǒng)的自動化程度及精準度。 [1]張成洪,古曉洪,白延紅.Web數(shù)據(jù)抽取技術(shù)研究進展[J].計算機科學,2004,31(2):129-131. [2]劉軍,張凈.基于DOM的網(wǎng)頁主題信息的抽取[J].計算機應(yīng)用與軟件,2010,27(5):188-190. [3]陳曉鋒,張 凌,董守斌.基于XPath比較的Web數(shù)據(jù)抽取方法[J].鄭州大學學報,2007,39(2):161-166. [4]宋淑彩,龐慧,丁學均.GA-SVM算法在文本分類中的應(yīng)用研究[J].計算機仿真,2011,28(1):222-225. [5]馬瑞民,錢浩.基于時間頻率加權(quán)DOM的Web信息抽取方法[J].長江大學學報(自然科學版),2011,8(1):86-88. [6]鄧健爽,鄭啟倫,彭宏,等.基于關(guān)鍵詞聚類和節(jié)點距離的網(wǎng)頁信息抽取[J].計算機科學,2007,34:213-216.2 實驗結(jié)果

3 結(jié)論