涂文博,袁貞明,俞 凱
(杭州師范大學 信息科學與工程學院,杭州 311121)
(移動健康管理系統教育部工程研究中心,杭州 311121)
在自然語言處理(Natural Language Processing,NLP)領域,文本分類是一項重要任務,具有廣泛的應用場景,比如知識問答、文本主題分類、文本情感分析等.很多專家學者提出不同方法來解決文本分類問題,文獻[1]提出基于規則特征的支持向量機(Support Vector Machines,SVM)模型對問答系統的問題進行分類,文獻[2]樸素貝葉斯(Na?ve Bayes)與SVM 相結合,提出了一種簡潔高效的情感和主題分類模型.文獻[3]使用三支決策方法提取文本特征,提高了基于規則特征的文本分類模型的準確率.隨著深度學習技術發展迅速,不同的神經網絡模型開始被應用到文本分類任務當中,以循環神經網絡(Recurrent Neural Network,RNN)[4]為代表的序列模型(Sequence Models)被大規模使用[5,6].文獻[7]把注意力模型添加到序列模型中,完成文本分類任務并獲得比較好的結果.文獻[8]將一直用于圖像處理的卷積神經網絡(Conventional Neural Network,CNN)[9]首次應用到文本分類領域,并獲得較好的結果.之后,文獻[10-12]將卷進神經網絡模型做了不同程度的改變,用于文本分類任務.本文對文本分類領域使用的RNN 模型和TextCNN 模型分別作介紹,并提出一種組合RNN 和TextCNN 的混合模型,在公開數據集上對這幾種模型進行對比,以評估不同類型模型的性能,并驗證了組合模型的性能要優于單獨的模型.
文本表示,即將字符文本通過某種形式表示成計算機可以處理的數值化數據.由于機器學習和深度學習的算法模型都不能直接處理字符文本,所以在使用機器學習或深度學習模型做NLP 任務時,需要將原始的字符文本做數值化表示,轉換成數值向量.并且,不同的文本表示形式對算法模型結果的影響也有所不同.根據NLP 任務和算法模型的不同,可以將文本的字或詞作為最小表示單位(本文中,以字作為文本的最小表示單位),進行數值向量化.
文本表示方法大致分為兩種,一種是One-Hot 式編碼.這種方式是從待數值化的所有文本中建立一個全局的完備字典,該字典包含文中出現的所有字,用字典序的數字來表示一個字.采用這種方法編碼,字典大小就是字的向量維度.在向量中,只有該字的字典序對應位置上的數字為1,其他位置均為0.這種方法有兩個主要缺點,一是字的向量十分稀疏,二是字與字之間沒有任何關聯,比如它并不能表現出同性字或意義相近的之間的相似性.另外一種方法是分布式表示法(Distributed Representation)[13],它基于“上下文相似的詞,其語義也相似”這一假說,其基本思想是使用統計學方法通過訓練把句子中的每個字映射成K維的實數向量,通過字與字的實數向量之間的距離(如歐氏距離、余弦距離等)來描述字之間的語義相似性,即相似語義的字具有相似的數值向量.現在的NLP 任務中,使用的大多是基于分布式表示法的文本表示模型.代表的有文獻[14]提出的Word2Vc 模型和斯坦福大學提出的GloVe 模型[15].在本文的實驗部分,采用Word2Vec 模型訓練的字向量作為文本分類模型的輸入數據.
循環神經網絡(Recurrent Neural Network,RNN)是NLP 任務中被廣泛使用的網絡模型.它通過循環使用同一個網絡神經元來處理任意長度的序列,將序列前面的特征傳遞給后面作為輸入,從而捕獲到完整的序列上下文特征信息用于序列分類或序列標注.
當序列長度較長時,神經網絡參數的訓練過程會遇到梯度爆炸和梯度消失問題[15-17],造成模型的參數學習緩慢甚至停止學習.文獻[17]提出LSTM 模型,對RNN 做了改進,其目的是解決RNN 存在的梯度爆炸問題.LSTM 的神經元結構如圖1所示.

圖1 LSTM 神經元結構
定義,序列的t位置為時刻t,LSTM 神經元由三個“門”控制:遺忘門ft,輸入門it和輸出門ot.三個門的值為0 或1.在時刻t,LSTM 的參數更新方式如下:

其中,xt是t時刻的輸入向量,ht-1為t-1 時刻的輸出向量.輸入門it控制是否將當前時刻信息存放在記憶細胞C中;遺忘門ft控制是否使用記憶細胞的歷史信息;輸出門決定是否讓當前記憶細胞的信息參與當前時刻輸出值的計算.WC、Wf、Wi、Wo分別為隱藏單元的權重矩陣,bC、bf、bi、bo分別為偏置矩陣.σ和tanh 分別為Sigmoid 函數和tanh 函數,定義由公式(7)和公式(8)給出.

BiLSTM 是使用兩個LSTM 網絡分別從前向和后向處理序列,這樣能更全面地提取序列的上下文信息.
本文的實驗部分,采用BiLSTM 作為RNN 的替代模型,用來與其他模型對比.使用BiLSTM 處理文本分類 的基本流程結構如圖2所示.

圖2 LSTM 模型用于文本分類示意圖
其中,xi為字向量,y為文本序列的類別.SoftMax是用于多分類的激活函數,假設Z=[z1,z2,…,zn]是一個n維的特征向量,其SoftMax 值由下式給出:

卷積神經網絡(Conventional Neural Network,CNN)被廣泛應用于計算機視覺中.隨著詞嵌入和深度學習技術的發展,現在很多學者開始在NLP任務中使用 CNN.
卷積操作是CNN 的重要特征之一.卷積層以特征映射為組織方式,其中的每一個單位與前一層的局部感受野相連接,利用共享的卷積核(或稱過濾器)與局部感受野做卷積運算,再經過激活函數(如ReLUv、tanh) 做非線性運算,得到特征值.給定一個矩陣X∈RM×N,和卷積核F∈RM×N,一般m?M,n?N,其卷積如式(10)所示:

圖3是文獻[8]提出用于文本分類的TextCNN 模型結構示意圖,在本文的實驗部分,使用該模型作為CNN 在文本分類領域的代表模型與其他模型對比.
TextCNN 通過不同的通道數目和卷積核大小,使用一維卷積的方式提取句子矩陣的特征.Max-overtime 池化層的作用是從提取的特征矩陣中選出最大值,跟其他通道的最大值拼接,組合成篩選過的特征向量,繼 而通過SoftMax 層對文本進行分類.

圖3 TextCNN 模型示意圖
鑒于以上描述,BiLSTM 和CNN 在應對文本分類問題時,各有特色,BiLSTM 由于具有自動學習記憶文本序列特征的特點,對于文本特征的提取、語音的理解和長文本依賴問題有很好的適用性;而TextCNN 憑借不同的卷積核和通道數目,比較適合提取更復雜的文本特征.我們嘗試將這兩個模型進行組合,組成的混合模型結構如圖4所示.
在BiLSTM 模型中,其每一個神經元都可以有輸出,該輸出表示為句子截至到該字符時,網絡模型提取到的句子特征.該法提取的句子特征為二維張量,適合TextCNN 做深層次的特征提取.
BiLSTM+TextCNN 組合模型的思想是,將BiLSTM 的每一個神經元輸出的特征連結成句子的特征矩陣,用作卷積神經網絡的輸入,進行特征的二次提取.具體的,句子中的字組成的字向量序列,經過BiLSTM 模型編碼成二維矩陣,編碼的過程即遞歸模型學習的過程,該過程將句子的字向量特征過濾、融合成句子的特征矩陣.遞歸模型的特點在于捕獲長距離的文本語義特征,對長距離的語義進行關聯特征提取,而BiLSTM 模型保證了句子的前后向語義信息都可以被捕獲.經過BiLSTM 模型輸出的句子特征矩陣包含了句子中字與字之間長距離的語義信息,使用TextCNN 對句子的特征矩陣做卷積操作,并通過池化進行特征篩選,繼而提取句子特征矩陣中相鄰文字的關聯特征,這樣相互結合,使得句子的語義特征得以全面且深度的提取,從而可以獲得更準確的分類結果.BiLSTM+TextCNN 組合模型的參數學習過程如下:

算法1.BiLSTM+TextCNN 模型參數學習過程1)隨機初始化模型的參數,設置模型批處理數據量batchsize 大小和迭代次數epochs.

2)將字向量表示的句子輸入到BiLSTM 網絡中,獲得經BiLSTM 提取的句子特征矩陣.3)將特征矩陣輸入到TextCNN 模型中,進行文本特征的二次提取.4) 將第3) 步由TextCNN 提取的特征輸入到全連接網絡層和SoftMax 層中獲得文本的分類結果.5)經由代價函數計算模型中參數的梯度,進行反向傳播,更新參數值.6)重復2)-5)步直至滿足設定的epochs 次數止.

圖4 BiLSTM+CNN 模型示意圖
模型的代價函數是模型參數學習過程中的目標函數或準則.通過最小化代價函數來優化模型,獲得更準確的擬合參數.模型采用交叉熵損失函數,其表示如式(11)所示.

其中,n為分類任務中的類別數目,y為數據集中的真實標簽值,a為模型經過學習后預測的標簽值.模型參數學習的過程就是在最小化該損失函數.
實驗采用的數據集是由清華大學自然語言處理與社會人文計算實驗室公開的新聞文本數據集1數據集版權歸清華大學自然語言處理與社會人文計算實驗室所有.詳見http://thuctc.thunlp.org/,該數據集包含836 075 條新聞文本,共14 個候選分類類別:體育、財經、房產、家居、彩票、教育、科技、股票、時尚、時政、星座、游戲、社會、娛樂.由于星座和社會的數據量過少,在實驗中略去該兩類數據,使用原數據集中的12 個類別的新聞文本進行實驗,共計824 900 條.數據集劃分百分之八十為訓練集,百分之二十為測試集.
實驗設置為使用上述數據集進行文本分類,并評估效果.作為對比,實驗增加一個BP 神經網絡(Back Propagation Neural Network,BPNN)模型作為分類任務的基準,用以對比BiLSTM 模型、使用TextCNN 模型和本文提出的BiLSTM+TextCNN 的組合模型的性能.模型的主要超參數如表1所示.
模型采用F1 值作為評估標準.F1 值由查準率(Precision,P)和查全率(Recall,R)經過計算獲得.定義y為模型輸出的字標簽預測分類值集合,為數據集字標簽的真實值集合,模型的查準率P(y,)由式(12)給出定義:

查全率R(y,)由下式給出:

F1 值由式(14)給出定義,它是P值和R值的調和平均數,其中β=1.

F1 值越高,模型表現越好.

表1 實驗中模型采用的主要超參數
經過多次實驗,幾個模型在不同類別的分類表現如表2所示.表中列舉了幾個模型對所有12 個分類的F1 值結果(數值為多次實驗數據中,最高三次的均值).從結果中可以看出,BPNN 模型由于結構較為簡單,其性能整體落后于其他三個模型,BiLSTM 模型在體育、財經、房產、股票、社會這五個分類上與TextCNN模型的表現較為接近,但在其他分類上要弱于TextCNN模型.而本文提出的組合BiLSTM 和TextCNN 的模型,其表現整體上要好于其他兩個單獨的模型.
究其原因,BPNN 模型結構較為簡單,只是兩層全連接網絡的組合,對文本的上下文信息的特征捕獲能力不強,做不到字與字之間關聯語義特征的提取,因而整體性能要弱于業界較為通用的文本分類模型.不過由于其模型結構簡單,在運行速度上要優于其它模型.BiLSTM 模型由于循環使用神經元學習序列中潛在的關聯特征,并選擇性記憶序列中的語義信息,對文本的上下文特征捕獲能力較強,自然獲得較高的分類準確率.TextCNN 模型使用不同的卷積核,對文字序列的相鄰語義特征捕獲能力較強,并能通過多層卷積融合較長距離的語義關系,因而可以得到較好的表現.并且,CNN 模型很適合并行計算,借由GPU 的加速,TextCNN模型的訓練時間要比BiLSTM 快很多.本文提出的BiLSTM+TextCNN 模型,結合了BiLSTM 模型和TextCNN 模型的特點,使用BiLSTM 對文本序列的上下文特征做篩選和提取,再經TextCNN 進行更進一步、更細粒度的特征選擇與融合,將句子中的長、短距離文字的關聯信息和句子的語義信息較為全面的捕獲,故其性能表現要優于單獨的BiLSTM 模型或TextCNN 模型.不過由于組合了兩個復雜模型,混合模型在時間復雜度上要差一些.
另外,除了BPNN 模型外,其他模型的F1 值均超過了0.9,并有過半數目的分類問題F1 值超過了0.95,這說明幾個模型在文本分類問題上都能夠得到較為準確的結果,并且將序列模型和卷積模型組合會得到更佳的效果.

表2 不同神經網絡模型在數據集上的分類效果F1 值對比
文本分類問題一直是NLP 領域關注的重點,有很廣泛的應用場景.在處理文本分類任務時,主流的模型有以BiLSTM 為代表的序列模型和以TextCNN 為代表的卷積模型.本文介紹了這兩個主流的文本分類模型,并提出新的組合模型,通過實驗對比了不同模型的性能表現.未來,將多種模型組合起來解決某一類問題或是后續研究的重點.