門診專家信息可以為需要就診的居民提供一定的參考, 通常這類信息分布于各個醫院的門戶網站, 而且大多數需要通過查詢才能獲取。為了自動抽取醫院門戶網站的門診專家信息, 首先要解決查詢接口判別的問題。針對此問題, 根據查詢接口的屬性特征, 構建了一種樹狀結構的領域模型, 用于對查詢接口進行分類判別, 并進行領域關鍵詞的填寫。其次, 對于返回的網頁, 需要進行噪聲過濾, 本文針對此問題, 提出了分塊重要度模型。實驗結果表明, 基于領域模型的查詢接口判別方法比基于規則方法的準確率提高了10.83%, 分塊重要度模型的F1值比XPath方法提高了10.5%。
引用本文: 張遠鵬, 董建成, 錢旦敏, 耿興云, 吳輝群, 王理. 醫院門戶網站門診專家信息的抽取研究. 生物醫學工程學雜志, 2015, 32(6): 1249-1254. doi: 10.7507/1001-5515.20150222 復制
0 引言
目前,絕大多數醫院的門戶網站上都會有該醫院專家信息(職稱、科室、擅長領域、門診時間等)的介紹。筆者對江蘇省二級甲等以上醫院的門戶網站進行了統計,結果顯示,90%以上的醫院網站均有專家信息的介紹以及門診時間,在抽查的樣本中,40%左右的信息是以靜態頁面的形式呈現(也稱淺層網,Surface Web),其余均以查詢的方式呈現(也稱深層網,Deep Web)[1],即需要通過參數查詢的方式才能獲取到需要的專家信息。無論是Surface Web,還是Deep Web,如果在某一區域范圍內,能夠將各個醫院所有的專家信息進行收集,并集成到社區居民電子健康檔案系統數據庫當中,將為社區居民的就醫提供極大的便利。
信息抽取(information extraction,IE)指的是利用相關的算法,從未知的用自然語言描述的文檔中,抽取具有固定格式的、無歧義的以及結構化或半結構化的信息[2]。目前信息抽取的主要對象是具有海量非結構化數據的業務系統,如電子病歷系統[3],或者是Web資源。本文所抽取的對象是Web資源。關于Web頁面的信息抽取,國內外已經有大量的文獻報道。伊利諾伊大學厄本那-香檳分校的研究人員利用谷歌搜索引擎和Web目錄服務人工收集了8個領域的441個Deep Web中的477個查詢接口,構建了TEL-8數據集,為后續的研究奠定了基礎[4]。Cope等[5]在Deep Web數據抽取時,根據Web表單特征,利用C4.5算法,構建表單分類器,但是該方法的準確率和正確率并不高,不能滿足實際抽取的需要。本文在Cope等的研究基礎上,通過構建領域模型(Domain Model, DM),實現查詢接口的分類和二次判別。對于返回的查詢結果,往往包含許多與抽取主題無關噪聲信息,對于噪聲信息的過濾,目前大多數采用的是基于規則的方法。例如,Fu等[6]提出了XPath算法,并將該方法在5類不同的網頁數據上進行測試,準確率和正確率分別為92%和83.2%。但是,該方法的使用需要有一個重要的前提,即抽取的網頁需要具備類似的布局,當抽取的網頁數量非常龐大時,這一前提很難保證,因此,基于規則的方法具有一定的局限性。在本文的研究中,提出了一種分塊重要度模型(Block Important Model, BIM),將網頁數據進行分塊,通過構建分類器,過濾噪聲信息。
1 查詢接口的篩選
Web頁面中的查詢接口,主要是以表單的形式呈現。Web表單是HTML中的高級元素,主要由<form></form>標記組成。<form></form>之間的內容為表單域,主要包含文本框、密碼框、單選按鈕、復選按鈕等。但是除了查詢接口以表單的形式呈現以外,Web頁面中的登錄、用戶注冊、問題反饋以及搜索引擎都可能會以表單的形式呈現,因此,需要對Web頁面中的表單進行篩選,確定正確的查詢接口。Cope等[5]提取Web頁面中表單的特征,構建分類器對表單進行判斷,結果該方法的準確率和正確率只有87%和85%,還不能滿足實際的需要。但是,Cope等在構建分類器過程中,所使用的一些啟發式規則是可以借鑒的。本文在進行查詢接口篩選時,首先利用啟發式規則對表單進行靜態篩選(Static Filter);其次,對于靜態篩選后的表單,若仍然不能確定是否為查詢接口,則尋找表單所屬領域的關鍵詞進行填充并提交查詢,根據服務器返回至客戶端的結果進行判斷,稱之為動態篩選(Dynamic Filter)。
1.1 靜態篩選
通過對Web頁面中的查詢接口表單進行分析發現,這類表單一般不含有密碼框、文件上傳框、多行文本框等。故靜態篩選的目的是過濾包含上述表單域的表單元素。為了更好地描述靜態篩選的過程,可以將表單元素定義成為一個五元組:
Form={{C1, C2, C3…Cn}, A, N, M, U}
在上述元組中,{C1, C2, C3…Cn}表示表單元素所包含的表單域控件,A表示表單的Action屬性,即接收處理表單元素的URL,N表示表單元素的名稱,即name值,M表示表單提交的方法,即POST或GET,U表示表單元素所在的Web頁面的URL。假設集合T={Password, File, Textarea}表示由密碼框、文件上傳框以及多行文本框組成的集合,則在靜態篩選時,需要遵循以下的規則:
(1)若Ci∈T,1≤i≤n,則舍棄該Form表單;
(2)若A是屬于外站的URL,則舍棄該Form表單;
(3)若n=1,則舍棄該Form表單(該表單可能是搜索引擎);
1.2 動態篩選
對于靜態篩選仍然無法判斷的表單,需要通過“二次探測查詢”的方式,根據服務器的返回結果進行二次判斷。Bergholz等[7]構建了一種“正負”查詢策略,正查詢選取領域相關的關鍵詞進行提交,負查詢選取與領域無關的關鍵詞進行提交。他們認為,對于Deep Web查詢接口,所有負查詢返回的頁面的相似度一般不超過5%;絕大多數正查詢返回的頁面大小是負查詢的至少3倍以上,且最大差異子樹(Largest Difference Subtree, LDS)大于1 Kb。但是這種判斷方式需要進行2次查詢,系統的開銷比較大,而且一般只適用于全文查詢表單,對于多屬性查詢表單,顯得無能為力,因此具有一定的局限性。在本文中,通過建立領域模型,對查詢接口所屬領域進行分類,利用領域關鍵詞進行表單填寫,從而實現多屬性查詢表單的二次查詢且不需要進行“正負”2次查詢,節省了系統的開銷。
2 領域模型
2.1 領域模型的概念
2002年12月,伊利諾伊大學厄本那-香檳分校UIUC的研究人員利用谷歌搜索引擎和Web目錄服務人工收集了8個領域的441個Deep Web中的477個查詢結口,并對其進行統計分析,得出了2個查詢接口具有的非常重要的特征:①每個查詢接口所包含的屬性個數是有限的;②雖然同一個領域內查詢接口的數量非常多,但是表示查詢接口屬性的詞匯通過聚合以后,具有收斂性。基于這兩個重要的特征,可以建立一個模型,來表示某領域內所有查詢接口的屬性,即DM。對于DM的形式化定義,可采用一個包含15元組的樹形結構進行表示[8-9]。
定義:DM可以定義為DM=(V, v0, E, △, TP, TPL, N, NL, Lb, LbL, Val, ValL, tf, R, ≤),該15元組中,各個元素的含義如下:
V表示DM中所有節點的集合。v0表示DM的根節點,且v0∈V。E表示父節點和子節點所組成邊的集合。△表示DM中所使用的所有字符的集合。TP表示節點V到節點表單域類型集合的映射,節點表單域類型集合為{Text,RadioBox,CheckBox,Select},分別表示文本框、單選框、多選框以及下拉列表框。TPL表示節點V到節點表單域類型列表{TP*}的映射,返回節點V可能的所有表單域類型。N表示節點V到△的映射,返回節點V默認表單域名稱。NL表示節點V到表單域名稱列表{N*}的映射,返回節點V可能的表單域名稱。Lb表示節點V到△的映射,返回節點V的默認標簽。Lbl表示節點V到標簽列表{Lb*}的映射,返回節點V可能的標簽列表。Val表示節點V到△的映射,返回節點V的默認值。ValL表示節點V到默認值列表{Val*}的映射,返回節點V可能的默認值列表。tf表示節點V到N(自然數)的映射,返回節點V在所有接口中出現的次數。R表示節點V到集合{range,part,group,constraint}的映射,返回節點V與父親節點的關系,其中,range表示節點V的父節點是一個區間元素,且V是區間的一個成分;part表示節點V是父節點的組成部分;group表示節點V與其他兄弟節點表示同一語義;constraint表示節點V是對父節點的一種約束。≤表示DM中節點的順序,是一個二元關系,如(u, v)∈≤,表示節點u在節點v之前出現。
2.2 DM的構建
對于DM的構建,首先選取某領域的一個查詢接口作為初始的DM,然后通過不斷和該領域內其他查詢接口進行合并,以產生含有更多屬性信息的DM,周而復始地重復這個過程,最終形成穩定的DM。在此合并過程中,需遵循以下4條規則:
(1)添加(Add):若節點v與DM中的節點語義均不相同,則在DM中添加以節點v為根節點的子樹;
(2)更新(Update):若DM中有與節點v語義相同的節點u,則將節點v的TP、N、Lb、Val等更新到u節點的TPL、NL、LbL和ValL中;
(3)細化(Refine):若DM中有與節點v語義相近的節點u,并且節點v中包含了u中不含的屬性,則添加節點v作為u的子節點;
(4)泛化(Generalize):若DM中有若干個兄弟節點與節點v語義相近,且節點v是這些兄弟節點的泛化,則添加節點v作為第一個兄弟節點的父節點的子節點,同時將這些兄弟節點作為節點v的子節點。
按上述規則不斷進行查詢接口的合并,DM也隨之趨于穩定,當DM不再變化時,則停止構建。
2.3 查詢接口的分類和判斷
對于動態篩選中,需要進行二次查詢的表單,要根據上述建立的DM,對其進行分類和模式抽取,確定表單中屬性與DM中節點的對應關系,從而為表單中的屬性選取合適的候選值,進而提交查詢。其算法流程描述如下:
(1)對于待處理表單Form={{C1, C2, C3…Cn}, A, N, M, U},抽取{C1, C2, C3…Cn}的屬性詞;
(2)對屬性詞進行規范化處理,如去掉停用詞、詞干還原、非法字符過濾等;
(3)通過遍歷,查找DM中與屬性詞對應的節點,與之匹配的DM記為DMi,i∈(1, n);
(4)利用空間向量模型,計算Form表單與DMi的相似度,選擇相似度最大的作為Form表單的領域分類;
(5)根據分類結果,選擇關鍵詞進二次查詢,對于返回的結果頁面,若包含3個或以上鏈接,則認為是查詢接口。
3 信息抽取
通過查詢接口獲取的結果頁面中,往往包含與抽取主題無關的噪聲信息,例如廣告信息、導航信息、版本信息等。在進行信息抽取時,需要對噪聲信息進行過濾,避免產生主題漂移的現象。為了解決此問題,本文在網頁分塊的基礎之上,提出了一種網頁分塊重要度模型——BIM。
3.1 網頁分塊
網頁分塊是BIM的基礎,目前關于網頁分塊的算法有很多,例如文檔對象模型(Document Object Model, DOM)算法,該方法用DOM樹表示一個HTML網頁,能夠反映網頁的視覺和內在排版信息,但是需要利用瀏覽器才能顯性地表示出來,且同樣視覺效果的DOM樹可以有多種,不同的瀏覽器顯示的效果也不盡相同。基于視覺的頁面分塊(Vision-based Page Segmentation, VIPS)算法能夠顯性地表達HTML網頁的視覺信息和排版信息,從而使得這些信息的建模更加容易,在本文中,采用該算法對網頁進行分塊。
3.2 分塊重要度
分塊重要度是用一個離散值來表示分塊與抽取主題的相關程度,一般來說,一個網頁所呈現的所有內容,以抽取主題為參照,可以分為以下4個等級:
level-1:噪音信息,例如廣告信息、版權信息以及裝飾信息;
level-2:有用的信息,但是和主題不相關,例如導航信息、目錄信息等;
level-3:和主題相關的信息,但是不是最重要、最相關的,例如主題索引等;
level-4:與抽取主題完全匹配的信息,例如標題、主要內容等。
但是,上述的等級劃分,并不能代表所有人的觀點,為了使其更加客觀,我們選擇一定的樣本來進行用戶評價。
從新浪網(www.sina.com.cn)的3種類別中(新聞、財經、科技)下載600個網頁,每個類別各200,然后利用VIPS進行分塊,共得到4 823個分塊。選擇5名人員按照各自主題獨立地進行分塊重要等級劃分。
如表 1所示,有3/5人員(60%)可以將92.9%的分塊劃分成4個等級。當將level-2與level-3合并時,有3/5人員可以將99.5%的分塊劃分成3個等級。當將level-1、level-2和level-3合并時,有3/5人員可以將全部的分塊劃分成2個等級。

在表 2和表 3中,分別給出了3-levels和2-levels的評估結果,其目的是確定哪些等級最容易和最難區分。如表 2所示,當將level-1和level-2合并,4/5人劃分一致的分塊數為76.0%,5/5人劃分一致的分塊數為56.2%。當將level-2和level-3合并,3/5人劃分一致的分塊數為99.5%。這種情況說明,level-1與level-2之間難以區分,level-2與level-3之間也是如此。表 1與表 2進行比較,更進一步說明,區分level-2與level-3比區分level-1和level-2的難度要高。如表 3所示,將(1, 2, 3)合并,4/5人劃分一致的分塊數與5/5人劃分一致的分塊數最高,說明level-4最易區分。故上述分析可知,將分塊重要度等級劃分成為3個等級(將level2和level3合并),更具有客觀性,如表 4所示。



3.3 分塊重要度模型
BIM主要是根據分塊的特征(空間特征和內容特征),采用適當方法,獲取分塊的重要度,即BIM是從分塊特征到分塊重要度的一個映射:
<block features>->block importance
3.3.1 分塊特征
網頁設計師在設計網頁時,通常會將重要的信息放在頁面的中間,次要的信息,例如導航信息、版權信息放在頁面的邊緣位置,因此分塊的位置可以反映其重要性。除此之外,分塊的內容也在一定程度上反映其重要性,例如,分塊中包含圖片的數量、超鏈接文本的長度、<form>標簽的數量等。故在BIM中,分塊的空間特征和內容特征都將被考慮。
(1)空間特征:頁面經過VIPS分塊之后,可以用一個4元組來表示分塊的空間特征,即:
{BlockCenterX/PageWidth, BlockCenterY/PageHeight, BlockRectWith/PageWidth, BlockRectHeight/PageHeight }
BlockCenterX和BlockCenterY表示分塊中心坐標,BlockRectWith和BlockRectHeight表示分塊的寬度和高度,PageWidth和PageHeight表示頁面的寬度和高度。這種表示方法有一個缺點,當頁面的高度遠大于顯示器的高度時,第一屏顯示的重要分塊的空間特征并不能真實地反映其重要程度,因此,需要對上述4元組中的BlockRectHeight和進行修正:BlockRectHeight=BlockRectHeight/WindowHeight。當BlockCenterY<HeaderHeight時,BlockCenterY=BlockCenterY/(2*HeaderHeight)。當HeaderHeight<BlockCenterY<PageHeight-FooterHeight時,BlockCenterY=0.5。除此之外,BlockCenterY=0.5+(PageHeight-lockCenter) /(2*FooterHeight)。其中,HeaderHeight和FooterHeight是預定義的常量,表示網頁頭和尾的高度。
(2)內容特征:空間特征相似的2個分塊,其重要度也不一定是相似的,因此除了考慮空間特征,還需要納入內容特征。例如,同樣位于網頁中心的廣告分塊和正文分塊,廣告分塊可能僅僅包含一張圖片(<img>)。分塊的內容特征可以用9元組表示:
{ImgNum, ImgSize, LinkNum, LinkTextLength, InnerTextLength, InteractionNum, InteractionSize, FormNum, FormSize}
其中,ImgNum和ImgSize表示分塊中圖片的數量和大小。LinkNum和LinkTextLength表示分塊中鏈接的數量和錨文本的長度。InnerTextLengh表示分塊內文本的長度。InteractionNum和InteractionSize表示分塊中表單域控件的數量和大小,例如<input>、<select>等。FormNum和FormSize表示分塊中表單的個數和大小。
3.3.2 模型學習
該模型根據網頁分塊的內容特征和空間特征,通過一定的算法為其分配分塊重要度。分塊重要度的計算算法主要有2種:一種是基于規則的方法,但是這種方法在分塊特征很多時,無法準確地構造出規則函數;另外一種方法是采用機器學習的方法,該方法通過人工標注部分分塊,將其表示為(x,y)的形式,其中x表示分塊的特征,y表示分塊重要度,對于標注的數據進行訓練,形成訓練集合T。因此,模型學習的問題可以歸結為尋找函數f(x),使得$\sum\limits_{\left(x, y \right)\in T}{{{\left| f\left(x \right)-y \right|}^{2}}}$取得最小值的問題。對于這樣的分類問題,目前有非常多的學習方法,本文采用支持向量機(support vector machine, SVM)。
4 實驗結果
4.1 查詢接口判定實驗
為了驗證查詢接口判定效果,筆者從全國的二級甲等及以上醫院人工收集了120個用于門診查詢Deep Web查詢接口,同時,從Web上收集了60個非Deep Web查詢接口,主要包含一些注冊表單、搜索引擎、登錄表單等。對于評價指標,本文選取準確率和正確率,二者的計算方法如下所示:
陽性預測值=正確判斷為Deep Web查詢接口數目/(正確判斷的Deep Web查詢接口數目+錯誤判斷的Deep Web查詢接口數目)
正確率=(正確判斷為Deep Web查詢接口數目+正確判斷為非Deep Web查詢接口數目)/全部查詢接口數目
接口判斷的實驗結果如表 5所示:

本實驗中,將1例非Deep Web接口誤判為Deep Web接口,通過人工分析發現,該接口是包含2個表單域的站外搜索引擎,該搜索引擎所搜索的信息在本站顯示,但是超鏈接所指向的站點均為外網,所以該接口應該為非Deep Web查詢接口。本文的實驗結果與文獻[6]的判斷方法進行比較,在查詢接口判斷的正確率和準確率方面有了明顯提升,為醫院門診專家數據庫的構建奠定了基礎。
4.2 分塊重要度實驗
為了對BIM的分類效果進行驗證,選擇2 500個通過查詢接口返回的頁面作為測試數據,將其分成2組(一組作為訓練樣本,另外一組作為測試樣本),每組各1 250個頁面。訓練樣本經過VIPS分塊后,得到9 745個分塊,測試樣本經過VIPS分塊后,得到9 823個分塊。對于訓練樣本,進行人工標注并選擇RFB-SVM[10]作為學習算法進行樣本訓練,同時與Fu等[6]的XPath算法在相同的數據集上進行比較,采用準確率(P)、召回率(R)以及F1值作為評價指標,定義如下:
$ \begin{align} & P=\frac{x}{y} \\ & R=\frac{x}{z} \\ & F1=\frac{2PR}{P+R} \\ \end{align} $ |
其中,x表示正確確定的與抽取主題相關的分塊數,y表示正確確定的與抽取主題相關以及不相關的分塊數,z表示所有與主題相關的分塊數。P是評估獲取的分塊重要度成果中與主題相關分塊成果所占的比例;R是從關注領域中,召回目標類別的比例;而F1值則是綜合這二者指標的評估指標,用于綜合反映整體的指標,當F1較高時則說明實驗方法比較有效。實驗結果如表 6所示。

如表 3所示,當網頁數量比較多時,很難保證所有的網頁都具備相同的布局,同時也很難去構建規則函數。而本文所提出的BIM,根據頁面的內容特征和空間特征,采用機器學習的方法對頁面分塊的重要程度進行判斷,各項指標均優于XPath算法,具有一定的實用價值。
5 結束語
區域門診專家數據庫的建立,作為區域電子健康檔案共享平臺功能的補充,具有非常重要的意義。Deep Web信息抽取技術在該數據庫構建過程中,扮演了非常重要的角色。本文在已有方法的基礎之上,提出了新的思路和方法,且通過實驗證明了該方法的有效性和實用性。
0 引言
目前,絕大多數醫院的門戶網站上都會有該醫院專家信息(職稱、科室、擅長領域、門診時間等)的介紹。筆者對江蘇省二級甲等以上醫院的門戶網站進行了統計,結果顯示,90%以上的醫院網站均有專家信息的介紹以及門診時間,在抽查的樣本中,40%左右的信息是以靜態頁面的形式呈現(也稱淺層網,Surface Web),其余均以查詢的方式呈現(也稱深層網,Deep Web)[1],即需要通過參數查詢的方式才能獲取到需要的專家信息。無論是Surface Web,還是Deep Web,如果在某一區域范圍內,能夠將各個醫院所有的專家信息進行收集,并集成到社區居民電子健康檔案系統數據庫當中,將為社區居民的就醫提供極大的便利。
信息抽取(information extraction,IE)指的是利用相關的算法,從未知的用自然語言描述的文檔中,抽取具有固定格式的、無歧義的以及結構化或半結構化的信息[2]。目前信息抽取的主要對象是具有海量非結構化數據的業務系統,如電子病歷系統[3],或者是Web資源。本文所抽取的對象是Web資源。關于Web頁面的信息抽取,國內外已經有大量的文獻報道。伊利諾伊大學厄本那-香檳分校的研究人員利用谷歌搜索引擎和Web目錄服務人工收集了8個領域的441個Deep Web中的477個查詢接口,構建了TEL-8數據集,為后續的研究奠定了基礎[4]。Cope等[5]在Deep Web數據抽取時,根據Web表單特征,利用C4.5算法,構建表單分類器,但是該方法的準確率和正確率并不高,不能滿足實際抽取的需要。本文在Cope等的研究基礎上,通過構建領域模型(Domain Model, DM),實現查詢接口的分類和二次判別。對于返回的查詢結果,往往包含許多與抽取主題無關噪聲信息,對于噪聲信息的過濾,目前大多數采用的是基于規則的方法。例如,Fu等[6]提出了XPath算法,并將該方法在5類不同的網頁數據上進行測試,準確率和正確率分別為92%和83.2%。但是,該方法的使用需要有一個重要的前提,即抽取的網頁需要具備類似的布局,當抽取的網頁數量非常龐大時,這一前提很難保證,因此,基于規則的方法具有一定的局限性。在本文的研究中,提出了一種分塊重要度模型(Block Important Model, BIM),將網頁數據進行分塊,通過構建分類器,過濾噪聲信息。
1 查詢接口的篩選
Web頁面中的查詢接口,主要是以表單的形式呈現。Web表單是HTML中的高級元素,主要由<form></form>標記組成。<form></form>之間的內容為表單域,主要包含文本框、密碼框、單選按鈕、復選按鈕等。但是除了查詢接口以表單的形式呈現以外,Web頁面中的登錄、用戶注冊、問題反饋以及搜索引擎都可能會以表單的形式呈現,因此,需要對Web頁面中的表單進行篩選,確定正確的查詢接口。Cope等[5]提取Web頁面中表單的特征,構建分類器對表單進行判斷,結果該方法的準確率和正確率只有87%和85%,還不能滿足實際的需要。但是,Cope等在構建分類器過程中,所使用的一些啟發式規則是可以借鑒的。本文在進行查詢接口篩選時,首先利用啟發式規則對表單進行靜態篩選(Static Filter);其次,對于靜態篩選后的表單,若仍然不能確定是否為查詢接口,則尋找表單所屬領域的關鍵詞進行填充并提交查詢,根據服務器返回至客戶端的結果進行判斷,稱之為動態篩選(Dynamic Filter)。
1.1 靜態篩選
通過對Web頁面中的查詢接口表單進行分析發現,這類表單一般不含有密碼框、文件上傳框、多行文本框等。故靜態篩選的目的是過濾包含上述表單域的表單元素。為了更好地描述靜態篩選的過程,可以將表單元素定義成為一個五元組:
Form={{C1, C2, C3…Cn}, A, N, M, U}
在上述元組中,{C1, C2, C3…Cn}表示表單元素所包含的表單域控件,A表示表單的Action屬性,即接收處理表單元素的URL,N表示表單元素的名稱,即name值,M表示表單提交的方法,即POST或GET,U表示表單元素所在的Web頁面的URL。假設集合T={Password, File, Textarea}表示由密碼框、文件上傳框以及多行文本框組成的集合,則在靜態篩選時,需要遵循以下的規則:
(1)若Ci∈T,1≤i≤n,則舍棄該Form表單;
(2)若A是屬于外站的URL,則舍棄該Form表單;
(3)若n=1,則舍棄該Form表單(該表單可能是搜索引擎);
1.2 動態篩選
對于靜態篩選仍然無法判斷的表單,需要通過“二次探測查詢”的方式,根據服務器的返回結果進行二次判斷。Bergholz等[7]構建了一種“正負”查詢策略,正查詢選取領域相關的關鍵詞進行提交,負查詢選取與領域無關的關鍵詞進行提交。他們認為,對于Deep Web查詢接口,所有負查詢返回的頁面的相似度一般不超過5%;絕大多數正查詢返回的頁面大小是負查詢的至少3倍以上,且最大差異子樹(Largest Difference Subtree, LDS)大于1 Kb。但是這種判斷方式需要進行2次查詢,系統的開銷比較大,而且一般只適用于全文查詢表單,對于多屬性查詢表單,顯得無能為力,因此具有一定的局限性。在本文中,通過建立領域模型,對查詢接口所屬領域進行分類,利用領域關鍵詞進行表單填寫,從而實現多屬性查詢表單的二次查詢且不需要進行“正負”2次查詢,節省了系統的開銷。
2 領域模型
2.1 領域模型的概念
2002年12月,伊利諾伊大學厄本那-香檳分校UIUC的研究人員利用谷歌搜索引擎和Web目錄服務人工收集了8個領域的441個Deep Web中的477個查詢結口,并對其進行統計分析,得出了2個查詢接口具有的非常重要的特征:①每個查詢接口所包含的屬性個數是有限的;②雖然同一個領域內查詢接口的數量非常多,但是表示查詢接口屬性的詞匯通過聚合以后,具有收斂性。基于這兩個重要的特征,可以建立一個模型,來表示某領域內所有查詢接口的屬性,即DM。對于DM的形式化定義,可采用一個包含15元組的樹形結構進行表示[8-9]。
定義:DM可以定義為DM=(V, v0, E, △, TP, TPL, N, NL, Lb, LbL, Val, ValL, tf, R, ≤),該15元組中,各個元素的含義如下:
V表示DM中所有節點的集合。v0表示DM的根節點,且v0∈V。E表示父節點和子節點所組成邊的集合。△表示DM中所使用的所有字符的集合。TP表示節點V到節點表單域類型集合的映射,節點表單域類型集合為{Text,RadioBox,CheckBox,Select},分別表示文本框、單選框、多選框以及下拉列表框。TPL表示節點V到節點表單域類型列表{TP*}的映射,返回節點V可能的所有表單域類型。N表示節點V到△的映射,返回節點V默認表單域名稱。NL表示節點V到表單域名稱列表{N*}的映射,返回節點V可能的表單域名稱。Lb表示節點V到△的映射,返回節點V的默認標簽。Lbl表示節點V到標簽列表{Lb*}的映射,返回節點V可能的標簽列表。Val表示節點V到△的映射,返回節點V的默認值。ValL表示節點V到默認值列表{Val*}的映射,返回節點V可能的默認值列表。tf表示節點V到N(自然數)的映射,返回節點V在所有接口中出現的次數。R表示節點V到集合{range,part,group,constraint}的映射,返回節點V與父親節點的關系,其中,range表示節點V的父節點是一個區間元素,且V是區間的一個成分;part表示節點V是父節點的組成部分;group表示節點V與其他兄弟節點表示同一語義;constraint表示節點V是對父節點的一種約束。≤表示DM中節點的順序,是一個二元關系,如(u, v)∈≤,表示節點u在節點v之前出現。
2.2 DM的構建
對于DM的構建,首先選取某領域的一個查詢接口作為初始的DM,然后通過不斷和該領域內其他查詢接口進行合并,以產生含有更多屬性信息的DM,周而復始地重復這個過程,最終形成穩定的DM。在此合并過程中,需遵循以下4條規則:
(1)添加(Add):若節點v與DM中的節點語義均不相同,則在DM中添加以節點v為根節點的子樹;
(2)更新(Update):若DM中有與節點v語義相同的節點u,則將節點v的TP、N、Lb、Val等更新到u節點的TPL、NL、LbL和ValL中;
(3)細化(Refine):若DM中有與節點v語義相近的節點u,并且節點v中包含了u中不含的屬性,則添加節點v作為u的子節點;
(4)泛化(Generalize):若DM中有若干個兄弟節點與節點v語義相近,且節點v是這些兄弟節點的泛化,則添加節點v作為第一個兄弟節點的父節點的子節點,同時將這些兄弟節點作為節點v的子節點。
按上述規則不斷進行查詢接口的合并,DM也隨之趨于穩定,當DM不再變化時,則停止構建。
2.3 查詢接口的分類和判斷
對于動態篩選中,需要進行二次查詢的表單,要根據上述建立的DM,對其進行分類和模式抽取,確定表單中屬性與DM中節點的對應關系,從而為表單中的屬性選取合適的候選值,進而提交查詢。其算法流程描述如下:
(1)對于待處理表單Form={{C1, C2, C3…Cn}, A, N, M, U},抽取{C1, C2, C3…Cn}的屬性詞;
(2)對屬性詞進行規范化處理,如去掉停用詞、詞干還原、非法字符過濾等;
(3)通過遍歷,查找DM中與屬性詞對應的節點,與之匹配的DM記為DMi,i∈(1, n);
(4)利用空間向量模型,計算Form表單與DMi的相似度,選擇相似度最大的作為Form表單的領域分類;
(5)根據分類結果,選擇關鍵詞進二次查詢,對于返回的結果頁面,若包含3個或以上鏈接,則認為是查詢接口。
3 信息抽取
通過查詢接口獲取的結果頁面中,往往包含與抽取主題無關的噪聲信息,例如廣告信息、導航信息、版本信息等。在進行信息抽取時,需要對噪聲信息進行過濾,避免產生主題漂移的現象。為了解決此問題,本文在網頁分塊的基礎之上,提出了一種網頁分塊重要度模型——BIM。
3.1 網頁分塊
網頁分塊是BIM的基礎,目前關于網頁分塊的算法有很多,例如文檔對象模型(Document Object Model, DOM)算法,該方法用DOM樹表示一個HTML網頁,能夠反映網頁的視覺和內在排版信息,但是需要利用瀏覽器才能顯性地表示出來,且同樣視覺效果的DOM樹可以有多種,不同的瀏覽器顯示的效果也不盡相同。基于視覺的頁面分塊(Vision-based Page Segmentation, VIPS)算法能夠顯性地表達HTML網頁的視覺信息和排版信息,從而使得這些信息的建模更加容易,在本文中,采用該算法對網頁進行分塊。
3.2 分塊重要度
分塊重要度是用一個離散值來表示分塊與抽取主題的相關程度,一般來說,一個網頁所呈現的所有內容,以抽取主題為參照,可以分為以下4個等級:
level-1:噪音信息,例如廣告信息、版權信息以及裝飾信息;
level-2:有用的信息,但是和主題不相關,例如導航信息、目錄信息等;
level-3:和主題相關的信息,但是不是最重要、最相關的,例如主題索引等;
level-4:與抽取主題完全匹配的信息,例如標題、主要內容等。
但是,上述的等級劃分,并不能代表所有人的觀點,為了使其更加客觀,我們選擇一定的樣本來進行用戶評價。
從新浪網(www.sina.com.cn)的3種類別中(新聞、財經、科技)下載600個網頁,每個類別各200,然后利用VIPS進行分塊,共得到4 823個分塊。選擇5名人員按照各自主題獨立地進行分塊重要等級劃分。
如表 1所示,有3/5人員(60%)可以將92.9%的分塊劃分成4個等級。當將level-2與level-3合并時,有3/5人員可以將99.5%的分塊劃分成3個等級。當將level-1、level-2和level-3合并時,有3/5人員可以將全部的分塊劃分成2個等級。

在表 2和表 3中,分別給出了3-levels和2-levels的評估結果,其目的是確定哪些等級最容易和最難區分。如表 2所示,當將level-1和level-2合并,4/5人劃分一致的分塊數為76.0%,5/5人劃分一致的分塊數為56.2%。當將level-2和level-3合并,3/5人劃分一致的分塊數為99.5%。這種情況說明,level-1與level-2之間難以區分,level-2與level-3之間也是如此。表 1與表 2進行比較,更進一步說明,區分level-2與level-3比區分level-1和level-2的難度要高。如表 3所示,將(1, 2, 3)合并,4/5人劃分一致的分塊數與5/5人劃分一致的分塊數最高,說明level-4最易區分。故上述分析可知,將分塊重要度等級劃分成為3個等級(將level2和level3合并),更具有客觀性,如表 4所示。



3.3 分塊重要度模型
BIM主要是根據分塊的特征(空間特征和內容特征),采用適當方法,獲取分塊的重要度,即BIM是從分塊特征到分塊重要度的一個映射:
<block features>->block importance
3.3.1 分塊特征
網頁設計師在設計網頁時,通常會將重要的信息放在頁面的中間,次要的信息,例如導航信息、版權信息放在頁面的邊緣位置,因此分塊的位置可以反映其重要性。除此之外,分塊的內容也在一定程度上反映其重要性,例如,分塊中包含圖片的數量、超鏈接文本的長度、<form>標簽的數量等。故在BIM中,分塊的空間特征和內容特征都將被考慮。
(1)空間特征:頁面經過VIPS分塊之后,可以用一個4元組來表示分塊的空間特征,即:
{BlockCenterX/PageWidth, BlockCenterY/PageHeight, BlockRectWith/PageWidth, BlockRectHeight/PageHeight }
BlockCenterX和BlockCenterY表示分塊中心坐標,BlockRectWith和BlockRectHeight表示分塊的寬度和高度,PageWidth和PageHeight表示頁面的寬度和高度。這種表示方法有一個缺點,當頁面的高度遠大于顯示器的高度時,第一屏顯示的重要分塊的空間特征并不能真實地反映其重要程度,因此,需要對上述4元組中的BlockRectHeight和進行修正:BlockRectHeight=BlockRectHeight/WindowHeight。當BlockCenterY<HeaderHeight時,BlockCenterY=BlockCenterY/(2*HeaderHeight)。當HeaderHeight<BlockCenterY<PageHeight-FooterHeight時,BlockCenterY=0.5。除此之外,BlockCenterY=0.5+(PageHeight-lockCenter) /(2*FooterHeight)。其中,HeaderHeight和FooterHeight是預定義的常量,表示網頁頭和尾的高度。
(2)內容特征:空間特征相似的2個分塊,其重要度也不一定是相似的,因此除了考慮空間特征,還需要納入內容特征。例如,同樣位于網頁中心的廣告分塊和正文分塊,廣告分塊可能僅僅包含一張圖片(<img>)。分塊的內容特征可以用9元組表示:
{ImgNum, ImgSize, LinkNum, LinkTextLength, InnerTextLength, InteractionNum, InteractionSize, FormNum, FormSize}
其中,ImgNum和ImgSize表示分塊中圖片的數量和大小。LinkNum和LinkTextLength表示分塊中鏈接的數量和錨文本的長度。InnerTextLengh表示分塊內文本的長度。InteractionNum和InteractionSize表示分塊中表單域控件的數量和大小,例如<input>、<select>等。FormNum和FormSize表示分塊中表單的個數和大小。
3.3.2 模型學習
該模型根據網頁分塊的內容特征和空間特征,通過一定的算法為其分配分塊重要度。分塊重要度的計算算法主要有2種:一種是基于規則的方法,但是這種方法在分塊特征很多時,無法準確地構造出規則函數;另外一種方法是采用機器學習的方法,該方法通過人工標注部分分塊,將其表示為(x,y)的形式,其中x表示分塊的特征,y表示分塊重要度,對于標注的數據進行訓練,形成訓練集合T。因此,模型學習的問題可以歸結為尋找函數f(x),使得$\sum\limits_{\left(x, y \right)\in T}{{{\left| f\left(x \right)-y \right|}^{2}}}$取得最小值的問題。對于這樣的分類問題,目前有非常多的學習方法,本文采用支持向量機(support vector machine, SVM)。
4 實驗結果
4.1 查詢接口判定實驗
為了驗證查詢接口判定效果,筆者從全國的二級甲等及以上醫院人工收集了120個用于門診查詢Deep Web查詢接口,同時,從Web上收集了60個非Deep Web查詢接口,主要包含一些注冊表單、搜索引擎、登錄表單等。對于評價指標,本文選取準確率和正確率,二者的計算方法如下所示:
陽性預測值=正確判斷為Deep Web查詢接口數目/(正確判斷的Deep Web查詢接口數目+錯誤判斷的Deep Web查詢接口數目)
正確率=(正確判斷為Deep Web查詢接口數目+正確判斷為非Deep Web查詢接口數目)/全部查詢接口數目
接口判斷的實驗結果如表 5所示:

本實驗中,將1例非Deep Web接口誤判為Deep Web接口,通過人工分析發現,該接口是包含2個表單域的站外搜索引擎,該搜索引擎所搜索的信息在本站顯示,但是超鏈接所指向的站點均為外網,所以該接口應該為非Deep Web查詢接口。本文的實驗結果與文獻[6]的判斷方法進行比較,在查詢接口判斷的正確率和準確率方面有了明顯提升,為醫院門診專家數據庫的構建奠定了基礎。
4.2 分塊重要度實驗
為了對BIM的分類效果進行驗證,選擇2 500個通過查詢接口返回的頁面作為測試數據,將其分成2組(一組作為訓練樣本,另外一組作為測試樣本),每組各1 250個頁面。訓練樣本經過VIPS分塊后,得到9 745個分塊,測試樣本經過VIPS分塊后,得到9 823個分塊。對于訓練樣本,進行人工標注并選擇RFB-SVM[10]作為學習算法進行樣本訓練,同時與Fu等[6]的XPath算法在相同的數據集上進行比較,采用準確率(P)、召回率(R)以及F1值作為評價指標,定義如下:
$ \begin{align} & P=\frac{x}{y} \\ & R=\frac{x}{z} \\ & F1=\frac{2PR}{P+R} \\ \end{align} $ |
其中,x表示正確確定的與抽取主題相關的分塊數,y表示正確確定的與抽取主題相關以及不相關的分塊數,z表示所有與主題相關的分塊數。P是評估獲取的分塊重要度成果中與主題相關分塊成果所占的比例;R是從關注領域中,召回目標類別的比例;而F1值則是綜合這二者指標的評估指標,用于綜合反映整體的指標,當F1較高時則說明實驗方法比較有效。實驗結果如表 6所示。

如表 3所示,當網頁數量比較多時,很難保證所有的網頁都具備相同的布局,同時也很難去構建規則函數。而本文所提出的BIM,根據頁面的內容特征和空間特征,采用機器學習的方法對頁面分塊的重要程度進行判斷,各項指標均優于XPath算法,具有一定的實用價值。
5 結束語
區域門診專家數據庫的建立,作為區域電子健康檔案共享平臺功能的補充,具有非常重要的意義。Deep Web信息抽取技術在該數據庫構建過程中,扮演了非常重要的角色。本文在已有方法的基礎之上,提出了新的思路和方法,且通過實驗證明了該方法的有效性和實用性。