葛夫勇 雷景生 唐小嵐
(上海電力大學 上海 201300)
近年來,手機終端設備增多,線上信息在暴增,同時信息的類別也越來越多樣化,信息的質量高低不齊,這使得人們獲取想要的信息變得困難,如何在海量數據中快速和準確地找到對自己有用的信息,就成了人們關注的問題。由此文本分類的技術出現,成了自然語言處理類技術中的熱門,其本質是提取分類文本的特征,選擇優化后的特征進行匹配,以便對數據集的每個樣本正確分類[1]。該技術被用在各種文本主題分類、情感文本分析等科學研究領域。
早期的文本分類方法多數是機器學習算法,如隱含狄利克雷分布(LDA)方法[2]、支持向量機[2]和K-最近鄰[4]等,基本上都是淺層的空間模型,在文本分類中不僅存在數據高維稀疏的問題,而且忽略了詞語在句子和全文中的關聯性[5]。牛碩碩等[6]提出一種基于NLDA的算法模型,采用LDA主題模型對文本進行預處理,輸出單詞與主題的概率分布,作為神經網絡的輸入進行文本分類,提高了文本分類的準確率。
近年來,在自然語言處理的文本分類任務中普遍采用深度學習算法。它可以學習多級文本特征表示,強調提取句子的特征,有效提高了文本分類的準確率。在文本分類算法中,Kim[7]采用CNN算法,在無監督神經網絡語言模型中加上卷積層,并微調參數,提取句子的信息,可以有效捕捉局部信息的相關性[8]。Conneau等[9]提出了VD-CNN結合算法應用于文本分類中,該模型直接在字符集上操作,只使用池化操作和較小的卷積,采用29個卷積層,使網絡結構變得更深,提升了文本分類的準確率。2017年Google團隊提出Transformer[10]模型,該模型接受一整段序列,使用Self-attention機制來學習它們之間的依賴關系,但是其長期依賴的學習能力欠佳。Al-Rfou等[11]在Transformer基礎上提出了訓練語言模型的方法vanilla Transformer,根據之前的字符預測片段中下個字符。該模型要比RNN模型好,但是存在上下文長度受限、推理速度慢等缺點。因此,Dai等[12]提出了Transformer-XL架構,在vanilla Transformer基礎上引入了相對位置編碼和循環機制,克服了vanilla Transformer的缺點。它同時結合了循環機制序列建模和Transformer自注意力機制的長處,在每段輸入數據上使用Transformer的注意力模塊,并使用循環機制來學習連續段之間的依賴關系,該架構不僅讓文本特征提取更充分,還允許模型學習更長期的依賴。
LDA模型通過單詞與主題之間的聯系,計算其頻率得出單詞與主題間的概率,并按需要設定閾值,將大于該閾值的高頻主題詞保留下來[13],有助于改善文本數據稀疏問題。卷積神經網絡可以通過卷積和池化提取出局部最優文本特征,但忽略了上下文語境對當前短語的影響,無法捕捉長距離依賴關系。而Transformer-XL是一種超出固定長度上下文的關注語言模型,引入的循環機制解決了文本中更長距離的段與段之間依賴學習不到的問題,完成了上下文關系的捕捉。而絕對位置編碼采集到的更長距離段與段之間的位置順序信息不全面,因此,采用了相對位置編碼。在模型設計上需要更多考慮文本長度方面的延伸工作,基于此,本文提出一種LC-Transformer XL模型。通過LDA主題模型提取文本的高頻主題詞,將提取的主題詞文本分別輸入CNN機制和Transformer-XL機制,CNN機制進行局部特征融合和提取,得到優化后的局部詞語特征,Transformer-XL機制從全局文本詞語出發,學習更長的段與段距離依賴,得到全局詞語特征,從Transformer-XL模型與CNN模型中分別獲取的特征進行融合,并輸入到Softmax分類器中進行分類。與選擇的參照模型做對比實驗,實驗結果驗證了本文模型的有效性。
基于LC-Transformer XL集成模型的文本分類框架如圖1所示。使用該模型進行文本分類時,先通過LDA主題模型對文檔集合與主題集合的關系處理,得出相關詞頻,提取關鍵詞。利用CNN對文本卷積和池化處理,得出文本局部特征;結合Transformer-XL的不同序列相對位置信息進行編碼,通過雙流注意力機制、求和與歸一化、前饋神經網絡連接等操作,對文本進行段與段的循環機制采樣,實現長期依賴,提取出具有長距離段與段依賴的全局詞語特征。結合Transformer-XL機制和CNN機制并行的方式提取到局部和全局詞語特征進行融合,全連接層將融合后的特征通過Softmax分類。

圖1 LC-Transformer XL集成模型框架
LDA模型主要是用來判別主題,提取文本高頻主題詞,把文檔-詞匯關系轉變成文檔-主題和主題-詞匯的關系。LDA模型如圖2所示,其中:φ為詞概率;θ為主題概率;α是θ的先驗參數;β是φ的先驗參數;N為文檔中詞總數;M為文檔總數。

圖2 LDA模型
LDA主題建模[6],構建{1,2,…,V}的詞列。維數V的向量w是詞列第v個詞,有u≠v,wv=1,wu=1。N個詞的序列文檔d={w1,w2,…,wn},wn是第n詞,M個文檔組成集合D,D={d1,d2,…,dn}。
若主題集合為T,文檔d中的主題數量為e情況下,第i個詞wi的概率為:
(1)
式中:隱含變量zi、wi在主題j的概率為P(wi|zi=j),文檔d在主題上,其概率是P(zi=j)。文檔d中詞w的概率為:
(2)

LDA的核心公式:
P(w|d)=P(w|T)P(T|d)
(3)
式(3)以主題為中間層,通過當前的φ和θ來表示文檔d中詞w的概率。
LDA模型φ變量和θ分布,使其均屬于Dirichlet分布。通過貝葉斯推斷得到主題詞的后驗概率,采用Gibbs Sampling的方法,可以提取出主題和詞語的概率情況。LDA主題模型可以計算主題與詞的權重和詞的相關頻率,根據詞頻分布對不重要的信息進行篩選,提取關鍵主題詞,在文本分類任務中,可以減少文本噪音和稀疏問題。
CNN模型是通過輸入層將詞轉化為詞向量構成一個文本矩陣,模型結構見圖3。卷積層是采用卷積核獲取特征向量,池化層篩選出更優特征,輸入到全連接層[14]。

圖3 CNN模型
(1) 輸入層:n×d個向量矩陣表示句子,詞向量維數d,各個數據中詞向量數n。
(2) 卷積層:卷積層具有局部特征連接和共享特征權值功能[15]。用x表示卷積核,x∈Rhk:其中,h為卷積核的高度;k表示詞特征向量的維數,利用這些詞向量生成新的特征量。Xi:h表示一個詞列{Xi,Xi+1,…,Xi+h},Xi表示一個詞,則卷積操作可以表示為:
ci=f(a·Xi:i+h+b)
(4)
式中:a是核的權重;b是偏置項;f是非線性激活函數諸如ReLU或者Tanh。這種卷積核用在詞列{X1:h,X2:h,…,XN-h+1:N}生成一個特征向量圖,計算如下:
c=(c1,c2,…,cN-h+1)
(5)
式中:c表示文本經過一個卷積核形成的特征向量圖,c∈RN-h+1。每個卷積核在上述的計算流程下會產生相應的特征向量,通過設置不同卷積核的數量得出許多相異的特征向量圖。
(3) 池化層:本層主要任務是特征的篩選,采樣上一層的特征,留下每個特征組中關鍵特征,也可以使網絡參數變少[16]。循環采樣步長為池化區域大小的卷積層。采樣方法為Max-pooling,通過該方法降低空間維度。
(4) 全連接層:將得到的特征向量拼接融合后輸入到全連接層。使用全連接方式連接到最后一層類別節點,來組成Softmax分類器,通過Softmax層進行輸出,Softmax層輸出數組中最大概率類別就是該模型的預測結果。
Transformer-XL是同時結合了RNN序列建模和Transformer自注意力機制的優點,在輸入數據的每個階段上使用Transformer的注意力模塊,并使用循環機制來學習連續段之間的依賴關系。
Transformer架構[10]采用self-attention方法,其將文本中全段序列進行處理,采用三個可訓練的矩陣Query、Key和Value來處理序列中每個文本部分的依賴關系。其每個基本層是由多頭注意力機制和前饋網絡構成。由于在全局進行注意力機制的計算,忽略了序列中最重要的位置信息。
Vanilla Transformer模型[11]是基于Transformer提出了一種訓練語言模型的方法,是依據之前字符預測片段中的下一個字符。該模型在常用數據集上優于RNN模型,但是還存在上下文長度受限的問題,字符之間的最大依賴距離受輸入長度的限制,模型看不到出現在幾個句子之前的單詞。針對以上問題,提出Transformer-XL模型。
Transformer-XL[12]架構是在Vanilla Transformer的基礎上進行改進,并引入了兩個功能:循環機制和相對位置編碼。這不僅克服了Vanilla Transformer模型的缺點,而且還完善了Transformer根據歷史的詞預測下一個詞的特點。
1) 相對位置編碼。為了在內存的限制下讓Transformer學到更長的依賴,Transformer-XL借鑒了TBPTT(Truncated Back-Propagation Through Time)的思路,將上一個片段S{t-1}計算出來的表征緩存在內存里,加入到當前片段S{t}的表征計算中。
在Transformer中,一個重要的地方在于其考慮了序列的位置信息。在分段的情況下,如果僅僅對于每個段仍直接使用Transformer中的位置編碼,即每個不同段在同一個位置上的表示是使用相同的位置編碼,就會出現問題,比如,第i-2段就比i-1段的第一個位置將具有相同的位置編碼,但它們對于第i段的建模重要性顯然并不相同。因此需要對位置進行區分。
2) 引入循環機制。與Vanilla Transformer的基本思路一樣,Transformer-XL仍然是使用分段的方式進行建模,但是與Vanilla Transformer本質不同的是在于引入了段與段之間的循環機制,使用當前段在建模的時候能夠利用之前段的信息來實現長期依賴性。在訓練階段,處理后面的段落時,每個隱藏層都會接受兩個輸入:
(1) 該段前隱藏層的輸出,與Vanilla Transformer相同。
(2) 前面段落隱藏層的輸出,可以使模型創建長期依賴關系。
原則上只要GPU內存允許,Transformer-XL方法可以利用前面更多段的信息,測試階段也可以獲得更長期的依賴。
在測試階段,與Vanilla Transformer相比,其速度也會更快。在Vanilla Transformer中,一次只能前進一個step,并且需要重新構建段,并全部從頭開始計算;而在Transformer-XL中,每次可以前進一整個段,并利用之前段的數據來預測當前段的輸出。
由清華大學自然語言處理組公開提供的THUCNews數據集,該數據集總計74萬篇文檔,本文采用其中7萬條數據,包含財經、房產、家居、教育、科技、體育、時政、時尚、游戲和軍事共10個類別,每個類別數量為7 000,總計7萬,數據集劃分:訓練集為5 000×10,驗證集1 000×10,測試集為1 000×10。
為了更好地提高實驗效果,對數據集進行預處理,首先對文本進行分詞操作,用文本中的詞語表示文本,去除句子中難以識別的特殊符號和停用詞,并過濾掉重復的語句,降低文本的冗余度。不僅減少訓練時間,還提高文本分類效果。
本文選擇5個文本分類模型作為基線模型,分別是CNN、NLDA、Transformer、Transformer-XL和CNN-Transformer XL模型,其中:
1) NLDA模型:一種基于LDA與神經網絡的算法模型,參數α=0.01,β=0.625。
2) Transformer模型參數:編碼器數量為2,dropout為0.4,batch size為25,epoch為20。
3) Transformer-XL模型參數:Units為4,Embed_dim為4,Hidden_dim為4,Num_token為3,Num_block為3,Num_head為2,Memory_len為20,Target_len為10。
4) CNN-Transformer XL模型:CNN和Transformer模型的集成,該算法是本文融合算法的基礎模型。
常用文本分類結果分析指標是準確率A、精準率P、召回率R以及F1值。TP:樣本為正,預測為正;FP:樣本為負,預測為正;TN:樣本為負,預測為負;FN:樣本為正,預測為負。
準確率A表示實際類別正確的樣本在總數中的比重。
(6)
精準率P表示正確預測為真的個數占全部預測為真個數的比例,它作用的主要范圍是預測結果。
(7)
召回率R表示正確預測為真的個數占全部實際為真個數的比例。
(8)
F1值是精準率和召回率的兼顧指標。
(9)
本文實驗環境配置如表1所示。

表1 實驗環境配置
本文實驗的LC-Transformer XL模型是由LDA主題模型、CNN和Transformer-XL三個模型組成,其參數大小設置見表2。

表2 實驗參數設置
本文采用LC-Transformer XL模型來處理文本分類問題,為了驗證該模型的有效性,并選擇多種相關文本分類基線模型進行比較,比較模型包含CNN、NLDA、Transformer、Transformer-XL、CNN-Transformer XL和LC-Transformer XL。實驗在準確率、精準率、召回率和F1值進行了測試,測試結果見表3。

表3 各個模型的測試結果
表3的F1值可以根據公式將實驗得出的P和R計算得到??梢钥闯?相較其他模型,NLDA模型的準確率和F1值均為最低,其歸咎于該模型是基于傳統機器學習算法。與CNN-Transformer XL模型相比,LC-Transformer XL模型添加了LDA主題算法,在文本預處理階段,利用主題與詞語的概率分布,去除概率小于閾值的低頻詞,其中閾值為0.04,有效降低文本數據的稀疏性,使得準確率和F1值均略高些。實驗結果表明,本文模型在所有基線模型中分類效果最好,證明了該模型的有效性。
根據圖4所示,分析各模型F1值的變化,可以看出NLDA模型隨著Epoch變化,F1值的增加幅度最大,對于本文用的數據集,NLDA模型適用性并不好;CNN模型相對其他模型穩定些,變化幅度不大,F1值最終在0.91穩定;Transformer模型和Transformer-XL模型隨著Epoch變化后期規律較相似;CNN-Transformer XL模型的F1值在開始的Epoch中表現最好,整體F1值較平穩增長,最終在0.927左右穩定下來;LC-Transformer XL模型在起初Epoch的F1值不是模型中最好,但在最后幾次Epoch中LC-Transformer XL模型F1值處于較高水平,整體效果更好些。這主要是因為LDA主題模型在文本處理上進一步提取了更優的關鍵詞,改善了數據稀疏問題,F1值達到了0.931 8。結果表明在文本分類任務中LC-Transformer XL模型相較其他模型效果更好。

圖4 各模型F1值的變化對比
圖5表現了各個模型在每一次Epoch后經過數據集測試后的準確率變化。隨著每次Epoch的增加,基本上每個算法模型的準確率都在增加。這些模型中表現最差的是NLDA模型,兩個機器學習算法的結合,相對深度學習算法,在分類性能上還是有所不足,而本文采用機器學習算法中LDA模型是為了更好地去除文本中的低頻詞,提取出主題和詞語關聯度概率大于設定閾值的高頻關鍵詞,去除部分文本干擾,在準確率上略有改善。LC-Transformer XL相比其他模型,準確率初始就處于較高的水平,上升的趨勢也較平緩。LDA主題模型在文本處理方面充分運用單詞和主題的頻率計算,提取主題關鍵詞,有利于模型的特征提取。卷積神經網絡通過卷積和池化提取局部特征。Transformer-XL模型引入循環機制和相對位置編碼兩大功能,充分提取出文本的全局語義特征,不僅提取出更豐富的分類特征,還能提取出更深層的文本特征。實驗結果表明,LC-Transformer XL模型在文本分類任務中效果要優于其他基線模型。

圖5 各模型準確率的變化
本文提出一種基于LC-Transformer XL文本分類任務的集成模型。LDA主題模型可以運用主題與單詞的頻率關系充分去除一些干擾,Transformer-XL通過相對位置編碼和循環機制對遍歷整個文本提取出全局語義特征,卷積神經網絡可以有效捕捉文本的局部語義特征。結合三個模型的長處,提升了整個文本分類任務的準確率。該模型相較于CNN、NLDA、Transformer、Transformer-XL和CNN-Transformer XL基線模型,在通用語料庫上取得了較好的分類效果。Transformer-XL模型尚未應用于全部的NLP任務中,下一步將該模型應用到QA等任務,充分發掘Transformer-XL模型的潛在應用。