宋 潔,張 娜,劉艷柳,顧軍華
(河北工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與軟件學(xué)院,天津 300401)
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,WEB信息量呈爆炸式的增長(zhǎng),對(duì)信息抽取技術(shù)提出了更高的要求,如何直接而準(zhǔn)確地從海量信息中抽取出用戶感興趣的數(shù)據(jù)變得尤為重要.基于本體實(shí)現(xiàn)表格信息抽取方法[1-2]不依賴于所抽取的WEB頁(yè)面的設(shè)計(jì)格式,也沒(méi)有對(duì)其內(nèi)容提出任何表示限制,但該方法只適用于一定的應(yīng)用領(lǐng)域,當(dāng)應(yīng)用領(lǐng)域改變時(shí)相應(yīng)的本體需要重新構(gòu)造.基于樣本實(shí)例的抽取方法[3]不依賴于網(wǎng)頁(yè)的結(jié)構(gòu)特征,但這種方法需要較多的樣本實(shí)例,增加了用戶負(fù)擔(dān).基于網(wǎng)頁(yè)結(jié)構(gòu)特征分析的方法[4-5]采用統(tǒng)計(jì)聚類(lèi)的思想,查全率較高,但在抽取信息時(shí)具有一定的盲目性,經(jīng)常抽取出大量的無(wú)用信息.可見(jiàn),現(xiàn)有的信息抽取技術(shù)難以同時(shí)滿足網(wǎng)頁(yè)信息自動(dòng)抽取中查全率與查準(zhǔn)率高、抽取信息量大、用戶負(fù)擔(dān)輕和無(wú)關(guān)于應(yīng)用領(lǐng)域等要求.
通過(guò)對(duì)現(xiàn)有信息抽取方法的研究,本文提出了一種基于XML的WEB信息自動(dòng)抽取方法,采用標(biāo)準(zhǔn)的XML技術(shù)來(lái)解決信息抽取問(wèn)題.通過(guò)頁(yè)面清洗技術(shù)將HTML文檔標(biāo)準(zhǔn)化,利用歸納學(xué)習(xí)算法得到公共路徑,獲得用戶感興趣的目標(biāo)區(qū)域,形成抽取規(guī)則庫(kù),從而實(shí)現(xiàn)對(duì)其它同類(lèi)頁(yè)面信息的自動(dòng)抽?。摲椒▽⒕W(wǎng)頁(yè)結(jié)構(gòu)特征分析與歸納學(xué)習(xí)相結(jié)合,具有較高的查全率與查準(zhǔn)率;需要的樣本實(shí)例少,減輕了用戶負(fù)擔(dān);使用標(biāo)準(zhǔn)的XSLT作為信息抽取規(guī)則,復(fù)用性高、抽取結(jié)果具有自描述性.
本文提出的基于XML的WEB信息自動(dòng)抽取框架,包括4個(gè)功能器:頁(yè)面清洗器、頁(yè)面結(jié)構(gòu)分析器、規(guī)則學(xué)習(xí)器、抽取器,如圖1所示.其中頁(yè)面清洗器包括網(wǎng)頁(yè)URL、XHTML文檔;頁(yè)面結(jié)構(gòu)分析器主要是構(gòu)建網(wǎng)頁(yè)分析樹(shù);規(guī)則學(xué)習(xí)器包括學(xué)習(xí)樣本實(shí)例、構(gòu)建XPATH;抽取器包括XSLT模板規(guī)則庫(kù)、抽取信息.
圖1 Web信息自動(dòng)抽取構(gòu)架Fig.1 Automatic extraction of web information architecture
基于XML的信息抽取方法在待抽取的數(shù)據(jù)源網(wǎng)頁(yè)URL已獲得的前提下,通過(guò)頁(yè)面清洗器將源HTML文檔標(biāo)準(zhǔn)化,過(guò)濾無(wú)用元素.如果該頁(yè)不存在抽取規(guī)則,利用頁(yè)面結(jié)構(gòu)分析器將該頁(yè)解析成一棵網(wǎng)頁(yè)分析樹(shù),并根據(jù)樣本實(shí)例學(xué)習(xí)公共的 XPATH,從而形成該頁(yè)的抽取規(guī)則.如果已存在抽取規(guī)則,則直接進(jìn)行抽?。捎诖槿〉男畔⒋蠖际峭ㄟ^(guò)后臺(tái)數(shù)據(jù)庫(kù)產(chǎn)生,即所謂的隱藏網(wǎng)頁(yè)[6],一般有著較為統(tǒng)一的結(jié)構(gòu),因此依據(jù)生成的抽取規(guī)則,可以將網(wǎng)站中全部需要的信息抽取出來(lái).
目前WEB上的數(shù)據(jù)大多都是HTML格式的,該標(biāo)記語(yǔ)言缺乏對(duì)數(shù)據(jù)本身的描述,不含清晰的語(yǔ)義信息,對(duì)隱藏其中的數(shù)據(jù)難以檢索或抽取.許多HTML文檔沒(méi)有完全遵守W3C網(wǎng)頁(yè)標(biāo)準(zhǔn),結(jié)構(gòu)混亂,甚至含有錯(cuò)誤,無(wú)法被轉(zhuǎn)換成一棵網(wǎng)頁(yè)解析樹(shù),因此在信息抽取前有必要進(jìn)行頁(yè)面的整理工作.
可擴(kuò)展超文本標(biāo)記語(yǔ)言(Extensible HyperText Markup Language,XHTML)是萬(wàn)維網(wǎng)聯(lián)合會(huì)提出的新一代網(wǎng)頁(yè)標(biāo)準(zhǔn),從根本上解決了WEB文檔和其他資源描述所面臨的問(wèn)題.因此在過(guò)濾腳本信息、圖像信息等無(wú)用元素的基礎(chǔ)上,將不規(guī)范HTML文檔轉(zhuǎn)換成標(biāo)準(zhǔn)的XHTML文檔是頁(yè)面清洗中的一項(xiàng)重要工作.
現(xiàn)有的WEB數(shù)據(jù)轉(zhuǎn)換工具Tidy容錯(cuò)功能比較差,直接使用Tidy工具轉(zhuǎn)換為XHTML文檔后,解析比較困難,難以進(jìn)行后續(xù)工作[7].本文給出了一種HTML頁(yè)面清洗算法,主要實(shí)現(xiàn)步驟如下.
1)利用HTML解析器把HTML文檔解析成一棵HTMLDOM樹(shù),并獲得該樹(shù)的根元素.
2)為文檔添加X(jué)ML文檔聲明和XSLT規(guī)則轉(zhuǎn)換文件.
3)從樹(shù)根開(kāi)始,遞歸遍歷HTMLDOM樹(shù),根據(jù)節(jié)點(diǎn)類(lèi)型進(jìn)行判斷處理.
若是文本節(jié)點(diǎn),則用實(shí)體引用代替特殊字符,并打印文本節(jié)點(diǎn).
若是元素節(jié)點(diǎn),則需判斷節(jié)點(diǎn)類(lèi)型是否是無(wú)用元素.若是無(wú)用節(jié)點(diǎn),如Script、META、STYLE等,則直接過(guò)濾;否則,在取出元素節(jié)點(diǎn)之前先打印“<”,利用DOM中的get Node Name()方法獲得元素節(jié)點(diǎn)名稱,同時(shí)將其名稱小寫(xiě)化.
在抽取時(shí)有些元素節(jié)點(diǎn)的屬性值是必須的,如鏈接元素的屬性值有利于獲得下一頁(yè)網(wǎng)頁(yè)地址;而有些屬性值只是用于字體樣式,對(duì)抽取工作是無(wú)用的.因此,必須對(duì)元素節(jié)點(diǎn)的屬性值進(jìn)行優(yōu)化處理.本方法判斷元素類(lèi)型是否為鏈接元素,若是,則提取鏈接元素所有的屬性值.在XHTML中,屬性值必須使用引號(hào),并且必須有值.因此,在輸出鏈接元素的屬性時(shí),首先打印一個(gè)引號(hào),并取得屬性值,對(duì)其進(jìn)行特殊字符轉(zhuǎn)換、小寫(xiě)化,再打印結(jié)束引號(hào),最后打印“>”.
如果元素節(jié)點(diǎn)有子節(jié)點(diǎn),則以同樣方式遞歸打印出所有孩子節(jié)點(diǎn),直到遍歷結(jié)束,關(guān)閉元素節(jié)點(diǎn).
4)待整個(gè)HTMLDOM樹(shù)遍歷結(jié)束,則形成了規(guī)范的XHTML文檔.
例如,針對(duì)某網(wǎng)站經(jīng)過(guò)該轉(zhuǎn)換算法標(biāo)準(zhǔn)化后的XHTML文件片斷如圖2所示.
對(duì)XHTML文檔進(jìn)行解析,使用JTREE構(gòu)建可視化的XML文檔,以便獲得實(shí)例樣本,減輕用戶負(fù)擔(dān).
構(gòu)建網(wǎng)頁(yè)分析樹(shù)思想如下:
1)將頁(yè)面清洗得到的XHTML文檔解析成XMLDOM樹(shù),獲得該樹(shù)的根節(jié)點(diǎn)ROOT.
2)深度優(yōu)先遍歷該XMLDOM樹(shù).獲得根節(jié)點(diǎn)的名稱,如果該節(jié)點(diǎn)有孩子節(jié)點(diǎn),遞歸處理該節(jié)點(diǎn)的孩子節(jié)點(diǎn).如果該節(jié)點(diǎn)沒(méi)有孩子節(jié)點(diǎn),則直接加到當(dāng)前節(jié)點(diǎn)下.最后把所有子節(jié)點(diǎn)加載到JTREE的根節(jié)點(diǎn)中生成整棵樹(shù).
3)顯示整棵樹(shù).將圖2中 XHTML文檔構(gòu)建網(wǎng)頁(yè)分析樹(shù),其結(jié)果如圖3所示.
圖2 經(jīng)過(guò)轉(zhuǎn)換算法標(biāo)準(zhǔn)化后的XHTML文件片斷Fig.2 the standard XHTML document segment
在獲得樣本實(shí)例的XPATH表達(dá)式的基礎(chǔ)上,通過(guò)歸納學(xué)習(xí)得到公共XPATH.由于本方法只需獲得樣本實(shí)例的 XPATH的表達(dá)式,不需構(gòu)建每個(gè)節(jié)點(diǎn)的XPATH,故執(zhí)行速度較快.
1)生成樣本XPATH
XPATH路徑表達(dá)式可以看成定位XML文檔各個(gè)節(jié)點(diǎn)的步驟順序,這些步驟以“/”分開(kāi).如圖3選中的節(jié)點(diǎn),其XPATH表達(dá)式為“/html[1]/head[1]/title[1]”,表示選擇“html”元素下“head”元素的“title”元素的葉子節(jié)點(diǎn)值,結(jié)果是圖中的“筆記本電腦類(lèi)目2,商品,盡在拍拍”節(jié)點(diǎn).為了準(zhǔn)確的定位信息點(diǎn)位置,本文提出了一種新的學(xué)習(xí)XPATH算法用于生成樣本實(shí)例的XPATH,描述如下:
圖3 使用JTREE構(gòu)建的網(wǎng)頁(yè)分析樹(shù)Fig.3 Web analytics tree constructed by JTREE
2)學(xué)習(xí)公共XPATH
獲得所有的樣本實(shí)例后,通過(guò)學(xué)習(xí)算法歸納出公共 XPATH,本文涉及兩種情況:網(wǎng)頁(yè)級(jí)抽取和記錄級(jí)抽?。疚闹械木W(wǎng)頁(yè)級(jí)抽取是簡(jiǎn)單而有效的,主要目標(biāo)是提取主題信息,而不是細(xì)粒度的數(shù)據(jù).比如招聘信息一般可得到記錄級(jí)的招聘列表,每個(gè)招聘信息都會(huì)有一個(gè)鏈接,以說(shuō)明詳細(xì)的招聘事宜,本文只需抽取出詳細(xì)的招聘事宜即可.
若為記錄級(jí)抽取,則至少需要2個(gè)樣本實(shí)例.本方法利用網(wǎng)頁(yè)分析樹(shù)獲得樣本實(shí)例的 XPATH,并歸納學(xué)習(xí)出待抽取信息的公共路徑.對(duì)于兩個(gè)樣本實(shí)例的XPATH表達(dá)式,從樹(shù)根開(kāi)始比較,如果節(jié)點(diǎn)名稱和位置序號(hào)都相同,則記入公共XPATH表達(dá)式,若某個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)名稱相同,而位置序號(hào)不同,則說(shuō)明待抽取信息位于以該節(jié)點(diǎn)表示的樹(shù)節(jié)點(diǎn)及其兄弟為根的子樹(shù)中,此時(shí)獲得該節(jié)點(diǎn)的所有兄弟節(jié)點(diǎn)數(shù),將該節(jié)點(diǎn)的孩子序號(hào)置為0,并寫(xiě)入公共XPATH表達(dá)式中;依次比較到XPATH表達(dá)式結(jié)束.有的頁(yè)面需要學(xué)習(xí)多條XPATH,那么繼續(xù)將樣本實(shí)例的XPATH與已經(jīng)得到的公共XPATH比較,從根節(jié)點(diǎn)開(kāi)始,直到全部樣本實(shí)例比較完畢,由此可得到全部樣本實(shí)例的公共XPATH表達(dá)式.若抽取多個(gè)信息點(diǎn)則需要學(xué)習(xí)各個(gè)信息點(diǎn)的XPATH表達(dá)式.
若為網(wǎng)頁(yè)級(jí)抽取,則樣本實(shí)例至少需要1個(gè).若為1個(gè)樣本實(shí)例,它的公共XPATH就為此節(jié)點(diǎn)本身的XPATH表達(dá)式;若為多個(gè)樣本實(shí)例,生成公共XPATH的方法和記錄級(jí)抽取的生成方法相同.
由于XSLT具有強(qiáng)大靈活的語(yǔ)法結(jié)構(gòu),易于理解、修改和操縱文檔中的數(shù)據(jù),本文使用標(biāo)準(zhǔn)的XSLT作為信息抽取規(guī)則.通過(guò)對(duì)歸納學(xué)習(xí)得到的公共XPATH添加、合并或更新,生成抽取規(guī)則庫(kù),形成XSLT文件,利用其中的XPATH構(gòu)件定位文檔中節(jié)點(diǎn)的位置,從而實(shí)現(xiàn)了一次編寫(xiě),多次重用.
在信息抽取中,一般記錄條數(shù)較多,而在XSLT中,當(dāng)XSLT處理器為執(zhí)行轉(zhuǎn)換而處理樣式表的時(shí)候,它的值每次都可能發(fā)生變化.但是,一旦在某個(gè)轉(zhuǎn)換中設(shè)定了這個(gè)值,就不再發(fā)生變化.因此,要把所有的記錄條數(shù)全部抽取出來(lái),必須使用模板遞歸調(diào)用.首先定義3個(gè)變量,保存起始孩子節(jié)點(diǎn)序號(hào),孩子節(jié)點(diǎn)數(shù)以及步長(zhǎng)值.然后設(shè)置公共路徑里的參數(shù),初始值為起始孩子節(jié)點(diǎn)序號(hào),模板運(yùn)行一次后將起始孩子節(jié)點(diǎn)序號(hào)按步長(zhǎng)值增加,得到的結(jié)果作為參數(shù)遞歸調(diào)用模板,完成多條記錄數(shù)的自動(dòng)抽?。?/p>
在生成抽取規(guī)則時(shí)可以定制待抽取節(jié)點(diǎn)的節(jié)點(diǎn)名稱,使其作為結(jié)果XML文件的元素名稱,保證了抽取結(jié)果具有自描述性.
根據(jù)抽取規(guī)則庫(kù)里的規(guī)則,利用XSLT和XPATH在數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)定位方面的優(yōu)勢(shì),通過(guò)輸出文件函數(shù)實(shí)現(xiàn)信息抽取.將抽取結(jié)果存入XML文件中,用于觀察數(shù)據(jù)抽取的正確性和二次處理.
利用基于XML的WEB信息自動(dòng)抽取方法,采用JAVA語(yǔ)言開(kāi)發(fā)了信息抽取原型系統(tǒng).該系統(tǒng)界面簡(jiǎn)單友好,在頁(yè)面結(jié)構(gòu)發(fā)生變化時(shí),也能利用原型系統(tǒng)快速構(gòu)建新的抽取規(guī)則庫(kù),具有較高的查準(zhǔn)率和查全率.
本文利用原型系統(tǒng)進(jìn)行了4個(gè)網(wǎng)站26個(gè)頁(yè)面的實(shí)驗(yàn),如表1和表2所示,其中待抽取數(shù)據(jù)共423個(gè),由于2688網(wǎng)店和卓越亞馬遜的信息點(diǎn)具有兩種格式,當(dāng)其提供的樣本實(shí)例數(shù)為2個(gè)時(shí),實(shí)際抽出共366個(gè),正確抽出共360個(gè),平均F值為75.23%;當(dāng)其提供的樣本實(shí)例為3個(gè)時(shí),平均查全率為99.17%,平均查準(zhǔn)率為99.17%,平均F值為99.17%.對(duì)于一般網(wǎng)站而言,一個(gè)信息點(diǎn)本方法最多提供3個(gè)樣本實(shí)例,便可完成較高查全率和查準(zhǔn)率的抽?。谏鲜鲈囼?yàn)結(jié)果,本文的信息抽取方法是有效且可行的.
表1 測(cè)試原型系統(tǒng)的網(wǎng)站Tab.1 test prototype website
表2 抽取測(cè)試效果的評(píng)價(jià)Tab.2 Evaluation of test results
本文給出的基于XML的WEB信息自動(dòng)抽取方法,利用XML的標(biāo)準(zhǔn)技術(shù),通過(guò)數(shù)據(jù)轉(zhuǎn)換算法和XPATH學(xué)習(xí)算法獲得公共路徑,并結(jié)合XSLT和XPATH在數(shù)據(jù)轉(zhuǎn)換和信息定位方面的優(yōu)勢(shì),實(shí)現(xiàn)了對(duì)WEB信息的自動(dòng)抽?。畬?shí)驗(yàn)結(jié)果表明,該方法查全率和查準(zhǔn)率高,抽取結(jié)果具有自描述性,易于建立各個(gè)領(lǐng)域的數(shù)據(jù)抽取系統(tǒng).
[1]王放,顧寧,吳國(guó)文.基于本體的WEB表格信息抽取 [J].小型微型計(jì)算機(jī)系統(tǒng),2003,24(12):2142-2146.
[2]畢蕾,沈潔,徐法艷,等.領(lǐng)域本體指導(dǎo)的Web商品信息抽取 [J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(24):6393-6396.
[3]張紹華,徐林昊,楊文柱,等.基于樣本實(shí)例的WEB信息抽取 [J].河北大學(xué)學(xué)報(bào)(自然科學(xué)版),2001,21(4):431-437.
[4]David Buttler,Ling Liu and Calton Pu.A fully automated object extraction system for the world wide web[C].International Conference on Distributed Computing Systems,2001.
[5]于魯波,陳超.互聯(lián)網(wǎng)商品信息抽取技術(shù) [J].計(jì)算機(jī)工程,2008,34(5):274-276.
[6]Raghavan S,Garcia-Molina H.Crawling the Hidden Web[EB/OL].(2000-12-08).http://dbpubs.stanford.edu:8090/pub/2000-36.
[7]軒艷艷.基于XML的WEB信息抽取研究與實(shí)現(xiàn) [D].武漢:武漢理工大學(xué),2008.