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