專利名稱::一種基于文字分布特征的網(wǎng)頁正文提取方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種網(wǎng)頁正文提取方法,特別涉及一種基于文字分布特征的網(wǎng)頁正文提取方法。
背景技術(shù):
:當(dāng)前互聯(lián)網(wǎng)上的網(wǎng)頁可以分為“導(dǎo)航網(wǎng)頁”和包含主題信息的“內(nèi)容網(wǎng)頁”,前者主要由指向其它網(wǎng)頁的超鏈接組成,后者通常包含一個或多個主要由非鏈接文字組成正文部分以及正文周圍的噪聲文字,噪聲文字主要包括正文以外的導(dǎo)航欄、廣告、推薦鏈接、版權(quán)聲明等文字。從“內(nèi)容網(wǎng)頁”中提取正文對應(yīng)于從標(biāo)簽樹中提取包含所有正文的最小節(jié)點(diǎn)。隨著互聯(lián)網(wǎng)的迅速發(fā)展,充分利用其上積累的大量數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘、信息抽取、網(wǎng)頁分類等已經(jīng)成為研究熱點(diǎn),但是網(wǎng)頁內(nèi)包含的噪聲數(shù)據(jù)會產(chǎn)生不利影響,Gibson等在Thevolumeandevolutionofwebpagetemplates(InProceedingsofWffffJ05,pages830-839,2005)中的實驗表明早在2005年噪聲數(shù)據(jù)已經(jīng)占整個網(wǎng)頁數(shù)據(jù)的4050%,且這一比例將繼續(xù)增長。網(wǎng)頁正文提取目的是從網(wǎng)頁HTML代碼中提取表達(dá)網(wǎng)頁主題信息的正文文本,可以為基于網(wǎng)頁的自然語言處理任務(wù)提供有效數(shù)據(jù),同時對提高搜索引擎性能、提高移動設(shè)備用戶體驗起到積極作用。業(yè)已提出的網(wǎng)頁正文提取方法根據(jù)解析HTML代碼方法的不同可以分為基于模版(template)的方法、基于網(wǎng)頁分塊(block)的方法、基于標(biāo)簽樹解析的方法和基于標(biāo)記(token)序列的方法?;谀0娴姆椒ɡ镁W(wǎng)頁之間包含的相同結(jié)構(gòu)提取正文或識別噪聲數(shù)據(jù),人工指定模版的方法需要大量的工作,無法應(yīng)用于大規(guī)模的網(wǎng)頁信息處理;自動提取模版的方法需要一個網(wǎng)頁集合以提取模版,且模版一旦更換,需要重新提取,另外,互聯(lián)網(wǎng)包括很多大小不一的網(wǎng)站,導(dǎo)致模版數(shù)量巨大,管理模版成為需要解決的問題?;诰W(wǎng)頁分塊的方法首先將網(wǎng)頁解析為不重疊或嵌套的區(qū)塊,然后利用每個區(qū)塊的特征進(jìn)行正文提取,對于此類算法,將網(wǎng)頁合理分塊本身即是一個較難解決的問題。基于標(biāo)記序列的方法首先將網(wǎng)頁解析為標(biāo)記序列,然后利用標(biāo)記序列的分布特征提取正文,此類方法對網(wǎng)頁的依賴較小,通用性較強(qiáng),但是沒有充分利用HTML代碼的結(jié)構(gòu)特征?;跇?biāo)簽樹的方法利用HTML代碼自身的嵌套結(jié)構(gòu)將網(wǎng)頁解析為標(biāo)簽樹,然后結(jié)合樹節(jié)點(diǎn)的統(tǒng)計特征提取正文。隨著互聯(lián)網(wǎng)技術(shù)特別是HTML標(biāo)記語言的發(fā)展,很多現(xiàn)有方法無法完成正文提取的任務(wù)。例如,越來越多的網(wǎng)頁采用層疊樣式表(cascadingstylesheets-CSS)設(shè)置網(wǎng)頁外觀,那些需要讀取標(biāo)簽特定屬性的方法無法適應(yīng)此種變化;隨著HTML標(biāo)簽的靈活運(yùn)用,僅考慮特定標(biāo)簽的方法(例如Lin等在S.LinandJ.Ho.Discoveringinformativecontentblocksfromwebdocuments.InProceedingsofSIGKDDj02,pages588-593,2002.中僅考慮table標(biāo)簽,Chen等在L.Chen,S.Ye,andX.Li.Templatedetectionforlargescalesearchengines.InProceedingsofSAC’06,pages1094-1098,2006.中僅考慮table、p、ul標(biāo)簽)存在局限性。此外,不同地區(qū),不同語言的網(wǎng)頁存在差異,現(xiàn)有大部分方法沒有在跨語言測試集上進(jìn)行測試。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種自動化和高性能的網(wǎng)頁正文提取方法。本發(fā)明的基本思想是利用HTML代碼自身的嵌套結(jié)構(gòu)將網(wǎng)頁解析為標(biāo)簽樹,樹中的每個節(jié)點(diǎn)對應(yīng)網(wǎng)頁中的一對標(biāo)簽,節(jié)點(diǎn)的層次結(jié)構(gòu)由標(biāo)簽對的嵌套結(jié)構(gòu)決定。例如,圖I是某網(wǎng)頁的簡化的HTML代碼,圖2為圖I中的代碼對應(yīng)的標(biāo)簽樹。標(biāo)簽樹中的內(nèi)部節(jié)點(diǎn),對應(yīng)于HTML代碼中具有開始標(biāo)簽和對應(yīng)的結(jié)束標(biāo)簽的標(biāo)簽對,稱為容器節(jié)點(diǎn);標(biāo)簽樹中的葉子節(jié)點(diǎn),對應(yīng)于HTML代碼中位于標(biāo)簽之間的一段文字,稱為文本節(jié)點(diǎn)。文字以文本塊的形式分布在網(wǎng)頁中,由于一個文本塊對應(yīng)于HTML代碼中的一對標(biāo)簽,則一個文本塊對應(yīng)標(biāo)簽樹中的一個容器節(jié)點(diǎn),正文文本塊中的文字多為連續(xù)成段出現(xiàn)的非鏈接文字,而噪聲文本塊中的文字分布為連續(xù)排列的鏈接文字或以非鏈接文字與鏈接文字交替的形式出現(xiàn)?;谝陨鲜聦?,首先將HTML代碼解析為標(biāo)簽樹,文本塊的并列與嵌套關(guān)系對應(yīng)于標(biāo)簽樹節(jié)點(diǎn)的橫向兄弟節(jié)點(diǎn)關(guān)系與縱向父子節(jié)點(diǎn)關(guān)系;對于樹中的每個節(jié)點(diǎn),基于該節(jié)點(diǎn)的子節(jié)點(diǎn)中文字的分布與該節(jié)點(diǎn)同其兄弟節(jié)點(diǎn)的文字分布的相互關(guān)系,為每個節(jié)點(diǎn)計算權(quán)值;提取“自身權(quán)值”最大的節(jié)點(diǎn)內(nèi)的文字作為網(wǎng)頁正文。本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的一種基于文字分布特征的網(wǎng)頁正文提取方法,包括以下步驟步驟I:將網(wǎng)頁HTML代碼解析為對應(yīng)的標(biāo)簽樹,樹中每個節(jié)點(diǎn)中保存節(jié)點(diǎn)的標(biāo)簽名稱、節(jié)點(diǎn)編號、指向父節(jié)點(diǎn)的指針,每個容器節(jié)點(diǎn)還保存指向其所有子節(jié)點(diǎn)的指針的集合,每個文本節(jié)點(diǎn)中則包括該節(jié)點(diǎn)對應(yīng)的文字,具體方法為一、預(yù)處理掃描HTML代碼,去掉〈scriptX/script〉、〈style>〈/style>、<noscript></noscript〉標(biāo)簽對以及這三個標(biāo)簽對之間的代碼,去掉〈!——>標(biāo)簽內(nèi)的注釋、去掉<!doctype〉標(biāo)簽;二、掃描預(yù)處理之后的HTML代碼,從中提取標(biāo)簽的層次結(jié)構(gòu),建立網(wǎng)頁HTML代碼對應(yīng)的標(biāo)簽樹掃描過程中,維護(hù)一個由節(jié)點(diǎn)組成的線性列表每遇到一個開始標(biāo)簽,對其建立一個節(jié)點(diǎn),節(jié)點(diǎn)名稱設(shè)定為標(biāo)簽名稱,并分配節(jié)點(diǎn)的編號,編號從I開始分配,每新建一個節(jié)點(diǎn),編號增一作為該節(jié)點(diǎn)編號,掃描標(biāo)簽屬性,記錄其是否可見,若某一節(jié)點(diǎn)存在type屬性且其值為hidden或存在style屬性且其值為display:none或visibility:none則該節(jié)點(diǎn)不可見,將新建節(jié)點(diǎn)加入線性列表末尾;當(dāng)遇到一個結(jié)束標(biāo)簽時,從線性列表尾部向前掃描尋找第一個與該結(jié)束標(biāo)簽同名的節(jié)點(diǎn),將該節(jié)點(diǎn)以后的所有節(jié)點(diǎn)添加到該節(jié)點(diǎn)的子節(jié)點(diǎn)集合中,此時,若某節(jié)點(diǎn)不可見,則直接將其從列表中刪除;對于標(biāo)簽之間的文本,當(dāng)掃描到一個開始標(biāo)簽或結(jié)束標(biāo)簽時,對該標(biāo)簽與前一標(biāo)簽之間的文本建立一個文本節(jié)點(diǎn),分配編號并添加到節(jié)點(diǎn)列表中;三、后處理后序遍歷標(biāo)簽樹,將子節(jié)點(diǎn)中不包含文本節(jié)點(diǎn)的節(jié)點(diǎn)從樹中移除。步驟2:分析網(wǎng)頁文字分布特征與計算節(jié)點(diǎn)權(quán)值對網(wǎng)頁文字分布特征的分析如下一個網(wǎng)頁通常由多個文本塊組成,每個文本塊包含特定信息的文字,不同的文本塊可能是并列關(guān)系或嵌套關(guān)系。視覺空間上網(wǎng)頁中文本塊的并列與嵌套的位置關(guān)系對應(yīng)于標(biāo)簽樹結(jié)構(gòu)中節(jié)點(diǎn)的橫向(同層次特別是具有相同父節(jié)點(diǎn)的兄弟節(jié)點(diǎn)之間)與縱向(父節(jié)點(diǎn)與其子節(jié)點(diǎn)之間)關(guān)系。直觀上,若標(biāo)簽樹某個節(jié)點(diǎn)中存在連續(xù)多個包含非鏈接文字的子節(jié)點(diǎn),該部分文字成為正文的可能性大,并且文本子節(jié)點(diǎn)中包含的句子個數(shù)越多,文字越長,該部分文字成為正文的可能性越大。另一方面,標(biāo)簽樹中若出現(xiàn)了連續(xù)的包含鏈接文字的節(jié)點(diǎn)或者文本節(jié)點(diǎn)與鏈接節(jié)點(diǎn)交替的情況,該部分文字成為噪聲文字的可能性大。與此同時,由于網(wǎng)頁的復(fù)雜性,相反的情況也會出現(xiàn),例如,正文中可能包含特定詞語的超鏈接;而且,某些網(wǎng)頁中存在的免責(zé)聲明屬于噪聲文字,但是卻符合正文特征。由于此類情況的存在,直接判斷一個節(jié)點(diǎn)是否為正文節(jié)點(diǎn)的方法存在一定的局限性,解決這一問題的一種途徑是考慮節(jié)點(diǎn)周圍文字的整體分布情況,即在計算節(jié)點(diǎn)權(quán)值過程中同時考慮節(jié)點(diǎn)內(nèi)部的文字分布與節(jié)點(diǎn)的兄弟節(jié)點(diǎn)的文字分布對該節(jié)點(diǎn)的影響。節(jié)點(diǎn)內(nèi)部的文字分布由節(jié)點(diǎn)內(nèi)子節(jié)點(diǎn)文字分布決定,表現(xiàn)為文字的縱向分布特征,兄弟節(jié)點(diǎn)對某節(jié)點(diǎn)的影響則表現(xiàn)為文字的橫向分布特征,若一段鏈接文字周圍都是非鏈接文字,則該段鏈接文字成為正文的可能性會增大,反之亦然。為區(qū)分非鏈接文字與鏈接文字的不同作用,在計算過程中非鏈接文字權(quán)值取正值,鏈接文字以及用戶交互標(biāo)簽對應(yīng)節(jié)點(diǎn)內(nèi)的文字權(quán)值取負(fù)值。用戶交互標(biāo)簽指名稱為select、option、textarea、optgroup、menu、label、input、button、applet的標(biāo)簽。理論上,在信號處理中輸出函數(shù)是輸入函數(shù)與系統(tǒng)函數(shù)的卷積,卷積運(yùn)算中系統(tǒng)的響應(yīng)不僅與當(dāng)前時刻系統(tǒng)的輸入有關(guān),也跟之前若干時刻的輸入有關(guān)。將這一理論從時間角度對應(yīng)到標(biāo)簽樹的空間結(jié)構(gòu)上,標(biāo)簽樹中節(jié)點(diǎn)的權(quán)值不僅取決于其包含的文字的分布,還受與其相鄰的節(jié)點(diǎn)的影響;與信號隨時間衰減這一特性對應(yīng),節(jié)點(diǎn)權(quán)值對其它節(jié)點(diǎn)權(quán)值的影響應(yīng)隨節(jié)點(diǎn)之間距離的增大而減小。同時,卷積運(yùn)算起到了數(shù)據(jù)平滑的作用,由于考慮了節(jié)點(diǎn)之間的相關(guān)性,那些屬于正文的鏈接文字的權(quán)值將得到提升,從而可以被正確抽取為正文。因此,本發(fā)明使用下列公式表示網(wǎng)頁文字分布特征一、按照以下公式⑴計算容器節(jié)點(diǎn)i的權(quán)值權(quán)利要求1.一種基于文字分布特征的網(wǎng)頁正文提取方法,包括以下步驟步驟I:將網(wǎng)頁HTML代碼解析為對應(yīng)的標(biāo)簽樹,樹中每個節(jié)點(diǎn)中保存節(jié)點(diǎn)的標(biāo)簽名稱、節(jié)點(diǎn)編號、指向父節(jié)點(diǎn)的指針,每個容器節(jié)點(diǎn)還保存指向其所有子節(jié)點(diǎn)的指針的集合,每個文本節(jié)點(diǎn)中則包括該節(jié)點(diǎn)對應(yīng)的文字,具體方法為一、預(yù)處理掃描HTML代石馬,去掉〈scriptX/script>、〈style>〈/style>、〈noscript>〈/noscript>標(biāo)簽對以及這二個標(biāo)簽對之間的代碼,去掉〈!>標(biāo)簽內(nèi)的注釋、去掉〈!doctype〉標(biāo)簽;二、掃描預(yù)處理之后的HTML代碼,從中提取標(biāo)簽的層次結(jié)構(gòu),建立網(wǎng)頁HTML代碼對應(yīng)的標(biāo)簽樹掃描過程中,維護(hù)一個由節(jié)點(diǎn)組成的線性列表每遇到一個開始標(biāo)簽,對其建立一個節(jié)點(diǎn),節(jié)點(diǎn)名稱設(shè)定為標(biāo)簽名稱,并分配節(jié)點(diǎn)的編號,編號從I開始分配,每新建一個節(jié)點(diǎn),編號增一作為該節(jié)點(diǎn)編號,掃描標(biāo)簽屬性,記錄其是否可見,若某一節(jié)點(diǎn)存在type屬性且其值為hidden或存在style屬性且其值為display:none或visibility:none則該節(jié)點(diǎn)不可見,將新建節(jié)點(diǎn)加入線性列表末尾;當(dāng)遇到一個結(jié)束標(biāo)簽時,從線性列表尾部向前掃描尋找第一個與該結(jié)束標(biāo)簽同名的節(jié)點(diǎn),將該節(jié)點(diǎn)以后的所有節(jié)點(diǎn)添加到該節(jié)點(diǎn)的子節(jié)點(diǎn)集合中,此時,若某節(jié)點(diǎn)不可見,則直接將其從列表中刪除;對于標(biāo)簽之間的文本,當(dāng)掃描到一個開始標(biāo)簽或結(jié)束標(biāo)簽時,對該標(biāo)簽與前一標(biāo)簽之間的文本建立一個文本節(jié)點(diǎn),分配編號并添加到節(jié)點(diǎn)列表中;三、后處理后序遍歷標(biāo)簽樹,將子節(jié)點(diǎn)中不包含文本節(jié)點(diǎn)的節(jié)點(diǎn)從樹中移除。步驟2:計算節(jié)點(diǎn)權(quán)值一、按照以下公式(I)計算容器節(jié)點(diǎn)i的權(quán)值全文摘要本發(fā)明涉及一種基于文字分布特征的網(wǎng)頁正文提取方法,包括以下步驟步驟1將網(wǎng)頁HTML代碼解析為對應(yīng)的標(biāo)簽樹;步驟2分析網(wǎng)頁文字分布特征,分別計算容器節(jié)點(diǎn)和文本節(jié)點(diǎn)節(jié)點(diǎn)權(quán)值;步驟3后序遍歷標(biāo)簽樹,取“自身權(quán)值”最大的節(jié)點(diǎn),提取其中的文字作為正文。本發(fā)明不需要人工干預(yù),直接從單個網(wǎng)頁中提取正文,不需要網(wǎng)頁集合以進(jìn)行學(xué)習(xí);對標(biāo)簽依賴較少,能夠從包含多個正文部分的網(wǎng)頁中提取所有正文,在中英文測試集上都取得較高性能。文檔編號G06F17/30GK102915361SQ201210397240公開日2013年2月6日申請日期2012年10月18日優(yōu)先權(quán)日2012年10月18日發(fā)明者袁武,林子涵,袁文申請人:北京理工大學(xué)