白鈺潔
(東北石油大學 計算機與信息技術學院, 大慶 163000)
Web信息抽取是將Web作為信息源的一類抽取[1]。它的目的主要是將半結構化或非結構化的網頁轉化成結構化的信息存儲起來,以至于用戶可以在信息搜索與信息獲取等方面得到更多的支持。基于此,可以將Web信息抽取理解為定位信息與信息再存儲的過程。對于定位信息,現有的方法可以大體分為模板生成,本體匹配,特征限制三類。
模板生成主要是對頁面整體進行分析,以得到對于頁面整體的一套抽取規則,往往伴隨著包裝器的生成。比如roadrunner[2],它通過自動化的生成依靠網頁相似度匹配的方法對網頁的標簽及文本進行分析,從而找到網頁中的信息模式。該方法比較依賴網頁的整體結構,健壯性不強;本體匹配,主要是用相關領域專家對一個領域內相關實體名稱、實體概念、實體屬性及實體間關系等的描述對網頁中的信息做標記,然后再根據標記進行抽取,比如劉耀等人提出一種基于領域本體的文本分割方法為信息抽取提供了有效的幫助[3]。但是本體本身的建立仍有很大的困難;特征限制主要是找到網頁中信息所在位置的相關特征,比如語義特征,上下文特征,結構特征,視覺特征等,比如srv[4]通過從訓練集學習處特征去抽取數據。使用該方法能夠大大減少對網頁整體的依賴性,使信息抽取能夠應對一定程度上網頁的變化,但是一些特征相關性太強并不能跨網站使用。
當前網站中的網頁常常具有相似的結構,即擁有著統一的模板。并由于網頁中的信息由于是以半結構化的形式存在,對于一類目標信息,我們可以將其看作值,它的相應的說明信息可以看作屬性,作為它的前信息。比如圖1中的“名稱由來”既是屬性,“百度……形象物”既值。

圖1 百度信息
本文意圖抽取網頁中的值信息,選用特征限制的方法進行信息抽取,為了防止特征相關性過強,針對當前網站的特征,提出一種基于循環神經網絡選出目標信息的開始定界符的方法,來提取目標信息。該方法使用無監督的方式提取開始定界符,大大減少了人力,并且具有一點的健壯性與可移植性。
本文在尋找開始定界符時將網頁看作由標簽分隔的文本序列,在抽取時將網頁分析為dom樹,將目標信息看作開始定界符的下一個文本節點。因此,文本的信息抽取步驟可分為四步。首先,獲取一個網站內一定數量的網頁;其次,對網頁進行預處理;然后使用循環神經網絡訓練,分類出屬于開始定界符的信息;最后,通過Python提供的lxml庫對目標網頁進行抽取。
目前,利用Python實現的爬蟲技術已經較為成熟,通過網絡下載相關庫,可以給我們提供方便快捷的技術支持。需要注意的是,在通過Python提供的網絡爬蟲進行網頁獲取時,首先要對一個網站獲取至少100個網頁,這些網頁將作為樣本網頁通過循環神經網絡訓練找到開始定界符。再對該網站獲取10個網頁作為目標網頁,對抽取結果進行檢測。
當前的Html網頁由文本標簽與一些腳本與樣式標簽組成,為了提高循環神經網絡訓練的效率與準確度,要對網頁進行以下操作:首先,去除腳本標簽與頭標簽及其內容,比如,;其次,針對一句話被分為多個詞,去除樣式標簽將其還原成一句完整的句子;最后,去除網頁中的注釋。
本文使用Tensorflow構建循環神經網絡循環神經網絡。在具體構建時需要四步[5]:1.首先生成一個詞典,該詞典由被標簽間隔的所有文本節點及其出現在網站中的頻率組成。2. 進行正向傳播,構建循環神經網絡所需要的流程圖,既對輸入到輸出所需要的權重進行占位并編寫其計算所需的算法;3. 反向傳播,使用Optimizer類提供的方法優化權重,常使用的子類如GradientDescentOptimize,AdagradOptimizer或者MomentumOptimizer。4. 最后用Softmax進行歸一化處理,既將最終生成的向量各個值進行加工,使它們相加約等于1。
對網頁進行訓練后,我們可以得到一個詞典,以及詞典中的詞所對應的一個詞向量,該詞向量的維度既詞典的長度,每一維的值都對應詞典中該索引下的詞作為下一個詞的概率。比如一個詞典是【“啊”,“吧”,“從”,“的”】,“啊”的詞向量是【0.3,0.4,0.2,0.1】 ,那么“吧”作為“啊”的下一個詞的概率既“0.4”。而我們將網頁的文本節點逆序輸入,最后對所有詞向量進行分析。設立一個閾值,以中國大學mooc網站為例,本文選取0.95,遍歷所有詞向量的每一維,當有大于該閾值的,我們將該維數對應的詞典中的詞選為開始定界符。結果如圖2所示:

圖2 開始定界符結果
如今可以用來實現爬蟲的解析器庫也越來越成熟,越來越多,比如xml,beautifulsoup,lxml等等。本文主要通過爬蟲實現的功能是:通過定位一個屬性文本節點,從而找到它的下一個文本節點,既值節點。
這些解析器都可以實現這些功能,但是都有其優缺點。本文使用lxml解析器進行抽取。該過程主要分為三步:1.定位文本節點;2.搜索文本節點的下一個節點;3.獲得文本內容。抽取流程如圖3所示。

圖3 信息抽取流程圖
其中需要注意兩點:1.這其中都牽扯到定位節點的個數不唯一的可能,所以在搜索下一節點時,需要對節點b進行遍歷;2.可能在網頁的工具欄處也出現這些開始定界符,但是對它們獲得的節點也是開始定界符所以再獲取文本時可以添加一個下一節點不是開始定界符的篩選條件;3.該方法獲取的只是靜態內容,獲取不到與服務器交互才能獲得的內容。4.再獲取下一節點時,首先對節點b本身的下一節點搜索,如果沒有,則獲取其父節點的下一節點。
信息抽取的評測標準主要來自于三大會,即MUC、MET(Multilingual Eniity Task Conferenee)和TREC(Text Retrieval Conferenee)。其中最主要的指標是準確率(Precision)和召回率(Recall,也稱為查全率)。召回率可以描述為信息被正確抽取的比率,即多少信息被正確抽取;而準確率則可以描述為抽取的信息中正確的比率,即抽取的信息的可信度。具體定義如下:
Recall=正確抽取的實例數(True)/所有正確的實例(Real)
Precision=正確抽取的實例數(True)/所有抽取的實例總數(Total)
選取了3個慕課網站作為抽取對象,具體抽取結果如表1所示:

表1 三個慕課網站頁面抽取結果
從實驗可以看出,本文提出的基于開始定界符的Web信息抽取方法法可以較準確并完整地抽取到所需要的值信息,證明了該方法的可行性。由于一些網站的標簽嵌套寫法不夠標準,比如中國大學mooc網站,所以導致了抽取時內容不夠完整,精確率與召回率會有所下降。
Web信息抽取技術目前已經比較成熟,但是還沒有比較好的自動性與健壯性,本文在抽取時采用循環神經網絡自動篩選出開始定界符的方法,將該定界符作為目標節點的前節點,減少了人為的操作,并且具有一定的適應性,在對具備本文所要求的網站特征的網站下進行抽取時,具有很高的正確率與召回率,抽取效果良好。今后將在該方面作進一步的研究,以達到更好的抽取效果。