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

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

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

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

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

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

3 結論