劉 倩,李 寧,田英愛
(北京信息科技大學 計算機學院,北京 100101)
隨著電子文檔數量日益增加以及傳播日益廣泛,人們希望計算機能夠自動理解文檔。計算機對文檔的理解包括對文本內容的理解和對文檔邏輯結構的理解,兩者相輔相成,前者可用于信息抽取,后者可用于數字出版、結構化檢索等研究。目前對文本內容的研究較多,對文檔結構的研究則多面向版式文檔。流式文檔的結構理解與版式文檔結構理解的目的不同。前者由于其自身可編輯的特點,結構理解的結果可用于文檔檢查優化、自動排版等目的。后者主要分析正規出版物版面區塊的性質和關聯順序,用于版面重組和閱讀。由于流式文檔格式的復雜性、排版風格的差異性等因素導致計算機自動理解其結構較為困難。
目前基于流式文檔排版樣式的結構理解成果較少。流式文檔中除文本之外,還包含豐富的排版樣式(例如,字體、字號、對齊方式等)以及編輯語義(例如編號、大綱級別、段落、題注等),如果能夠充分利用這些信息,文檔結構的識別結果會更加準確[1]。這種方法在文本內容特征之上增加了流式文檔中特有的編輯對象特征和樣式特征等,以輔助判斷文檔結構,近年取得了較好的效果[2-6]。
文檔邏輯結構識別中用得最多的是基于規則的方法,它根據特定類型文檔來制定匹配規則,適用范圍較為有限[5-7]。此外是基于機器學習的方法,以往主要應用于版式文檔結構理解[8-9],近年來機器學習方法也逐漸應用于流式文檔的邏輯結構識別。然而由于流式文檔格式復雜、標注困難,過去積累的成果較少,機器學習方法用于流式文檔結構理解面臨語料標注成本過高,語料庫稀缺的問題。本文以面向機器學習的流式文檔邏輯結構識別為目標,嘗試使用半自動化方法提高語料標注效率,為篇章結構分析、信息抽取、信息檢索以及文檔檢查優化等應用打下基礎。
目前尚未見到針對文檔邏輯結構的語料標注研究,常見的語料標注技術主要針對自然語言處理,對文本信息所表達的語義、命名實體、事件信息等進行標注[10-12]。而文檔邏輯結構標注需要以整篇文檔為標注對象,明確文檔中各部分內容之間的邏輯關系。文檔語料庫的構建,涉及文檔邏輯結構描述、文檔編輯語義特征提取、語料標注方法等關鍵技術。
在文檔邏輯結構描述方面,需要參考相關的元數據標準。JATS[13]是一種基于XML的期刊論文數據存儲和交換元數據規范,對其他類型的文檔描述能力不強。DocBook[14]則是一種關于書籍的元數據結構規范,其元素顆粒度較細,不宜直接用于文檔邏輯結構標注。其他的元數據規范多少都存在類似的問題。在實際中需要根據應用需求選取合適的顆粒度,并對其進行裁剪和擴展。
在特征提取方面,以往研究最多的是文本內容特征,例如,文獻[15]分析了學術報告的標題內容寫作規律,采用決策樹識別文檔邏輯結構。近幾年一些研究結合排版樣式來識別文檔的邏輯結構,例如,文獻[5]將文檔樣式特征納入特征向量,使用VSM模型來識別文檔邏輯結構。文獻[2]使用OCR技術從PDF文檔中分析出文字的字號、對齊方式等樣式信息,將其與純文本特征相結合來識別學術論文的邏輯結構,然而從版式文檔中抽取特征的過程比較復雜,特征值較流式文檔也有一定誤差。
在語料標注方法方面,由于流式文檔格式復雜,無法使用文本形式的標注方法,大多數自然語言研究中的標注方法不適于此。文獻[16]結合文檔內容與結構信息,從帶有結構信息標注的學術期刊語料庫中提取文章關鍵詞,但沒有說明語料標注方法。文獻[17]提出了一種Word文檔XML結構化標記方法,以自定義樣式的形式標注文檔邏輯結構,但該方法的標注結果難以實現機器讀取,也破壞了原始文檔的排版樣式。文獻[18]提出了一種兩段式的HTML文檔語義標注框架: 第一階段解析HTML文檔,自動抽取結構化信息;第二階段指定實例與詞匯間的映射關系,并生成標注,降低了人工標注的工作量,但是HTML格式過于簡單,該方法難以用于辦公軟件生成的復雜流式文檔。
綜上,現有研究不能滿足基于機器學習方法的流式文檔邏輯結構識別對標注語料數據的需求。針對該問題,本文首先構建描述流式文檔邏輯結構的元數據標注體系,提取文檔編輯語義特征,構造結構標注樹模型;其次設計一種三段式的半自動化標注方法;最后通過實驗證明本文方法在提高標注效率與標注準確率方面的成效。
流式文檔格式包括DOC、DOCX/OOXML、ODF、HTML等。本文選取目前使用最廣泛的DOCX/OOXML格式文檔為研究對象。對于其他格式的流式文檔,本文的理論方法也同樣適用。
流式文檔是使用流式布局對文檔內容進行灌排的一種文檔存儲格式,微軟的DOCX/OOXML格式即典型代表。流式文檔可看作是有限的段落序列,不同段落在整篇文檔中表達著不同的文檔語義。本文將描述文檔語義的數據抽象為文檔元數據,如文章題目、摘要、作者、各級標題和正文段落等。文檔邏輯結構描述文檔元數據之間的層次關系。在一篇經過排版的流式文檔中,可以結合文檔內容與排版樣式等特征來理解文檔邏輯結構。因此流式文檔邏輯結構標注就是明確文檔邏輯結構并將之與文檔特征相關聯,最終生成標注語料的過程。
標注體系的建立是語料標注前的必備工作。首先要確定顆粒度適合的文檔元數據,并構造較為通用的文檔邏輯結構描述模式(schema);其次要深入分析流式文檔排版規律,歸納出可用于文檔邏輯結構識別的文檔編輯語義特征;最后設計文檔邏輯結構標注模型,并確定語料編碼方式。
流式文檔類型多樣,根據應用領域可分為學術論文、學位論文、專利、標準、著作、法律條文、新聞、雜志和一般文件等。為不同類型文檔分別確立文檔邏輯結構將帶來大量的重復工作,同時還導致標注語料泛化程度過低。標注體系的確立與語料加工是語料庫建設中的重點,也較為耗時。本文采用“積木法”[19]研究文檔邏輯結構標注體系,按照文檔類型劃分語料數據,首先研究學術論文類文檔邏輯結構,未來再將其擴展至其他文檔類型,這樣能快速滿足最重要的應用需求。因此,在確定學術論文邏輯結構時,應使其盡可能通用且易于擴展。另外,對文檔邏輯結構的描述要選取適合的顆粒度,若顆粒度過細,會導致邏輯結構過于復雜,給標注帶來困難;若顆粒度過粗,會導致特征難以提取,或標注結果無法使用。
DocBook體系龐大,擁有超過 400 個元素,能對書籍或類似書籍的文檔結構進行細粒度的規范化描述,其結構適用于大多數類型的文檔。基于DocBook健壯的體系結構,若未來延伸文檔語料庫應用領域,或進行更深入細致研究時,無論在文檔類型還是元數據顆粒度方面都能進行擴展。
綜上所述,本文選取DocBook架構作為文檔邏輯結構標注體系的理論基礎,結合文檔邏輯結構識別的應用需求對其進行剪裁,并選取合適的元數據顆粒度,確定了期刊論文的邏輯結構,如圖1所示(省略了底層細節)。一篇期刊論文首先包括論文題目、作者信息、摘要等篇頭信息;其次是章節、子章節、正文、公式、圖表等文檔主體內容;最后是篇尾的致謝、參考文獻等信息。標注語料應符合XML Schema表示的文檔邏輯結構規范。
雖然不同類別文檔的邏輯結構不同,但其結構多有交叉與重疊,如文檔題目、作者、主體章節等。若要應用至其他文檔類型,只需從DocBook中剪裁或自定義合適的元素與結構,對此進行修改與擴展即可。這樣不僅能夠減少工作量,而且能夠減少由于不同文檔類型之間差異性而在標注方法設計與語料加工時帶來的復雜性。

圖1 期刊論文類型的文檔邏輯結構描述
相對于純文本與版式文檔,流式文檔中不僅記錄了文本、圖表等內容,還包含很多與文檔內容相關的排版樣式信息與編輯對象信息,這些統稱為文檔編輯語義特征, 結合這些特征可以更準確地理解文檔邏輯結構。本節深入分析了文檔排版規則與寫作習慣,挖掘出可用于文檔邏輯結構識別的編輯語義特征,將其表示為機器可讀的特征向量。下面將從內容特征、樣式特征與編輯對象特征三個方面進行詳細討論。
2.2.1 內容特征
文檔中的文本信息是用來識別文檔邏輯結構最直接有效的特征。比如通過標題中關鍵的文字內容來辨別出摘要、引言等元數據;又如通過標注單元是否以標點符號結束來區分標題與正文。本文選取6種內容特征,對其進行了詳細描述,如表1所示。

表1 內容特征
2.2.2 樣式特征
流式文檔中有豐富的排版樣式,人們在日常寫作中也常用不同的排版樣式來區別不同的文檔元數據。例如,不同章節的標題一般設置為不同的字號、段首縮進等;又如圖題對齊方式常為居中對齊。將內容特征與樣式特征有效地結合,能夠更準確地識別出各段落所屬的邏輯角色。本文選取了7 種樣式特征: 相對字號、粗體、對齊方式、大綱級別、首行縮進、段前間距以及段后間距。舉例來說,相對字號RFS的計算如式(1)所示。
其中,FS為實際字號, MAX_FSd與MIN_FSd分別是文檔d中的最大字號與最小字號,FSmost是文檔d中占比最大的字號。
2.2.3 編輯對象特征
流式文檔中包含有大量的文本、圖像、表格和公式等數據,這些數據在流式文檔中分別存儲為不同的編輯對象,可通過Word對象模型來自動讀取文檔編輯對象特征,快速判斷段落邏輯角色,在此基礎上也可通過上下文關系進一步分析其他段落的邏輯角色。另外,根據圖片對象的顯示特征可將正常圖片和以圖片表示的公式加以區分。因此本文將對象特征類別、對象長度、對象高度納入特征向量。
流式文檔邏輯結構標注的實質是建立文檔邏輯結構樹并將其節點與文檔編輯語義特征相關聯,最后生成XML形式的標注結果。然而流式文檔格式底層以序列形式存儲文檔內容,如何將其轉化為樹形的文檔邏輯結構呢?本文提出了一種文檔邏輯結構標注模型,在該模型中,通過標注文檔元數據建立文檔編輯語義特征和文檔邏輯結構樹的映射關系,如圖2所示。相關概念表述如下。

圖2 文檔邏輯結構標注模型
定義1文檔邏輯結構樹(Document Structure Tree, DST),用于描述文檔元數據之間的層次關系。DST可表示為三元組:
定義2文檔語義單元,是流式文檔中一段連續的內容區域,表示了獨立的文檔語義,文檔語義單元集合記為U,其顆粒度與文檔邏輯結構樹的葉節點相符。
定義3標注元數據,用于描述文檔結構語義的數據,與DST中一條從根節點到葉節點的路徑相對應,標注元數據集合記為TM。本文定義的標注元數據與路徑對應關系如表2所述,其中路徑信息用XPath描述。

表2 文檔邏輯結構標注元數據
定義4標注單元,是使用標注元數據tagi(tagi∈TM)對文檔語義單元ui(ui∈U)進行標注操作mark(ui, tag)而形成的一條標注結果,記為mi:
標注一篇文檔,可得到文檔標注單元的偏序集合M:{mn,n=1,2,…,N}。如果原始文檔結構正確并且標注合理,那么文檔元數據標注結果中就含有了文檔全部的語義角色,以及元數據間的層次關系,由此我們可以自動重建文檔邏輯結構樹。
在流式文檔中標注邏輯結構有一定難度。一方面,元數據標簽繁多,而且直接在文檔內容中插入標簽會破壞原始文檔狀態;另一方面,文檔編輯語義特征復雜多樣,直接以人工方式在文檔中標注是不現實的,而且不能保證標注結果的正確性。本文提出了一種三段式的文檔邏輯結構半自動標注方法,將人工標注與自動化技術相結合,降低人工標注難度并提高標注效率。如圖3所示,第一階段在流式文檔中以機助人工方式添加分離式的文檔元數據標簽;第二階段自動重建文檔邏輯結構,用XML文檔記錄;第三階段自動提取并填充文檔編輯語義特征,最終形成結構化的XML標注文檔。
語料標注一般有兩種形式,一是嵌入式標注,直接在文本中插入標簽,其原理簡單,易于實現,但會破壞原始語料信息;二是分離式標注,標簽不插入到原始語料中,而是以一定方式與原始語料相關聯,這種方式不僅能夠保留原始語料的狀態,而且也會使得后續的修改更加容易,便于與其他標注合并[20]。在流式文檔中易于使用的分離式標注手段并不多,本文選擇利用文檔批注機制來做標注。流式文檔編輯器中的批注是綁定在連續文檔內容范圍上的附加標簽,并對應地顯示于文檔視圖界面的右側。其特點是與流式文檔中原始的文本、圖片、表格等內容獨立顯示又相互關聯,不破壞原始文檔排版樣式又便于人的觀察和操作。因此本文基于文檔批注,開發了標注插件,以機助人工的方式標注文檔元數據。

圖3 三段式的文檔邏輯結構半自動化標注方法
文檔元數據標注結果中明確了被標注內容的語義,而XML Schema表示的文檔邏輯結構中定義了元數據之間的層次關系,可以借此自動重建文檔邏輯結構樹。為方便描述這一過程,先引入章節子樹的概念。
定義5章節子樹(Section Tree, ST)是DST
① 章節子樹的根節點在DST中的深度反映了章節子樹的級別,其前序遍歷結果記錄了原始文檔內容順序;
② 對于一棵章節子樹,其最左孩子節點一定對應此章節標題,而其余節點對應此章節的內容;
③ 任意兩個章節子樹互不相交:V1∩V2=?,C1∩C2=?。
按照文檔邏輯結構標注模型對文檔元數據標注,可得到文檔標注單元的偏序集合M={mn,n=1,2,…,N},其中mi=
章節標題是確定文檔邏輯結構的標志性信息,根據標題類標注單元出現的位置可以將標注結果分解為若干部分。假設標題類標注單元集合T={mi,i=r,s, …,t},T?M, 可以將標注結果M分解為若干子集:M0={m0, …,mr-1},Mr={mr, …,ms-1}, …,Mt={mt, …,mn}。文檔邏輯結構樹DST
① 第一個子集M0與文檔首部對應,可按序地為每個標注單元內容在文檔邏輯結構樹中創建一條唯一路徑;
② 子集Mi(i=r,s, …,t)對應文檔主體內容,并且每個子集Mi={m1, …,mk}對應了一棵章節子樹STi
a)m1為標題類標注單元,可確定章節子樹的根節點ri與級別lvi;
b) 為每個標注單元m(m∈Mi)創建一個節點v,并建立連接c=
③ 確定章節之間的嵌套關系: 若lvi=1,則建立連接c=
獲得文檔邏輯結構樹后,需要根據文檔元數據的XML Schema描述,進一步生成符合其定義的XML形式的文檔邏輯結構標注文檔。
流式文檔需要抽取的編輯語義特征多樣復雜,這些特征靠人工抽取是不現實的,一方面工作量巨大;另一方面難以準確(例如,字數、關鍵字等)。此外,部分特征難以通過人工方式獲得,比如編輯對象特征需要從文檔底層中提取。因此實現特征向量的自動化提取是非常有必要的。在標注的第一階段,在文檔中添加標注元數據標簽,不僅確定了整篇文檔的邏輯結構,同時也在文檔底層將標注單元特征與標注標簽以批注的方式相綁定。正因如此,可通過流式文檔提供的編程接口自動抽取文檔編輯語義特征,并填充至XML形式的標注文檔中。至此,流式文檔邏輯結構標注語料生成完成。
文檔邏輯結構標注模型較為復雜,為方便標注人員按照本文提出的三段式的半自動化標注方法來標注文檔,我們開發了相應標注插件,插件截圖如圖4所示。
我們隨機選取30篇文檔,將其分為6組,分別使用標注工具與純手工的標注方法對每組數據進行標注,兩種標注方法的效率與正確率對比情況如表3所示。采取純手工方法標注文檔邏輯結構樹并在文檔中提取編輯特征的過程十分煩瑣,導致標注效率過低。本文將三段式的標注方法融入半自動化標注插件,使得在邏輯結構重構與文檔特征抽取階段不需要人工干預,大大提高了文檔語料的標注效率與正確率。

圖4 標注插件截圖

表3 標注方法對比實驗結果
基于機器學習的文檔結構理解需要大量的訓練數據,我們廣泛采集了多種學術期刊或會議的共計1 734篇學術論文,如表4所示。并按照前文提出的標注方法對其標注,構建了流式文檔結構標注語料庫(Document Structure Tagging Corpus,DSTC)。
為了驗證本文確立的文檔邏輯結構標注體系的合理性與DSTC語料庫構建的有效性,基于DSTC語料庫訓練文檔邏輯結構識別模型,分別在語料的編輯特征提取與邏輯結構兩方面進行了對比實驗。

表4 DSTC語料分布情況
在流式文檔邏輯結構識別的研究中,文獻[1]對比了SVM、KNN、樸素貝葉斯與隨機森林分類器,其中隨機森林分類器的識別準確率與召回率最高。隨機森林是一個由一組決策樹分類器組成的集成分類器,每個決策樹分類器通過投票來決定最優的分類結果。隨機森林算法一般構造過程如下。
步驟1對于給定訓練樣本,隨機可重復取樣,形成新的子樣本數據;
步驟2對新的子樣本數據中M個特征變量隨機抽取m(m 步驟3重復步驟1、2,得到K個決策樹,形成隨機森林; 步驟4每個決策樹投票,選出最優的分類。 本文實驗中隨機森林算法參數為:M=16,K=100,m=elog2Mu。 文獻[1]對文檔章節結構進行了識別,其數據集中標注了章節、子章節與正文,并提取8種編輯特征組成特征向量。為與文獻[1]進行對比,隨機選取169篇文檔語料,首先按照文獻[1]的方法構造數據集1;其次按照本文提出的方法標注相應標簽并自動提取16種編輯特征,從中計算并選取信息增益[21]最大的8種特征組成特征向量,構造數據集2。兩種數據集的特征向量對比如表5所示。基于上述兩種數據集,構建隨機森林分類模型,十倍交叉驗證的實驗結果見表6。實驗結果表明,由于本文標注體系中對文檔編輯特征提取得較為全面,能夠更好地反映不同類別間的差異,從而提升了隨機森林分類模型的準確率與召回率。 表5 特征向量對比 表6 實驗結果對比 上述實驗對文檔邏輯結構識別存在一些不足。一方面,文檔元數據的分類維度較低,較難滿足其他高層次研究的需求;另一方面,隨機森林算法將各個分類標簽看作相互獨立的,然而文檔各段落之間的先后順序關系也是需要機器學習與識別的重要內容,本文嘗試將文檔邏輯結構識別問題視為序列標注問題解決。 在流式文檔邏輯結構標注體系中,標注了18類文檔元數據,能夠實現較細粒度的文檔邏輯結構識別。同時,DSTC語料庫基于本文的文檔邏輯結構標注模型記錄了文檔元數據間的順序與層次關系,并符合XML Schema的約束,能夠為序列標注模型提供可靠的訓練數據。 長短期記憶網絡模型(Long Short-Term Memory, LSTM)[22]在傳統的循環神經網絡模型(Recurrent Neural Network, RNN)基礎上重新設計了隱藏層節點的記憶模塊,能夠清理學習過程中的無用信息,并有效地利用長距離的序列信息,通過隱藏節點來發現各個文檔段落局部之間的相互關系。本實驗基于雙向 LSTM 網絡模型學習文檔的特征信息,分別從正向和逆向兩個方向處理文檔邏輯結構序列,模型結構于原理于文獻[23]中有詳細論述,本文對此不再重復說明。 本文實驗中對特征向量采用dropout正則化操作,dropout設置為0.2;雙向LSTM模型中的正向和反向隱藏層的節點數均設置為64個,神經網絡層數為兩層,學習率設置為0.1;對于誤差的更新,則采用批處理的形式,每次由50個樣本一起更新,即batch設置為50個,輪回次數設置為50。 在DSTC語料庫中隨機選取1 388篇文檔作為訓練數據,其余346篇文檔作為測試數據,分別使用隨機森林與LSTM模型進行實驗,實驗結果如表7所示。從分析實驗結果可知,由于LSTM模型考慮了流式文檔邏輯結構的上下文信息,提升了隨機森林算法對文檔邏輯結構識別的準確率與召回率,但LSTM模型付出更大的時間代價。 綜上所述,本文確立的標注體系與DSTC語料庫,不僅能夠為基于機器學習的分類模型提供訓練數據,更重要的是可將文檔上下文信息融入文檔邏輯結構識別模型中,從而提高基于機器學習的文檔邏輯結構識別準確率與召回率。 表7 隨機森林與LSTM的實驗結果對比 本文以DocBook為基礎,定義了文檔邏輯結構描述方法,調研了大量電子文檔內容與樣式上的書寫特征,總結出用于文檔邏輯結構識別的內容特征、樣式特征與編輯對象特征,建立了結構化的文檔邏輯結構標注模型。在此基礎上提出半自動文檔邏輯結構標注方法,在該方法中,實現了文檔元數據的分離式標注,批注形式的標注保護了原始文檔內容且便于操作;自動重建邏輯結構并自動填充特征向量,節省了大量的人工標注工作量;最后將標注結果記錄在結構化的XML文檔中,通過Schema驗證,保證了文檔邏輯結構的正確性。實驗證明,使用本文方法構建的文檔邏輯結構標注語料庫,能夠提高機器學習方法識別文檔邏輯結構的粒度與準確率。本文的研究成果可用于其他類型與其他格式的流式文檔標注,為各類文檔的排版檢查、自動排版、信息抽取與結構化檢索等高層次應用打下基礎。 下一步的工作將考慮利用基于機器學習的文檔邏輯結構識別模型自動化地對語料進行初始標注,以實現計算機自動標注、人工輔助校正的最終目的。另外,本文提出的文檔邏輯結構標注方法沒有考慮容錯問題,如何為不規范的文檔自動標注邏輯結構是未來面臨的另一項挑戰。目前學術論文、畢業論文、著作、標準和專利等文檔類型的標注工作還在不斷進行中,數據集將面向社會開放,供廣大同行研究使用,共同推進文檔信息處理技術的發展。

4.2 基于雙向LSTM的文檔邏輯結構識別

5 結束語