周 昆,王 釗,于碧輝
1(中國科學院大學,北京 100049)
2(中國科學院 沈陽計算技術研究所,沈陽 110168)
3(沈陽市國家稅務局 信息中心,遼寧 沈陽 110013)
在專業領域進行基于自然語言處理技術的信息處理應用研究時,無論采用有監督方法、半監督方法,都需要收集大量領域語料進行模型訓練,所以高效準確的采集專業領域信息,并構建生語料庫是進行相關工作的基礎.主題爬蟲能收集與主題相關的網頁數據信息,提高數據相關性,降低后續處理的復雜程度.不同專業領域的網站結構以及其所含的領域內容一般不具有良好相似性,所以主題爬蟲很難直接有效的在不同領域間遷移.將自然語言處理技術應用于特定領域時,由于通用語料無法滿足任務需要,因此需要采集特定領域語料.特定領域信息通常具有時效性強的特點,經常出現新詞匯,僅基于詞典匹配的方式采集生語料會導致采集系統的泛化能力不強,忽略語義上相關卻未出現在詞典中的內容.此外,主流網站通常將內容相關的頁面存放于相同路徑下,同一網站下鏈指特定領域頁面的URL 結構上具有相似性.URL的結構信息可以啟發特定領域語料采集過程.
本文針對特定領域語料采集任務,設計了基于語義相關度主題爬蟲的語料采集方法,根據選定的主題詞,利用頁面描述信息,基于維基百科中文語料訓練出的詞分布式表示綜合HowNet 計算頁面信息相關度,結合URL的結構信息預測未訪問URL 鏈指的頁面與特定領域的相關程度,可以采集特定領域生語料.
針對可用于垂直領域語料采集系統的主題爬蟲,文獻[1]提出了Shark-Search 方法,利用頁面相關信息啟發式的判斷待下載頁面.文獻[2]在Shark-Search 方法基礎上將超鏈接按區域聚類,但由于導航欄中包含的導航條目較多,該方法可能會導致導航欄中的主題相關鏈接被忽略.文獻[3]利用主題分類樹結合網頁分塊與改進的HITS 算法,在主題爬蟲的準確率上取得了一定的提升,但主題分類樹對于專業垂直領域存在覆蓋度不足的問題.文獻[4]設計了基于分類詞關鍵詞詞頻模型的主題爬蟲,應用于地緣政治這一垂直領域的內容采集,由于主題相關頁面中仍可能包含主題無關鏈接,該方法可能導致不必要的頁面訪問.文獻[5]將文本內容與鏈接結合用作數據采集的判斷,應用于垂直搜索引擎,但計算復雜度略高.文獻[6]提出了一種利用語義信息預測待爬取頁面相關性的主題爬蟲模型,其利用WordNet 計算語義相關性,只針對于英文領域.文獻[7]提出“鄰居特征”概念,利用相同路徑下鏈接內容相似的特點爬取主題相關頁面,但在頁面內容的計算上沒有充分考慮語義信息.
本文提出的方法共包括爬取模塊、存儲模塊、后處理模塊三個部分.爬取模塊實現了語義相關度主題爬蟲,對給定網站中特定領域內容進行采集與初步過濾,并將初步結果提交至存儲模塊進行持久化,后處理模塊對其進行清洗,去除頁面版權聲明等噪聲后,得到特定領域生語料.
爬取模塊首先將種子URL 添加至任務數據庫并由任務生成器提取至任務隊列.對于隊列中未訪問的URL,首先計算其鏈指頁面的描述信息頁面信息相關度,若描述信息不相關,則認為頁面內容屬于特定領域的可能性較小,僅對其進行簡單的主題詞匹配;否則,解析該URL 鏈指的頁面正文,并對其中每個未訪問URL,計算其錨文本的頁面信息相關度、URL 結構相關度并綜合得到未訪問URL的優先級并據此決定是否丟棄該URL.為解決爬取規模較大時計算URL 結構信息耗時較長的問題,對保存于存儲模塊的歷史URL 采取抽樣方式作為近似估計,以加快計算速度.爬取模塊的工作流程如圖1.

圖1 爬取模塊工作流程
存儲模塊包括內存存儲、數據庫存儲、文件存儲三個部分.爬取過程的中間結果保存于內存.爬取模塊需要加載的部分數據保存于文件.為解決計算頁面信息相關度耗時較長的問題,存儲模塊對語義相關度主題爬蟲所使用的數據構建倒排索引,同時將常用數據添加至緩存,加快爬取模塊執行速度.來自爬取模塊的初步結果和來自后處理模塊的特定領域生語料,均由存儲模塊持久化到數據庫.
后處理模塊主要負責清洗掉噪聲數據,由于部分頁面含有大量URL,導致正文內容占頁面總體內容比例較低,解析正文時會受到影響,可能導致得到的正文部分僅包括網站的版權聲明等模板信息,所以需要后處理模塊進行清洗.初步結果經后處理模塊清洗后得到特定領域生語料.
本文提出的基于語義相關度主題爬蟲的語料采集方法具有以下特點:
(1)在基于少量規則的頁面分析基礎上,采用語義相關度主題爬蟲技術,有效提高了特定領域相關頁面的識別能力,降低了人工分析網頁結構并制定規則的工作量.
(2)利用網站結構中存在按分類進行頁面存儲的特點,基于URL 結構相關度對候選頁面進行處理,有效提高了頁面采集的準確度.
本章詳細介紹詞語相似度計算,以及語義相關度主題爬蟲兩種關鍵技術.詞語相似度用以衡量待匹配詞與主題詞之間的相似性,語義相關度主題爬蟲用以預測未訪問URL 鏈指的頁面是否主題相關.其中,待匹配詞指描述信息和錨文本中的文本經分詞、詞性標注、依據詞性過濾操作后得到的詞語,包含了文本的語法及語義層面特征,可以有效表達頁面內容.
詞語相似度來度量待匹配詞與主題詞之間的相似程度,借鑒文獻[8]的定義,詞語相似度定義為:描述詞語與詞語之間相似程度的一個數值,取值范圍在[0,1]之間.一個詞語與其自身的相似度為1.若兩個詞語在任何語境下都不可互換,其相似度為0.
本文利用HowNet[9]結合詞分布式表示計算詞語間語義上的相似度.HowNet 是一部人工編纂的語義知識詞典,利用人工覆蓋大多數常用詞語,準確性較好,但由于專業特定領域通常具有時效性強的特點,詞語更新速度快,HowNet 不能完全覆蓋,而詞的分布式表示可以由實時語料訓練,時效性較好.因此,本系統提出結合詞分布式表示緩解HowNet 覆蓋度低的問題.詞語相似度計算步驟如下:
(1)抽取HowNet 包含的詞語,根據文獻[8]提出的方法,計算所有HowNet 包含詞與HowNet 覆蓋的主題詞之間語義相似性SimH.
(2)對中文文本語料進行預處理,包括語料抽取、繁簡轉換、分詞、去除停用詞等.
(3)利用預處理后的語料訓練詞分布式表示.
(4)根據式(1),計算H o w N e t 包含的詞與HowNet 未覆蓋的主題詞之間、HowNet 未包含詞與所有主題詞之間的詞分布式表示相似性SimD.

其中,S imD(d,t)表示待匹配詞與主題詞之間的分布式表示相似性,d與t分別表示待匹配詞向量、主題詞向量wdi、wti分別表示待匹配詞d、主題詞t的分布式表示中維度i的大小,n表示詞分布式表示的向量長度.
(5)根據算法1,最終得到所有詞與主題詞的相似度Sim.

算法1.計算待匹配詞與主題詞之間語義相似度輸入:S imD(d,t)1.待匹配詞d 與主題詞t 之間的分布式表示相似性;S imH(d,t)2.待匹配詞d 與主題詞t 之間依據HowNet 計算出的語義相似性;α、β0≤α≤1 0≤β≤1 3.參數,其中,閾值Th1,Th2.S im(d,t)輸出:待匹配詞d 與主題詞t 之間的語義相似性.操作步驟:1)If SimD(d,t)<0,then Sim(d,t)=0,return Sim(d,t).2)If SimD(d,t)<Th1,then SimD(d,t)=0.3)If SimH(d,t)<Th2,then SimH(d,t)=0.4)If SimH(d,t)=0,then Sim(d,t)=αSimD(d,t),else Sim(d,t)=βSimH(d,t)+(1-β)SimD(d,t).5)If Sim(d,t)<Th1,then Sim(d,t)=0.6)Return Sim(d,t).
特定領域語料采集的基礎是語義相關度主題爬蟲.語義相關度主題爬蟲使用未訪問URL 優先級(簡稱優先級)來預測未訪問URL 鏈指的頁面與主題的相關程度.計算優先級時使用頁面信息相關度來度量頁面描述信息、錨文本與主題的相關程度,同時使用URL 結構相關度來度量未訪問URL 與歷史URL的相關程度,綜合兩種相關程度得到未訪問URL的優先級.
本文使用頁面信息相關度來度量頁面描述信息、錨文本與主題在語義上的相關程度.在計算頁面信息相關度時,使用詞語權重來度量每個詞的重要程度,本文定義詞語權重如式(2):

其中,wi表示詞語i的權重,詞語包括待匹配詞與主題詞.t fi、id fi分別表示詞語i在文檔d中的詞頻與逆文檔頻率,fi表示詞語i在文檔d中出現的頻數,N表示文檔數目,Ni表示包含詞語i的文檔數目.
主題詞集合用于描述特定主題,待匹配詞集用于表示未訪問頁面的特征,其定義如下:
定義1.選取的主題詞集合定義為TS et,包含所有的主題詞wordt.
定義2.待匹配詞集定義為WS et由待匹配詞組成.
由算法1 與式(2)得到詞語相似性和詞語權重后,就可以計算頁面信息相關度,計算如式(3)所示.

其中,Rel(TS et,WS et)表示主題詞集和待匹配詞集之間的頁面信息相關度,wd表示待匹配詞wordd的權重,wt表示主題詞wordt的權重,二者均由式(2)得到,wordd∈WS et,wordt∈TS et,M表示待匹配詞集的大小,N表示主題詞集的大小,即M=|WS et|,N=|TS et|,S im(wordd,wordt)表示wordd與wordt之間的詞語相似度,由算法1 得到.
本文使用結構相關度度量未訪問的URL 與已訪問的歷史URL 結構上的相似程度,如果未訪問的URL 與歷史URL 結構相似,則該URL 很可能也需要爬取.結構相關度的計算利用式(4)、算法2、算法3 完成.
Jaccard 系數定義為:

其中,A、B表示兩個集合.

算法2.計算URL 之間的結構相似性輸入:1.URL1,URL2 α β 2.權重參數 、threshold 3.閾值參數輸出:是否結構相似 isHrefStructSame

操作步驟:(1)將URL1、URL2 分別分割成主機名部分Host1、Host2,路徑名部分Path1、Path2.(2)如果URL1的主機名與URL2的主機名之間存在包含關系,則返回isHrefStructSame=true.1/dd(3)將Host1、Host2 按‘.'分割,各劃分成若干個部分,對二者對應部分按照式(4)計算Jaccard 系數,得到各個部分的計算結果J1,J2,…,Jn.如果二者的對應部分均包含“www”(即兩個URL均以www 開頭),則此對應部分Jaccard 系數為計算結果的,為常數.hostS im=∑ni=1 wiJi wiw1=a′ wi+1=wi-b,i>0 a,bJi(4)主機部分相似性:,其中n 取Host1、Host2 分割后的最小數目,表示第i 部分的權重,且,,均為常數,由上一步得到.(5)將Path1、Path2 按‘/'分割,各劃分成若干個部分,對二者對應部分按照式(4)計算Jaccard 系數,得到各個部分結果Jp1,Jp2,…,Jpm.pathS im=∑mj=1 w j?Jp j w jw1=a′,w j+1=w j/2,j>0 a′Jp j(6)路徑部分相似性,其中m 取Path1、Path2 分割后的最小數目,表示第j 部分的權重,且,為常數,由上一步得到.αhostS im+βpathS imthreshold (7)判斷:是否大于,若是返回isHrefStructSame=true;否則返回isHrefStructSame=false.

算法3 利用URL 結構信息判斷待爬取鏈接是否需要爬取輸入:1.未訪問的URL 2.歷史URL 3.采樣數目n輸出:URL 結構相關度struct操作步驟:1)從歷史URL中隨機抽取n個URL 作為抽樣樣本.2)計算未訪問URL 與每個抽樣樣本間的結構相似性,利用算法2.3)如果未訪問URL 與過半樣本結構相似,返回struct=1.否則返回struct=0.
是否爬取一個未訪問的URL 最終由未訪問URL 優先級(簡稱優先級)決定,若優先級大于閾值,則認為該URL 需要爬取.優先級由未訪問URL所在頁面的描述信息、URL所在錨文本、URL 結構三個因素共同決定.優先級計算公式如式(5).

其中,p(url)表示優先級,Rel(finfo,TS et)表示主題詞集TS et與未訪問URL所在頁面的描述信息finfo之間的頁面信息相關度,Rel(aurl,TS et)表示未訪問URL所在錨文本aurl與主題詞集TS et之間的頁面信息相關度,二者由公式(3)計算,struct(url)表示未訪問URL的結構相關度,其計算過程如算法3,取值{0,1},α、β 、λ 是平衡參數,0 ≤α ≤1,0 ≤β ≤1,λ >0 .考慮頁面的實際構成情況,借助層次分析法,確定平衡參數取值.
最終,語義相關度主題爬蟲對未訪問URL的爬取策略為:如果未訪問URL 優先級大于閾值,則爬取該鏈接鏈指的頁面,否則不爬取.
本文選取黨建領域作為特定領域,選用維基百科中文數據庫全庫數據、某黨建網站黨建專題下2017年9月至2018年2月約1 萬篇黨建新聞數據、搜狗文本分類語料庫部分數據來訓練詞分布式表示.維基百科中文數據庫信息量大、內容范圍廣,黨建專題數據包含有大量主題相關的內容,內容專業性強,搜狗文本分類語料庫包含多種類別,對應采集過程中遇到的各種類別.語料詳細信息見表1.

表1 訓練分布式表示所使用的語料
為確保主題詞的專業性與準確性,大部分主題詞選自中共中央黨校出版社出版的《黨的建設詞典》,為保證時效性,同時選取了百度百科黨務知識類別下的部分詞條,共選出1552個詞作為候選主題詞,涵蓋時政、理論、作風等方面.為了保證系統的執行速度,結合黨建語料的統計信息,從候選主題詞中精煉出429個主題詞作為最終的主題詞.部分主題詞及其權重如表2.

表2 部分主題詞
詞語權重基于黨建專題數據、依據式(2)計算.對于未在訓練語料中出現的詞語,賦予平均值作為其權重.由于少數權重較高的詞語出現在非黨建領域頁面時會對采集造成影響,所以對其權重進行人工調整.例如,“弘揚中國共產黨人歷史擔當精神”(黨建新聞)與“與中國爭奪影響力?俄媒論莫迪與普京私聊弦外之音”(國際新聞)中均包含“中國”一詞,若“中國”的權重過大可能導致不屬于黨建語料的國際新聞被采集.詞語權重共覆蓋88 820個詞,其中人工調整權重的詞語共38個,部分被人工調整的詞語如表3所示,部分詞語權重如表4所示.

表3 部分人工調整的詞語

表4 部分詞語權重
對于算法1中閾值選取,以同義詞組間、非同義詞組間的語義相似性判斷準確率作為評價標準,選取420 組詞語進行實驗,實驗結果如表5.最終根據實驗結果進行閾值選取.

表5 算法1的閾值選取
對于算法2中閾值選取,以結構相似性判斷準確率作為標準,選取某網站相同板塊以及不同板塊下共100 對URL 進行實驗,實驗結果如表6,最終算法2的閾值根據實驗結果進行選取.

表6 算法2的閾值選取
對于未訪問URL 鏈指頁面閾值的選取,即公式5 閾值選取,基于表5、表6的實驗結果,利用層次分析法選取αβγ,并對不同的閾值進行測試,實驗結果如圖2.閾值越大時,主題相關限制越嚴格,因此采集準確率越高.當閾值達到0.2 后,準確率達到穩定.此外,當低閾值時,由于主題相關限制不嚴格,大量主題無關頁面被訪問,大量時間耗費在無關頁面的訪問與判斷上,考慮時間因素下的采集量不高;隨著閾值升高,主題限制嚴格,無關頁面被過濾,無關頁面訪問耗時較少,考慮時間因素下的采集量上升;當閾值進一步升高時,部分主題相關頁面也會被過濾,導致采集量級反而下降.
最后本文針對黨建領域,對多個網站進行實驗,實驗網站列表如表7所示。網站分為兩大類,前4個網站為主流的門戶網站,包含體育、經濟、娛樂、汽車等大量無關領域信息,后4個網站屬于黨建領域網站,其所含內容屬于黨建領域信息。

圖2 URL 最終閾值選取

表7 實驗網站
本文采用準確率作為評價標準,準確率即精度,如式(6)所示:

其中,relevantResult表示系統采集的語料中屬于黨建領域的數量,Allresult表示系統采集到的所有語料數目.系統準確率結果如表8所示.系統在黨建領域網站,其平均準確率在94.87%;在門戶網站上,其平均準確率為64.20%.
在黨建領域網站上采集準確率較高,原因是其內容屬于黨建領域信息,噪聲較小,頁面內容較為規整,形式較為統一,因此準確率較高.而門戶網站的采集準確率均較黨建領域網站準確率低,其主要原因如下:
(1)門戶網站包括大量無關主題,噪聲較大.
(2)門戶網站頁面結構較為復雜,對主題識別影響較大.
(3)部分時政新聞正文文本較短,導致正文解析器解析結果較差.
(4)部分URL 鏈接到視頻、圖片等非文本頁面,經初步過濾后只保留下網站版權等噪聲信息,降低了準確率.
本文針對語料采集任務,設計了基于語義相關度主題爬蟲的語料采集方法.根據選定的主題詞,利用頁面描述信息,基于維基百科中文語料訓練出的詞分布式表示綜合HowNet 計算頁面信息相關度,結合URL的結構信息預測未訪問URL 鏈指的頁面內容與主題的相關程度.實驗表明,基于語義相關度主題爬蟲的語料采集系統能夠有效的采集互聯網中的黨建領域頁面內容作為黨建領域生語料,具有較高的準確率.針對正文提取器提取短文本時質量較差的問題,下一步工作將對其進行改進,以進一步提高系統采集門戶網站時的準確率.