馬雯琦, 何 躍
1(中國科學技術大學 管理學院, 合肥 230026)
2(四川大學 商學院, 成都 610065)
文本分類是自然語言處理中一類重要任務[1], 包括主題標注[2]、情感分類[3]、垃圾郵件檢測[4]等應用.文檔是文本的一種常見形式, 現實世界中, 存在大量長文檔, 例如學術期刊論文、商業報告和書籍等.文檔分類可用于滿足檢索、查詢等需求, 也可用于識別并過濾暴力、色情、種族歧視等劣質內容.從內容結構上看,文檔具有層級結構, 即詞語組成句子, 句子組成文檔[1].文檔的特征提取和向量表示是文檔分類中的關鍵[5].傳統的文本分類方法, 例如詞袋模型[6]、n-Grams[7]使用統計學方法把文檔表示為N維特征向量, 并交由SVM[8]或樸素貝葉斯[9]模型來做分類.這些方法簡單穩健, 但是忽略了文檔的結構信息, 丟棄了部分句子間和詞語間的關系.
近年來, 基于深度學習的方法展示出相比于傳統分類方法的優越性.Kim[10]使用卷積神經網絡(CNN)的變體模型自動地從由詞向量表示的句子中抽取特征, 再把特征輸入到分類網絡中預測句子類別.Lee等人[11]提出一種同時使用循環神經網絡(RNN)和CNN的模型, 能夠序列地對抽取到的卷積特征進行編碼, 該模型在短文本分類任務上取得最高水平的(state-ofthe-art)結果.這些模型在進行特征抽取時, 使用整個文本的內容, 在處理句子或者影評、短信等形式的短文本時, 計算開銷是可以容忍的.然而, 如果直接套用在長文檔上, 一方面, 由于長文檔的內容量往往是普通短文本的成百上千倍, 表示長文檔的特征向量將是超高維的, 極大增加內存壓力; 另一方面, 參照人類閱讀習慣, 人類僅根據少數重要的文檔片段便能判斷文檔類別, 所有詞語或句子對文檔分類結果的貢獻并不是均等的[12], 那么使用整個文檔內容構建表示向量就是不必要的.從這個角度出發, 如何從文檔中選取出最重要的、包含判別信息的文檔片段, 是設計可行且高效的文檔分類方法的關鍵.Yang等人[1]提出用于文檔分類的層級注意力網絡(HAN), 與文檔的層級結構相對應,HAN也具有層級結構, 它的兩級注意力機制分別關注句子層面和詞語層面, 使模型在構造文檔表示時對重要性強和重要性弱的內容做不同程度的關注.與Yang等人的思想相類似, He等人[12]同樣使用注意力機制篩選重要的文檔信息, 模型性能顯著高于基準模型Kim[10].然而, He等人[12]中用于抽取文本特征的CNN與基準模型Kim[10]的設計完全相同, 側重提取短語范圍內的詞語關系, 可能不擅長處理包含長句的文檔片段; 此外,He等人[12]使用不可微分的硬注意力機制[13], 大大增加模型訓練難度.本研究對He等人[12]的模型做出改進,提出基于局部注意力[14]的長文檔分類(Local-Attentionbased Long Document Classification, LALDC)模型,LALDC利用循環注意力學習, 序列地預測重要文檔片段的位置, 并抽取該位置附近的文本特征, 經過若干次循環, 抽取到的特征向量被整合起來作為文檔的摘要特征, 輸入后續分類網絡, 獲得預測結果.LALDC的設計結構使它能夠很好地適應長文檔分類任務, 原因在于, LALDC沒有使用文檔所有的細節信息[15], 僅僅使用少數文檔片段構造判別特征, 就足以支撐分類任務.
此外, 訓練深度神經網絡需要大量標記數據, 而獲取標記數據往往成本高昂, 缺乏標記數據造成的弱監督是阻礙模型性能提升的瓶頸.目前, 對弱監督學習還沒有嚴格的定義.Zhou[16]把弱監督分為3種類型:(1) 不完全監督, 訓練數據中僅有一小部分帶有標簽;(2) 不確切監督, 訓練數據的標簽是粗粒度的; (3) 不精確監督, 訓練數據的標簽不總是真實的.本研究面臨的弱監督屬于第1種類型.Meng等人[17]提出一種弱監督方法, 解決使用深度學習做文本分類任務時經常面臨的數據缺失問題.該方法由兩個模塊構成: (1) 偽文檔生成模塊, 利用種子信息(例如少量標記文檔、類別關鍵詞、類別名稱等)生成偽標記文檔, 用于對基于CNN或RNN的模型做預訓練; (2) 自訓練模塊, 在真實的未標記數據上通過Bootstrap方法對模型做參數微調.Meng等人[17]的方法能夠靈活處理不同類型的弱監督信號, 并容易整合到現有深度神經網絡模型中.然而, 使用該方法生成的偽文檔中, 詞語之間沒有前后語義關系, 并不符合真實文檔的情況.本研究借鑒Meng等人的偽文檔生成模塊, 并做出實質性改進, 提出偽文檔生成(Pseudo-Document Generation, PDG)模型, 利用弱監督信號生成接近真實文檔的偽標記文檔, 能夠增強訓練數據, 提升模型精度.
綜上所述, 本研究的貢獻主要在兩方面: PDG模型用于生成偽文檔, 緩解數據不足造成的模型精度難以提升的問題; LALDC模型用于長文檔分類, 解決過往的深度神經網絡模型難以適應長文檔的問題, 在模型精度、訓練和推斷速度上均具有實際應用的價值.
本研究可拆分為偽文檔生成、長文檔分類兩部分.首先使用PDG模型生成偽文檔以增強訓練數據, 然后使用LALDC 模型預測文檔所屬類別.圖1展示了整個流程.

圖1 弱監督長文檔分類的流程
Meng等人[17]利用種子信息捕捉詞語、文檔、類別之間的語義相關性, 假設詞語和文檔共享一個聯合語義空間, 基于這個空間學習出能夠為每個類別生成偽文檔的生成模型.具體而言, 使用Skip-Gram模型[18]學習出語料庫中所有詞語的p維向量表示并做歸一化,使得所有詞向量都處在p維單位球空間上, 也就是聯合語義空間.對于標記文檔形式的種子信息, 先使用TFIDF加權法提取每個類別的種子關鍵詞, 再從語義空間中尋找與種子關鍵詞平均相似度最高的前t個類別關鍵詞, 使用它們去擬合一個von Mises Fisher (vMF)分布[19], 也就是該類別在Rp中單位球上的語義模型.
偽文檔生成過程中, Meng等人[17]使用了生成式混合模型: 從由背景分布(整個語料庫的分布)和特定類別的vMF分布構成的混合分布中重復做單詞采樣來生成偽文檔.這個方法看似高效穩定, 但由于每次采樣都是獨立的, 導致生成的偽文檔中詞語亂序, 不符合一篇文檔在意思表達上應該連貫通順的認知.為使生成的詞語之間具有時序上的聯系, 本研究使用基于門控循環單元(GRU)[20]的循環神經網絡生成具有意義的偽文檔.具體而言, 基于整個語料庫訓練GRU語言模型, 對于每個類別, 從該類別的vMF分布中采樣1個詞嵌入向量, 并使用嵌入空間中最接近這個向量的詞語作為序列的第1個詞語, 然后把這個序列輸入到GRU模型中生成下一個詞語, 把它拼接到序列末尾并重復上個步驟, 直到序列長度等于一個事先設定好的參數, 最終的序列就作為該類別的一篇偽文檔.圖2展示了整個流程.

圖2 使用PDG模型生成偽文檔的流程
LALDC由3個子網絡和1個初始特征組成: 摘要網絡、定位網絡、分類網絡和初始文檔表示, 模型架構如圖3所示.在每個時間步, 給定由定位網絡輸出的位置post, 摘要網絡從post前后的文檔片段所包含的詞語中抽取局部特征.LALDC的關鍵點在于能否準確找到包含判別信息的文檔片段所在的位置, 定位網絡通過循環注意力機制完成這一任務, 它基于觀察到的上下文信息, 決定要把注意力放在文檔的哪個片段, 使得摘要網絡抽取到的信息足以支撐后續分類任務.初始文檔表示包含文檔的初始上下文信息, 為定位網絡提供了第1個輸入, 使得定位網絡在第1個時間步就能準確找出位置.幾輪特征抽取后, 得到原文檔的摘要特征, 隨后輸入到分類網絡中預測文檔類別.此外, LALDC使用Embedding層把文檔中的詞語轉換為詞向量(由預訓練好的GloVe[21]表示).

圖3 LALDC的模型架構
(1) 摘要網絡
在第t個時間步, 摘要網絡從由位置post決定的文檔片段中抽取特征.通過卷積和池化操作, 把詞向量編碼成特征向量, 并連結位置特征pt, 一起映射為長度固定的特征st, 作為定位網絡的輸入.Kim[10]提出用于句子分類的CNN模型, 抽取文本特征的卷積核窗口大小為3、4、5, 模型在多個數據集上表現優異.Zhang等人[22]對用于句子分類的CNN做了全面實驗分析, 指出對于非常長的句子, 應當嘗試加入更大窗口的卷積核, 以捕捉更大范圍內詞語間的關系.He等人[12]使用與文獻[10]中同樣窗口大小的卷積核抽取文檔片段的特征.考慮到文檔片段在長度上是超過普通句子的, 可能包含多個長句, 參考文獻[22], 本研究設計的摘要網絡同樣使用多核CNN, 卷積核窗口大小為3、5、7、10, 全面捕捉短語和長句的特征, 如圖4所示.

圖4 摘要網絡
(2) 定位網絡
定位網絡的核心是使用GRU[20]的循環神經網絡和局部注意力機制[14].在第t個時間步, 定位網絡的GRU接收由摘要網絡生成的特征向量st作為輸入, 結合隱藏狀態ht產生下一個狀態向量ht+1.接下來, 注意力層根據狀態向量ht+1計算下一個應該被摘要網絡“看到”的文檔片段的位置post+1.通過這樣的循環計算, LALDC在若干次特征抽取后形成包含判別信息的摘要特征, 作為類別預測的依據.提升模型性能的關鍵在于, 訓練定位網絡, 使它總是把注意力放在重要的文檔片段.
軟注意力(Soft Attention)[23]針對文檔中的每個句子或每個單詞, 計算權重向量作為注意力概率分布, 非常適合短文本任務, 比如情感分析、句子分類等.然而,對于長文檔, 由于句子和單詞的數量過多, 為一整篇文檔計算注意力概率的開銷過大, 不具有實踐意義[14].He等人[12]使用硬注意力(Hard Attention)機制[18]來避免軟注意力機制造成的龐大計算開銷, 在每個時間步,硬注意力直接從整個文檔中隨機采樣一組詞語, 提高了計算效率.然而, 由于硬注意力的選取過程是離散的,導致模型不可微分, 需要更復雜的技術(比如減方差、強化學習)來訓練[14].局部注意力[14]可以看作是軟注意力和硬注意力的混合體, 它在計算上比軟注意力開銷更少, 同時, 與硬注意力不同, 局部注意力幾乎處處可微, 更易于實施和訓練.LALDC的定位網絡設計為循環局部注意力模型, 如圖5所示.

圖5 定位網絡
每次循環局部注意力有選擇性地關注一個較小的上下文窗口.具體而言, 在第t個時間步, 模型根據隱藏狀態ht生成對齊位置(aligned position)apt, 計算窗口[apt-D,apt+D]內對象的局部權重(注意力分布),D根據經驗來選擇.隨后, 上下文向量ct計算為該窗口內對象的加權平均(這一步類似于軟注意力).最后, 預測接下來應該抽取特征的片段位置post.
(3) 初始文檔表示
由于定位網絡需要文檔的上下文信息來預測注意力的位置, 僅使用片段信息可能不夠, 此外, 定位網絡作出第1次預測之前, GRU需要接收初始文檔信息作為輸入來產生第1個隱藏狀態.因此, 對原始文檔做隨機采樣, 并編碼成代表初始文檔信息的向量, 作為定位網絡的第1個輸入.具體而言, 從原始文檔中隨機采樣K組詞語(每次采樣的窗口大小相同), 每組詞語由Embedding編碼成詞向量, 再輸入到摘要網絡中抽取特征, 初始文檔表示s0計算為K個特征向量的加和, 這一過程如圖6所示.

圖6 初始文檔表示
(4) 分類網絡
分類網絡接收摘要網絡經過若干輪循環后生成的摘要特征作為輸入, 目標是正確預測文檔所屬類別, 該網絡設計為典型的全連接層+Softmax層的結構.
(5) 模型優化
由于LALDC各個子網絡都是可微分的, 因此使用典型的有監督學習訓練方法, 通過最小化一個平滑交叉熵損失函數來優化參數, 如算法1所示.

算法1.LALDC參數優化算法1.Input: 文檔Doc, 最大迭代次數maxIter, 定位網絡循環次數T 2.for i = 1, 2, …, maxIter do初始化摘要特征Simages/BZ_62_1796_2043_1825_2068.pngimages/BZ_62_2175_2043_2233_2068.png獲取文檔Doc的初始文檔表示, 輸入到定位網絡以預測3.for t = 1, 2, …, T do images/BZ_62_1590_2143_1645_2168.png images/BZ_62_2045_2143_2070_2168.png摘要網絡在 附近的文檔片段上抽取特征 , 更新S if t < Timages/BZ_62_1690_2243_1715_2268.pngimages/BZ_62_1932_2243_2015_2268.png定位網絡接收 作為輸入, 預測else分類網絡接收S作為輸入, 預測文檔Doc的類別4.end for 5.更新參數6.end for 7.Output: 預測標簽
常用的文檔分類基準數據集, 例如IMDB review、Yahoo Answer、Amazon review等, 它們的平均單篇文檔所含單詞數都不超過350個詞語, 也就是說這些數據集大部分是短文檔, 并不符合一般長文檔(比如學術論文、書籍等)的字數情況, 因此使用這些數據集來檢驗本研究的模型是不適合的.He等人[12]使用自主收集的arXiv論文數據集來評估長文檔分類模型, 為便于與基準模型做比較, 本研究同樣使用該數據集.
arXiv是一個收集物理學、數學、計算機科學和生物學等領域預發表論文的網站.arXiv數據集包含31 363篇論文, 分為10個類別, 通過arXiv sanity preserver程序[24]收集.注意到某些類別屬于同一個大類, 比如cs.AI、cs.CE、cs.DS等都屬于計算機科學, 大大增加了正確區分不同類別論文的難度.對數據的清洗包括:只保留有意義的英語單詞, 丟棄詞數少于1000的文檔,過長的文檔被截斷為前10 000個詞.表1展示了數據集的詳細信息.

表1 arXiv數據集的統計信息
使用兩組基準模型.一是Kim[10]中做句子分類的CNN模型, 為簡潔, 稱作TextCNN; 二是He等人[12]基于硬注意力機制的長文檔分類模型, 稱作HeLDC.為使TextCNN適合長文檔分類, 對它稍做調整, 具體如下: 與本研究的LALDC基本思想類似, 從原始文檔中隨機抽取K個長度為w的片段, 把每個片段分別作為TextCNN的輸入, 卷積池化后得到特征向量, 把這些向量做加和, 再輸入到后續的分類網絡做預測.
(1) 文檔表示
使用開源的GloVe[21]作為初始化詞向量, 向量維數為100.所有不在GloVe中的詞語都被隨機初始化,Embedding層與后續網絡一起聯合訓練(jointly-train).
(2) 訓練參數
使用TensorFlow搭建模型, 定位網絡中GRU大小為256, 局部注意力窗口D為12; 摘要網絡使用3、5、7、10四種窗口大小的卷積層, 每層有100個核; 使用ADAM優化算法[25], 初始學習率為0.001, dropout概率為0.5, batch大小為64.
(3) 評價指標
arXiv數據集各類別文檔數量相差較小, 可采用精度(accuracy)評估模型性能.
(1) 實驗1
為了驗證弱監督情況下, 生成偽文檔能夠增強訓練數據, 同時評估LALDC與基準模型的性能, 設計以下實驗.從arXiv數據集中選取0.2比例的文檔作為訓練集TrainSet, 剩余文檔作為測試集TestSet.使用PDG模型為每個類別生成200、300、400、500篇偽文檔, 和TrainSet一起構成5組訓練數據, 即TrainSet、TrainSet+200篇偽文檔、TrainSet+300篇偽文檔等依此類推.使用這5組數據訓練LALDC和基準模型, 每次抽取特征的文檔片段窗口大小w為40, 抽取次數為14.使用TestSet檢驗模型性能, 實驗結果如圖7所示.

圖7 不同數量的偽文檔對訓練數據的增強作用
結果表明, 偽文檔確實能夠增強訓練數據, 提升模型訓練效果.此外, 如果生成的偽文檔數量過少, 則沒有充分利用種子信息, 對模型性能提升較小, 如果生成的偽文檔數量過多, 則會攜帶過多噪聲, 降低泛化能力,在本次實驗中, 生成400篇偽文檔是比較好的選擇.比較3種模型, TextCNN明顯比HeLDC和LALDC遜色很多.從模型結構分析, 同樣是使用CNN抽取文本特征, 影響性能的關鍵在于正確選擇出包含判別信息的文檔片段.對于TextCNN, 實驗設計為隨機從原始文檔中抽取片段作為輸入, 而并沒有去“預測”重要的片段應該在的位置.HeLDC和LALDC都使用循環注意力機制去序列地預測下一個應被看到的文檔片段, 毫無疑問, 這種選取方式更可能捕捉到判別信息, 支撐后續分類任務.LALDC的表現略優于HeLDC, 原因在于本研究設計的CNN層(摘要網絡)能夠同時抽取短語和長句范圍內的詞語關系, 而HeLDC只能捕捉短語級特征; 此外, 本研究使用局部注意力機制, 注意力向量是窗口內對象的加權平均, 相比于HeLDC使用的硬注意力機制, 局部注意力向量包含更大范圍的信息, 有助于更準確地預測重要文檔片段的位置.
(2) 實驗2
為了評估本研究基于GRU語言模型的PDG與Meng等人[17]的生成式混合模型(以下簡稱為GM模型)在偽文檔質量上的差異, 同時觀察不同監督強度下偽文檔的數據增強作用, 設計以下實驗.從arXiv數據集中選取0.2-0.8之間不同比例的文檔作為訓練集TrainSet,剩余文檔作為測試集TestSet, 構成不同標記率的數據集.參考實驗1的結果, 對于每個數據集, 分別使用PDG模型和GM模型為每個類別生成400篇偽文檔, 和TrainSet一起構成3組訓練數據, 即TrainSet、TrainSet+PDG生成的偽文檔、TrainSet+GM生成的偽文檔.使用這3組數據訓練LALDC和基準模型, 每次抽取特征的文檔片段窗口大小w為40, 抽取次數為14.使用TestSet檢驗模型性能, 實驗結果如圖8所示.

圖8 不同數據標記率下兩種偽文檔對測試精度的影響
結果表明, 在數據標記率較低時(0.2和0.4), 使用PDG生成的偽文檔對測試精度具有顯著提升效果, 而在所有數據標記率下, 使用GM生成的偽文檔反而降低了測試精度.從模型結構分析, PDG和GM都使用vMF分布建立語義模型, 差別在于后續生成偽文檔的方式, PDG使用GRU語言模型生成的偽文檔語句間具有前后語義關系, 更接近真實文檔, 對訓練數據有切實的增強作用; 而GM通過從混合分布中重復做詞語采樣來生成偽文檔, 實質上是詞語的無序堆砌, 類似于真實文檔被打亂語序后的樣子, 反而會給訓練數據帶來噪聲.因此, PDG生成的偽文檔質量更高, 更適合于本研究的分類任務.此外, 觀察到隨著數據標記率提高,PDG偽文檔對測試精度的提升幅度逐漸減弱, 也就是說, 強監督情況下, 訓練集本身已能夠提供充足信息, 沒有偽文檔并不影響模型訓練, 弱監督情況下, 偽文檔能夠發揮更明顯的作用, 緩解缺乏訓練數據造成的困擾.
(3) 實驗3
把重點放在長文檔分類模型本身, 為了觀察調整窗口w的大小、抽取特征的次數會如何影響模型性能,同時檢驗LALDC的運行效率, 設計以下實驗.從arXiv數據集中選取0.8比例的文檔作為訓練集TrainSet,剩余文檔作為測試集TestSet, 參考實驗2的結果, 不使用偽文檔.設計20、40兩種窗口大小, 10、14、18三種抽取次數, 共6種組合, 觀察LALDC和基準模型基于看到的200、280、360、400、560、720個詞語對文檔做類別預測的精度, 同時記錄模型在訓練和推斷階段的用時.實驗結果如圖9、表2所示.

表2 模型運行效率(窗口大小為40)

圖9 模型看到的詞語總數對測試精度的影響
結果表明, 給定抽取特征的次數, 更大的摘要窗口總是產生更高的測試精度, 總體而言, 模型看到的詞語數量越多, 抽取到的特征越豐富, 預測精度越高.與基準模型相比, LALDC在看到同樣數量詞語的情況下,測試精度顯著高于TextCNN與HeLDC.此外, HeLDC、TextCNN在看到720個詞語時分別產生81.2%、77.6%的精度, 與HeLDC相比, LALDC僅看到一半數量(360個)詞語就能產生80.5%的精度, 與TextCNN相比, LALDC僅看到不足 1/3 (即200個)詞語就能產生77.4%的精度.也就是說, LALDC只需看到數量少得多的詞語, 就能達到與基準模型同等的預測精度.觀察LALDC與基準模型的精度差距, 發現當窗口w變大時(由20變為40), 差距明顯增加, 即LALDC在使用大窗口時優勢更加顯著.這與本研究設計的摘要網絡密切相關, 根據前文分析, LALDC能夠抽取長句范圍內的詞語關系, HeLDC不具備這個能力.當窗口大小為40時, 定位的文檔片段更可能包含完整長句, LALDC的優勢就展現出來了.
最后, 在模型效率和實踐性方面, TextCNN由于模型結構簡單, 在訓練時收斂速度最快, 但是最多能達到77.63%的預測精度.HeLDC雖然訓練用時較長, 但它最高能達到81.16%的預測精度, 彌補了訓練收斂速度慢的缺陷.本研究提出的LALDC比兩個基準模型的預測精度更高, 但在訓練用時上介于兩者之間, 原因在于, LALDC相較于HeLDC, 模型參數數量更少, 因此更易于訓練.例如, 同樣是使用循環注意力機制, HeLDC中的循環神經網絡使用LSTM單元, 而LALDC使用GRU, 這是因為GRU的實驗效果與LSTM相似, 但是更易于計算[26].更進一步地, LALDC在預測精度最高時, 每批次(64個樣本)的訓練和測試用時分別為0.69 s、0.51 s, 意味著LALDC在訓練和測試階段每秒鐘分別處理93篇、125篇長文檔, 這樣的計算效率應該是可以被實際應用接受的.
本研究提出弱監督情況下基于局部注意力機制的長文檔分類方法, 在偽文檔生成和長文檔分類兩方面均做出貢獻.PDG利用少量種子信息產生能夠增強訓練數據的偽文檔, 在弱監督情況下顯著提升預測精度.LALDC使用局部注意力機制, 既能規避軟注意力龐大的計算開銷, 又比硬注意力更易于訓練.通過循環注意力學習, LALDC序列地預測重要文檔片段所在位置并抽取特征, 直到摘要特征能夠支撐后續分類任務.與兩個基準模型相比, LALDC在觀察到更少文檔信息的情況下, 就達到基準模型的預測精度, 而在觀察到充足文檔信息時, LALDC的性能顯著高于基準模型.同時,LALDC的訓練和測試用時處于兩個基準模型之間, 具有實際應用的價值.
受歐陽文俊和徐林莉[27]、Yang等人[1]提出的層級注意力模型的啟發, 在未來研究中, 可以對LALDC中的定位網絡做進一步改進.考慮使用層級注意力機制, 同時關注句子層面和單詞層面.這一嘗試可能使分類模型進行更細粒度的計算, 不僅定位出文檔中重要的句子, 還能從句子中抽取重要詞匯的信息.