張 真,李 寧,田英愛
(北京信息科技大學 a.網絡文化與數字傳播北京市重點實驗室; b.計算機學院,北京 100101)
流式文檔由若干基本單元構成,每個單元在文章中都具有不同的作用,如標題、摘要、表格等。文檔結構識別就是對每個單元對應的邏輯標簽進行識別,這是諸多應用的基礎。例如,排版格式優化任務以往需要人工處理,費時費力,如果計算機能夠判斷出每個單元的邏輯標簽,進而分析出文檔的邏輯結構,便可以自動地按照某種規則對其進行排版,保證文檔排版質量并大幅提高效率。此外,文檔結構識別對于一些自然語言處理應用,如文檔分類、結構化檢索、文檔理解等,也有重要的作用。
以往的文檔結構識別主要針對版式文檔領域,流式文檔結構識別的相關研究較少。現有的流式文檔結構識別主要應用規則化方法或機器學習方法,識別效果不夠理想。此外,由于所建立的規則或方法與文檔類型高度相關,一旦文檔類型改變,需要重新建立規則或識別模型,其泛化能力有限。針對上述問題,本文提出一種基于雙向長短期時間記憶(Long Short-Term Memory,LSTM)網絡的結構識別方法,通過提取內容、格式和語義特征,構建雙向LSTM神經網絡識別模型,提高識別結果的準確性。
目前,國內外已有很多針對固定版式文檔的版面分析方法[1],其目標是研究版面各區域與邏輯標簽之間的關系,其與流式文檔的結構識別有一定的聯系。文獻[2-4]從文檔中提取出格式與內容特征,形成文檔的特征表示。另有研究發現,在格式與內容特征之外,增加文本內容的語義特征也能改善文檔結構識別結果。例如,文獻[5]利用循環神經網絡學習文檔的排版格式、內容和語義特征,并用n-gram進行表示,文獻[6]使用word2vec模型學習文檔的語義特征,通過構建前饋神經網絡識別較短篇幅文檔的邏輯結構。在版面理解方面也已出現一些較成熟的產品,例如方正飛翔軟件[7]通過版式分析,將文檔表示成可擴展標記語言(XML)形式的流式文檔,進而得到與不同模板相對應的排版結果。然而,流式的XML文檔有可擴展、半結構化和自描述的特點[8],而版面分析主要解決規范出版物的版面區域標注問題,文檔的邏輯結構識別并非其主要目標,加之流式文檔的結構遠比版式文檔復雜,并且經常帶有排版錯誤,因此,版面分析方法不能直接應用于流式文檔的結構識別。
流式文檔的結構識別方法主要包括基于規則的方法和基于機器學習的方法。在基于規則的方法中,文獻[9-10]通過比較待測文檔和標準模板來識別文檔的邏輯標簽,文獻[11-13]利用文檔的排版格式與文字內容來匹配預先確定的規則,以判斷文檔結構。由于流式文檔的結構通常非常復雜,因此基于規則的方法需要構造大量的規則,并且對于排版不夠規范的文檔,其容錯能力較差。基于機器學習的方法應用學習模型構造邏輯標簽分類器,該方法不需要大量規則且容錯能力較強。例如,文獻[14]利用字體、字號等8項排版特征,通過支持向量機(Support Vector Machine,SVM)和隨機森林構造文檔結構識別模型,文獻[15]在格式特征的基礎上增加了內容特征,使用條件隨機場(Conditional Random Field,CRF)學習文檔特征,并構造識別模型。基于機器學習的方法較為靈活,其基礎是特征提取,而現有方法大多僅采用格式和內容特征,特征數量較少,因此識別準確率不高。
如果將流式文檔中的每個部分看作一個基本排版單元,將流式文檔的結構看作這些基本單元組成的一個序列,則文檔結構識別可看作一個序列標注的問題。然而,現有的機器學習方法很少考慮文檔單元之間的長距離依賴關系,對識別準確率造成影響。
本文采用能夠處理序列數據的循環神經網絡(Recurrent Neural Network,RNN)構建流式文檔結構的識別模型。由于RNN是一個隨序列而運作的神經網絡,因此其能夠很好地處理序列數據,并從中學習有效特征。LSTM作為RNN的一個變種,有效解決了序列之間的長期依賴問題。近年來,LSTM得到廣泛應用,例如,文獻[16]針對英文標注任務,利用LSTM將文本序列元素與模型輸入相對應,并通過隱藏層的記憶模塊學習上下文信息,取得了較好的結果,文獻[17-18]應用雙向LSTM網絡結構,從正向和逆向分別學習特征,文獻[19]將機器翻譯看作序列標注任務,使用LSTM解碼目標語句。本文基于內容、格式和語義特征構建文檔結構特征,使用雙向LSTM學習文檔單元的上下文關系,以提高對文檔的結構識別能力。
文檔結構識別的主要目標是尋找各個單元與文檔邏輯標簽之間的對應關系。本文定義邏輯標簽集合S={論文名稱,作者姓名,作者單位,中文摘要,中文關鍵詞,英文摘要,英文關鍵詞,一級標題,二級標題,三級標題,四級標題,文本段,圖,圖題,表題,表,公式,程序代碼}。
文檔結構識別框架包括文檔特征提取和模型構造2個部分,其關鍵在于,提取的特征能夠反映不同類型文檔單元之間的差異,同時,需要利用文檔單元之間的上下文關系構建文檔結構識別模型,總體框架如圖1所示。可以看出,在特征表示方面,本文將排版格式、文檔內容和文本語義特征相結合作為文檔單元的特征,在識別模型構建方面,本文基于LSTM并充分利用各文檔單元之間的上下文關系進行文檔結構識別。

圖1 文檔結構識別模型總體框架
Fig.1 General framework of the document structure recognition model
文檔單元特征選取是識別文檔單元邏輯標簽的關鍵。為了提高機器學習的效率,本文沒有將排版后的文檔圖像傳輸給模型學習,而是通過人工選取相關特征,再利用標注后的學習樣本訓練模型。在選取特征時,本文從不同類型文檔單元間的差異性出發,選取區分度最高的特征,主要包括格式特征、內容特征和語義特征,具體說明如下:
1)格式特征
格式特征體現文檔單元在排版格式上的差異,主要包括:
(1)字號:當前單元的字體大小。
(2)標點:當前單元是否含有標點符號。
(3)句數:當前單元是否為單句。
(4)字形:當前單元是否加粗。
(5)大綱級別:當前單元的大綱級別。
(6)對齊方式:當前單元的對齊方式。
(7)Word對象:當前單元是否為“圖”“表”“公式”。
在以往研究中,一般會用到字號、標點、句數、字形和大綱級別等格式特征,而對齊方式與Word對象為本文新引入的特征。由于圖題、表題等文檔單元有特定的居中、左對齊、兩端對齊的規律,而正常排版的圖片、公式以及表格對象等在Word中有明確的對象類型,因此引入這些特征能夠提高相關文檔單元的識別能力。
此外,本文在對一些特征進行編碼時,使用了更有效的相對特征。例如,以往研究在表示字號時一般直接將其映射到[0,1]區間,而本文采用相對字體大小的概念,即以出現頻率最高的字號為基礎,用字號的差值表示各文檔單元的字體大小,從而有效地確定標題級別。
2)內容特征
內容特征體現當前單元在文本上的差異,主要包括:
(1)編號:文檔單元首部或者尾部的編號值。
(2)關鍵詞:是否含有“摘要”“圖”“表”等關鍵詞。
(3)編號位置:編號在尾部還是首部。
(4)特殊符號:是否含有“@”等特殊符號。
以往研究關注較多的是編號和關鍵詞特征,然而,文檔單元的編號位置和特殊符號也有重要的作用,例如公式的編號位置一般居于段尾,郵件地址中通常含有“@”符號。
3)語義特征
文本是構成文檔的基本內容,文本的語義對于文檔的邏輯結構判斷能起到輔助作用。通過文本的語義特征不僅可以判斷標題和正文之間的關聯關系,還可以判斷文檔的修辭結構。在面向文檔結構識別的神經網絡中,通常采用詞袋模型將文本內容直接輸入到網絡中進行學習,由于文本內容的數據量龐大,學習文本的規律性存在一定的困難,并且機器學習的負擔較重。文獻[20]提出一種doc2vec方法,將可變長度的段落文本表示為固定長度的特征向量,從而有效降低特征維度。該方法在訓練過程中,隨機采樣段落中的上下文詞匯,采用無監督算法學習可變長度的段落文本,將長文本壓縮為固定長度的向量,并通過上下文關系捕獲段落的語義信息。本文在文獻[20]的基礎上,用doc2vec對段落文本進行編碼并將其表示為一個向量,從而對文檔中的長文本進行概括,并保留其語義信息。
流式文檔本質上是可編輯的XML,Word對象模型為開發人員提供了豐富的軟件開發工具包,非常簡單易用。本文基于Word對象模型提取文檔特征,由于流式文檔的格式內容并非規范化的,因此在提取文檔特征時可能出現以下2種錯誤:
1)文檔單元內部的格式不一致,例如,某個單元中同時含有8號字和16號字,Word對象模型無法確定字號特征。針對該問題,本文選擇文檔單元中占比最大的字號作為最終特征。
2)提取的內容特征并非當前文檔單元實際所需要的特征。例如,某文檔單元的邏輯標簽為正文,但是含有“表”關鍵詞,會對文檔單元識別結果產生影響。因此,本文結合關鍵詞一般只出現在段首的特點,在提取特征的過程中,只在段首位置提取關鍵詞,盡量減少上述情況的出現。
圖2以本文輸入特征為例,給出字號、標點、句數、字形、關鍵詞、對齊方式6項特征。其中,字號特征經過標準化處理,圖片沒有字號因此標記為0。標點、句數、字形特征為bool值,例如,標簽為“論文名稱”的段落無標點,句數為單句,字形加粗,則其標點、句數、字形特征分別為False、False、True,最終將False值設置為0,True值設置為1。關鍵詞與對齊方式特征屬于離散特征,因此,需對其進行one-hot離散化處理。

圖2 流式文檔特征提取示例
流式文檔結構識別可以看作是文檔單元上的序列標注問題,由此,本文基于LSTM網絡構建結構識別模型,如圖3所示。在圖3中,網絡的第1層對高維的輸入向量進行降維,第2層為循環層,從正向和逆向學習文檔中每一段的狀態向量,最后通過狀態向量預測該段的邏輯標簽。

圖3 基于雙向LSTM神經網絡的文檔結構識別模型
Fig.3 Document structure recognition model based on bidirectional LSTM neural network
LSTM在傳統的RNN模型的基礎上重新設計了隱藏層節點的記憶模塊,引了輸入門it和輸出門ot用于調節輸入數據的信息和記憶單元的狀態信息,利用遺忘門ft清理學習過程中的無用信息,從而有效利用長距離的序列信息。此外,通過LSTM的隱藏節點來發現各個段落局部之間的相互關系。

(1)

ft=σ(wf[xt,ht-1])+bf
(2)
it=σ(wi[xt,ht-1])+bi
(3)
(4)

(5)
計算輸出門的值ot,并根據ot與ct得到LSTM的輸出及隱藏狀態ht,具體公式如下:
ot=σ(wo[xt,ht-1])+bo
(6)
ht=ot×tanh(ct)
(7)


Pt=Softmax(Wp·ht+bp)
(8)

針對文檔結構識別,目前還沒有公開的流式文檔語料庫,因此,本文構建了一個由1 365篇學術論文、82 763個文檔段落組成的語料庫。這些文檔來源于學位論文和多個學報,如食品科學技術學報、北京信息科技大學學報、北京郵電大學學報等,鑒于文檔的保密要求,本文在github上公布了其中68篇數據(具體網址為https://github.com/COSLab)。將這些文檔按照4∶1的比例隨機劃分為訓練集和測試集,由于存在邏輯標簽數量分布不平衡的問題,簡單采用精準率P、召回率R和F值作為評價指標是不夠的,因此需要同時采用宏平均和微平均來衡量文檔結構識別方法的性能。
將文獻[14-15]方法與本文方法進行對比。文獻[14]從流式文檔中提取格式特征,在此基礎上搭建Random Forest、SVM、KNN和NB 4種不同的機器學習模型進行文檔結構識別,本文選擇其中表現最好的Random Forest進行對比實驗,在重現其方法時選擇原文中的特征處理方式,參數tree的值設置為其論文中表現最優的100。文獻[15]在提取格式特征與內容特征的基礎上,使用CRF、MEMM、HMM對文檔段落進行分類,本文同樣選擇其表現最好的CRF進行對比。3種方法的識別結果對比如表1所示,其中F值的最優值加粗表示。

表1 3種方法的識別效果對比
由表1可以得出以下結論:
1)本文方法總體上優于其他2種方法,在18類邏輯標簽識別的F值中,本文方法對其中14個標簽取得了最優值,F值的宏平均和微平均也優于其他2種方法,說明本文方法所提取的特征集合和構建的雙向LSTM模型能更好地完成文檔結構識別任務。
2)在程序代碼識別方面,文獻[14]使用的Random Forest識別效果較好,比本文方法高0.06。在中文摘要、中文關鍵詞、公式的識別方面,文獻[15]的識別效果最好,其中,中文摘要和中文關鍵詞識別的F值比本文方法高0.01,公式識別的F值比本文方法高0.05。
3)程序代碼識別是一個難點,其F值最高僅為0.50,同時,三級標題和公式這2類邏輯標簽的識別性能較差。圖4給出了識別錯誤的樣例,可以看出,96%的公式被誤識別為圖片和正文,其原因是用戶在編輯流式文檔時,公式常使用圖片形式呈現,并且公式可能和正文處在同一段落,難以進行區分。對于三級標題的錯誤識別,其中70%被誤識別為二級標題,這是因為二級標題與三級標題的差異較小,此外,83%的程序代碼被誤識別為正文與公式,其原因在于程序代碼的數量較少,而正文的數量較多,造成數據不平衡,并且程序代碼作為單行出現時與公式較為相似。

圖4 文檔結構分類錯誤情況
4)相比于不考慮上下文信息的Random Forest,本文方法的識別準確率提升較為明顯,在姓名、單位、一級標題、文本段、圖片和表題的識別任務上,本文方法的F值都高出0.10以上,對于一級標題的識別,本文方法的F值比文獻[14]的Random Forest高出0.22。
將本文方法與方正飛翔軟件進行對比,隨機選出15篇論文進行識別,結果如表2所示。可以看出,在18類邏輯標簽中,本文方法對其中15類的識別效果優于方正飛翔,其F值的宏平均與微平均比方正飛翔高0.08。此外,方正飛翔軟件在“圖”“圖題”“表”上的識別效果較好,但是本文方法在這3類標簽類別的識別結果上僅比方正飛翔的F值低0.02。

表2 本文方法與方正飛翔軟件的識別效果對比
表3給出不同輸入特征對文檔結構識別效果的影響。可以看到,在文檔結構識別中,格式和內容特征起到主要作用,語義特征起到輔助作用,將三者結合可以達到最好的識別效果。

表3 不同特征對識別結果的影響
本文針對流式文檔結構識別的目標,結合流式文檔的特點,提出一種基于雙向LSTM網絡的文檔結構識別方法。從文檔單元的格式、內容與語義方面提取關鍵特征,將文檔結構識別看作序列標注問題,并使用雙向LSTM網絡構建識別模型,以充分利用神經網絡的泛化學習能力和文檔單元之間的相互關聯。實驗結果表明,該方法能夠有效區分不同文檔單元的類型,其文檔結構識別能力優于文獻[14-15]的方法,也優于方正飛翔軟件。然而,本文方法與文檔排版格式優化和文檔理解等的應用需求還有一定的差距,下一步考慮對模型的容錯識別能力進行改善,同時在目前識別的18類邏輯標簽的基礎上,增加頁眉、頁腳、引用、公式符號和表格單元等標簽,以提高文檔結構識別的準確性。