孫 新,唐 正,趙永妍,張穎捷
(北京市海量語言信息處理與云計算應(yīng)用工程技術(shù)研究中心 北京理工大學 計算機學院,北京 100081)
文本分類是自然語言處理的核心任務(wù)之一,在新聞分類、情感分析、主題檢測等領(lǐng)域均有廣泛應(yīng)用。傳統(tǒng)的機器學習分類算法通過特征工程選擇合適的特征來表示文本,然后把文本特征輸入到不同的分類模型中得到分類結(jié)果,例如,樸素貝葉斯(Na?ve Bayes, NB)[1]、K近鄰(K-nearest neighbor, KNN)[2],支持向量機(support vector machine, SVM)[3]等算法。但是,隨著文本數(shù)量的日益龐大,傳統(tǒng)機器學習的分類算法中復(fù)雜的特征工程成了制約其發(fā)展的瓶頸。
深度學習模型能夠從大規(guī)模數(shù)據(jù)樣本中自主學習樣本的特征,提高了建模的智能化,簡化了分類流程,因此成為文本分類領(lǐng)域的研究熱點。卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)[4]是深度學習中的常用模型之一。紐約大學的Yoon Kim在2014年的EMNLP會議[4]中提出了TextCNN模型[5],利用卷積神經(jīng)網(wǎng)絡(luò)對文本建模并分類,得到了不遜色于復(fù)雜的基于機器學習的分類器模型的結(jié)果,由此引發(fā)了對基于深度學習的文本分類模型研究的熱潮。
在自然語言處理任務(wù)中,循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)通常一次處理一個單詞,并根據(jù)復(fù)雜的單詞序列學習特征,因此RNN能夠捕獲對自然語言處理任務(wù)有用的語言模式,尤其是在較長的文本段上。Liu等人[6]利用基于長短期記憶(LSTM)的循環(huán)神經(jīng)網(wǎng)絡(luò)對文本進行編碼獲得了較好的效果。
卷積神經(jīng)網(wǎng)絡(luò)可以提取局部特征,循環(huán)神經(jīng)網(wǎng)絡(luò)可以提取全局特征,均表現(xiàn)出不錯的效果。但是,當文檔長度較長時,直接把文檔作為長序列處理,不僅會給模型的性能帶來很大挑戰(zhàn),同時也會忽略掉文檔層次結(jié)構(gòu)中包含的信息。因此有研究者研究分層的神經(jīng)網(wǎng)絡(luò)模型[7-9],使用層次網(wǎng)絡(luò)模型進行文本分類,但是層次網(wǎng)絡(luò)模型在訓(xùn)練過程中通常使用全局目標向量,無法關(guān)注到每個文本最明顯的語義特征。
在對句子使用注意力機制時,當前已有方法通常使用全局參數(shù)作為所有類別的目標向量,這一方面不利于表示每個句子各自的特征,另一方面也不能突出句子中具有明顯類別特征的詞。針對當前文本分類算法在長文本分類中的優(yōu)勢和不足,本文提出基于層次混合注意力機制的文本分類模型(hierarchical mixed attention networks, HMAN),采用基于RNN的層次模型對長文本分類,同時引入注意力機制來關(guān)注文本中的重要部分。在句注意力層,除了訓(xùn)練一個全局目標向量之外,還利用最大池化從句子的詞向量矩陣中提取每個維度上最重要的信息作為句子特定的目標向量,使用兩個目標向量共同對句子中的單詞打分,從而使得到的句子編碼的類別特征更加明顯,能夠更好地關(guān)注到每個文本最具區(qū)別性的語義特征。
最后,在公開數(shù)據(jù)集以及企業(yè)年報數(shù)據(jù)集上進行實驗,驗證了HMAN模型的有效性。尤其針對具有層次特征、長文本的企業(yè)年報數(shù)據(jù)集,HMAN模型在句注意力層通過提取句子中各維度的最大特征來獲取每個句子特定的重要特征,在一級行業(yè)分類和二級行業(yè)分類的分類準確率上均有良好表現(xiàn)。
基于深度學習的文本分類算法通常使用低維、實數(shù)值的詞向量來表示文本中的單詞,然后構(gòu)建神經(jīng)網(wǎng)絡(luò)模型對文本建模,獲得包含了全部文本信息的文本表示,用最終的文本表示來對文本分類。
TextCNN模型[5]是經(jīng)典的基于深度學習的文本分類模型。之后,研究者陸續(xù)提出了許多基于TextCNN的改進方案。Xiao等人[10]提出了基于CNN的字符級別的分類模型,在CNN的基礎(chǔ)上加上了一層循環(huán)層來捕獲句子中長期依賴的信息。Conneau等人[11]則是通過增加CNN的深度來獲取序列上的依賴信息。Johnson和Zhang[12]研究了如何加深CNN的詞粒度對文本進行全局表達,提出一種簡單的金字塔型的CNN網(wǎng)絡(luò)結(jié)構(gòu),既增加了網(wǎng)絡(luò)深度、提升了準確率,又沒有過多地增加計算量。
受到TextCNN的啟發(fā),并考慮到RNN在處理文本數(shù)據(jù)時的優(yōu)勢,也有研究者使用RNN及其變體結(jié)構(gòu)對文本進行建模并分類。Liu等人[6]利用LSTM結(jié)構(gòu)對文本進行編碼,同時為了解決單個任務(wù)中標注數(shù)據(jù)較少的問題,基于RNN設(shè)計了三種不同的信息共享機制進行訓(xùn)練,并在四個基準的文本分類任務(wù)中都獲得了較好的效果。為了解決RNN在對長文本進行編碼時存儲單元不足的問題,Xu等人[13]提出了一種具有高速緩存的LSTM結(jié)構(gòu)來捕獲長文本中的整體語義信息,從而使網(wǎng)絡(luò)能夠在一個循環(huán)單元中更好地保存情感信息。
除了能夠捕捉長文本上的序列信息,RNN用于文本分類的另一個優(yōu)勢在于其可以很好地與注意力機制(attention mechanism)結(jié)合,在文本建模時把注意力重點放在關(guān)鍵信息上,從而提高文本分類的效果。注意力機制最初是在計算機視覺領(lǐng)域提出的[14],在自然語言處理領(lǐng)域,注意力機制最先被引入到機器翻譯任務(wù)的基于RNN的編解碼器模型中[15]。注意力機制通過目標向量對輸入序列打分,把注意力集中在輸入序列中更重要的部分,使輸出結(jié)果更加精確,因而逐漸被推廣應(yīng)用到包括文本分類在內(nèi)的多種的NLP任務(wù)中。
在處理由許多句子組成的長文檔表示時,直接把文檔作為長序列處理,會忽略掉文檔的層次結(jié)構(gòu)中包含的信息,因此有研究者采用分層的神經(jīng)網(wǎng)絡(luò)模型對文檔建模來進行文本分類。Tang等人[7]構(gòu)建了自底向上的文檔表示方法,先用CNN對句子進行編碼,然后利用帶有門控結(jié)構(gòu)的RNN構(gòu)建文檔表示,最后通過softmax層得到分類結(jié)果,實驗證明,這種模型在當時得到了對長文檔分類的最好效果。類似地,Yang等人[8]提出了分層注意力模型,該模型將注意力機制納入分層GRU模型,使模型能更好地捕獲文檔的重要信息,進一步提高了長文檔分類的準確率。
為了捕捉長文本上的序列信息,同時更好地利用長文檔數(shù)據(jù)中的層次結(jié)構(gòu),本文提出基于層次混合注意力機制的文本分類模型(hierarchical mixed attention networks, HMAN),使用基于RNN的層次模型,引入注意力機制關(guān)注文本中的重要部分,在句注意力層通過提取句子中各維度的最大特征來獲取每個句子的重要特征。
模型的基本思想是: 按照單詞組成句子、句子組成文檔的層次結(jié)構(gòu)分別對句子和文檔編碼。為了把句子或文檔表示的語義重點放在其重要的組成成分上,在每個層級分別使用注意力機制。最后根據(jù)構(gòu)建的文檔表示對文檔分類。
通常注意力機制首先設(shè)定一個任務(wù)特定的目標向量并與輸入序列匹配,然后通過計算輸入序列中每個元素與目標向量的相似度來為其分配注意力得分,將得分歸一化后,對所有元素加權(quán)求和得到最終的表示結(jié)果。在文本分類中,以往的做法是在網(wǎng)絡(luò)中學習一個全局的上下文向量作為目標向量,通過計算每個單詞與目標向量的相似度對單詞打分。
然而,當所有類別共同使用一個目標向量時,它在每個特征維度上的信息就會相對平均,不能突出句子的顯著特征。即使句子里出現(xiàn)了具有明顯類別特征的詞,全局的目標向量也無法為它分配一個與其顯著性相匹配的注意力得分。
因此,HMAN模型在句注意力層使用混合的注意力機制,即除了使用全局目標向量之外,對每個句子構(gòu)建其特有的目標向量。直接從句子的詞向量矩陣中抽取每個維度上最大的值,也就是最明顯的信息作為句子特有的目標向量。
HMAN模型共有五層,自底向上分別為: 句編碼層、句注意力層、文檔編碼層和文檔注意力層和文檔分類層,模型結(jié)構(gòu)如圖1所示。
圖1 基于層次混合注意力機制的文本分類模型
在句編碼層,將句子中的每個詞依次輸入來構(gòu)建句子表示。為了獲取句子中的序列信息,使用RNN對句子建模。然而在基礎(chǔ)的RNN中,隨著序列在時間上的傳播,序列中的歷史信息會逐漸被遺忘,而誤差累積卻越來越多。因此在HMAN中,使用特殊的RNN結(jié)構(gòu)——門循環(huán)單元(gate recurrent unit, GRU)解決長期記憶和反向傳播中的梯度更新問題。
(3)
由于句子中每個單詞對分類目標的貢獻度是不一樣的,在編碼時對分類越重要的詞的權(quán)值應(yīng)該越大。因此在句注意力層,采用注意力機制給句子中的每個單詞計算一個注意力得分,然后通過單詞及其得分形成句子的向量表示。
特別地,在句注意力層,HMAN模型使用混合的注意力機制,除了使用全局目標向量vg之外,還為每個句子構(gòu)建其特有的目標向量vs。由于詞向量的每個維度都表示了一個屬性信息,類似于CNN中的最大池化(Maxpooling),直接從句子的詞向量矩陣中抽取每個維度上最大的值,也就是最明顯的信息作為句子特有的目標向量,更加突出具有明顯類別特征的語義信息。
圖2 使用Maxpooling提取目標向量
同時,設(shè)置一個全局的目標向量vg來表示“哪些單詞對于分類目標更重要”,在訓(xùn)練過程中隨機初始化并作為一個參數(shù)不斷學習。
(6)
然后對于句子中的所有單詞,分別計算它和兩個目標向量的相似度并歸一化,得到針對兩種目標向量的注意力得分,如式(7)~式(10)所示。
將兩個分數(shù)按照一定的權(quán)重相加作為最終的注意力分數(shù),根據(jù)所有單詞及其注意力分數(shù)得到句子的編碼,如式(11)所示。
(11)
通過這樣的方式,對于文檔中的每個句子都能得到其對應(yīng)的向量表示,并且文本里分類特征比較明顯的詞得到的權(quán)重會更大,在最終的句子表示中會占據(jù)主導(dǎo)地位。
在得到句子的向量表示s(i)后,類似句編碼層,同樣使用雙向GRU對s(i)編碼,如式(12)、式(13)所示。
(14)
文檔中的各個句子對文檔分類結(jié)果的貢獻程度也是不一樣的,因此在文檔注意力層,同樣使用注意力機制來對每個句子打分。這里我們只關(guān)注文檔的全局信息,因此使用一個文檔級別的全局目標向量vd來衡量句子的重要性。目標向量vd表示了“哪些句子更重要”,在訓(xùn)練過程中同樣被隨機初始化并共同學習。
類似句注意力層,首先需要用全連接層對句子的注解h(i)進行處理,如式(15)所示。
h′(i)=tanh(Wdh(i)+bd)
(15)
然后根據(jù)文檔級別的全局目標向量vd計算相似度并歸一化,得到注意力得分,然后通過加權(quán)的方式得到包含了文檔中全部句子信息的文檔向量d,如式(16)~式(18)所示。
文檔向量d是文檔的高階表示,可以直接用作文檔分類的特征,通過softmax來計算每個類別的概率,如式(19)所示。
p=softmax(Wcd+bc)
(19)
整個模型訓(xùn)練過程中使用交叉熵作為損失函數(shù),如式(20)所示。
(20)
其中,pdj是文檔d屬于類別j的概率。
綜上,HMAN模型首先用雙向GRU和混合的注意力機制對句子編碼,得到文檔中每個句子的向量表示;然后使用雙向GRU和基礎(chǔ)的注意力機制對文檔編碼。最終得到的文檔表示包含了文檔中所有句子的語義信息,而且重要句子占據(jù)了其中更大的比重。同樣,在每個句子中,特征越明顯的單詞比重也越大。最后,在文檔分類層,根據(jù)得到的文檔表示進行分類,可以得到文檔對應(yīng)每個類別的概率?;谶@樣的層次結(jié)構(gòu)可以得到類別特征更加明顯的文檔表示。
為驗證HMAN模型的效果,本文設(shè)計了兩組實驗,一組使用公開數(shù)據(jù)集,另一組是在企業(yè)年報數(shù)據(jù)這類具有層次結(jié)構(gòu)的長文本數(shù)據(jù)集上進行驗證,數(shù)據(jù)集的統(tǒng)計信息如表1所示。
表1 實驗數(shù)據(jù)集統(tǒng)計信息(單位: 字)
第一組實驗采用的是復(fù)旦大學中文文本分類數(shù)據(jù)集和GitHub官網(wǎng)下載的今日頭條短文本分類數(shù)據(jù)集。復(fù)旦大學中文文本分類數(shù)據(jù)集共有20個類別,9 832條數(shù)據(jù)。今日頭條短文本分類數(shù)據(jù)集共有382 688條數(shù)據(jù),15個類別,將“新聞標題”信息作為文本數(shù)據(jù),“分類名稱”信息作為分類標簽。
第二組實驗采用的上市公司年報數(shù)據(jù)集共有31 230條企業(yè)年報數(shù)據(jù),以“董事會討論”信息作為文本數(shù)據(jù),分別提取一級分類和二級分類作為分類標簽進行文本分類,其中一級分類共有18類,二級分類共有78類。
在訓(xùn)練過程中,將數(shù)據(jù)集中的全部數(shù)據(jù)按9∶1劃分為訓(xùn)練集和測試集,訓(xùn)練集中又取10%作為開發(fā)集。
實驗將HMAN模型與以下分類模型進行比較:
(1)基于機器學習的分類模型:貝葉斯模型、決策樹模型。其中貝葉斯模型分別訓(xùn)練伯努利貝葉斯分類器[1]和多項式樸素貝葉斯分類器[16],決策樹模型分別訓(xùn)練基于信息熵的ID3決策樹[17]和基于GINI不純度的CART決策樹[18]。
(2)基于深度學習的分類模型:包括不使用層次模型的TextCNN[5]、TextRNN[19],以及使用層次模型的HAN[8]。
HMAN模型的部分訓(xùn)練參數(shù)設(shè)置如表2所示。其中批量樣本的大小設(shè)為32,GRU中隱藏單元的個數(shù)為50,詞向量的維度為200,Adam優(yōu)化算法中的學習率為0.001,梯度裁剪的閾值為5。句注意力層的超參數(shù)λ經(jīng)過調(diào)整和驗證,在λ=0.2時取得的效果最好。
表2 HMAN部分訓(xùn)練參數(shù)設(shè)置
第一組實驗對比了傳統(tǒng)機器學習算法、卷積神經(jīng)網(wǎng)絡(luò)文本分類模型TextCNN、循環(huán)神經(jīng)網(wǎng)絡(luò)文本分類模型HAN以及本文提出的HMAN,實驗結(jié)果如表3所示,其中,TextCNN模型、HAN模型與HMAN模型取分類效果收斂之后的十次平均分類準確率作為分類結(jié)果。
表3 各模型在公開數(shù)據(jù)集上的分類結(jié)果
樸素貝葉斯模型假設(shè)屬性之間是相互獨立的,但是在實際應(yīng)用中,這個假設(shè)往往不成立,在屬性數(shù)目比較多時,樸素貝葉斯的性能表現(xiàn)不好。KNN算法在K取值為1時,在復(fù)旦大學中文數(shù)據(jù)集上取得的效果較好,在今日頭條短文本分類數(shù)據(jù)集上的效果較差,KNN算法的K值與數(shù)據(jù)集本身有很大的關(guān)系,K值的確定目前還沒有特定的經(jīng)驗公式,因此在對新的數(shù)據(jù)集進行訓(xùn)練時,需要重新對K取不同的值進行實驗來確定最佳K值。在兩組實驗數(shù)據(jù)集上,GINI不純度決策樹的分類準確率比信息熵決策樹的分類準確率要高。這是由于信息熵對不純度的敏感度要高于基尼系數(shù),因此當把信息熵作為指標時,決策樹的生長會更加“精細”,在數(shù)據(jù)的維度高或者數(shù)據(jù)噪聲大時,信息熵很容易過擬合。
TextCNN在兩組數(shù)據(jù)集上都取得了很好的分類效果,均高于傳統(tǒng)機器學習分類模型的準確率。HAN分類效果略高于TextCNN。HMAN模型在公開數(shù)據(jù)集上取得了與HAN相當?shù)慕Y(jié)果,在復(fù)旦大學數(shù)據(jù)集上,HMAN模型的分類準確率達到95.43%,略好于HAN模型,差異值為0.014左右。在今日頭條短文本分類數(shù)據(jù)集上,HMAN模型的分類準確率達到87.81%,和HAN模型效果相當,差異值為0.001左右。相比短文本,HMAN模型更能關(guān)注到長文本中最具區(qū)別性的語義特征,效果更好。
為驗證HMAN模型在具有層次結(jié)構(gòu)的長文本數(shù)據(jù)集上的性能,本節(jié)采用上市公司的年報數(shù)據(jù)庫數(shù)據(jù),企業(yè)年報數(shù)據(jù)庫提供了企業(yè)董事會信息和經(jīng)營產(chǎn)品信息包括: 記錄ID、股票代碼、股票簡稱、行業(yè)分類、產(chǎn)品名稱、董事會討論、主要產(chǎn)品、經(jīng)營范圍、年份等字段。其中,“董事會討論”是企業(yè)董事會討論與分析的文本內(nèi)容,“行業(yè)分類”根據(jù)不同粒度劃分為四個級別。
本組實驗以“董事會討論”信息作為文本數(shù)據(jù),分別提取一級分類和二級分類作為分類標簽進行文本分類,確定企業(yè)所屬類別。其中一級分類共有18類,二級分類共有78類。企業(yè)年報數(shù)據(jù)示例如表4所示。
表4 企業(yè)年報數(shù)據(jù)示例
各模型在一級行業(yè)分類和二級行業(yè)分類的準確率如表5所示??梢钥闯?,基于深度學習的文本分類模型整體效果好于基于機器學習的分類模型。一方面,基于機器學習的分類模型會依賴某種規(guī)則,約束了分類的準確率;另一方面,特征工程會對基于機器學習的分類模型的分類結(jié)果產(chǎn)生很大影響,這里使用了基于文檔的統(tǒng)計信息的詞頻和逆文檔頻率作為文本特征,不能表示文本的語義。而基于深度學習的文本分類模型使用了包含單詞上下文信息的語義特征,同時用CNN或RNN能進一步提取文本序列的特征,更有助于對文本進行分類。
表5 各模型行業(yè)分類準確率(%)
對于不使用層次模型的TextCNN和TextRNN,TextCNN使用不同大小的卷積核可以提取文檔中不同窗口大小的固定特征,而TextRNN可以捕捉文本序列中的依賴信息,同時注意力機制的使用可以使編碼后的文檔向量更關(guān)注文本中的重要特征。兩者均有各自的優(yōu)勢,在一級分類的結(jié)果上不分伯仲,而在類別較多的二級分類上TextRNN略好于TextCNN。另一方面,在訓(xùn)練效率上TextCNN相對TextRNN要快很多。
使用層次模型可以進一步提高分類效果。HAN和HMAN在一級分類和二級分類上的準確率均明顯高于不使用層次模型的TextCNN、TextRNN。這說明引入文檔的層次結(jié)構(gòu)可以在不同層級分別關(guān)注文本的句子特征和文本特征,有助于提升文檔級別的文本分類的效果。
本文提出的HMAN在句子級別的注意力機制中,在全局目標向量的基礎(chǔ)上,從詞向量矩陣中利用最大池化提取句子中每個維度上的最大特征作為目標向量,能夠更加突出具有明顯類別特征的語義信息,分類效果好于HAN。
另外,為了觀察基于深度學習的分類模型在訓(xùn)練過程中的變化趨勢,以一級分類為示例繪制了各模型在開發(fā)集上的準確率變化曲線,如圖3所示。從圖3中可以看出,由于直接通過提取的方式獲得目標向量,不需要額外的參數(shù)訓(xùn)練,HMAN的收斂速度比HAN快。
圖3 一級分類準確率變化曲線
從表5也可以看出,無論采用何種分類模型,二級分類的準確率都明顯低于一級分類準確率。主要原因在于: 一級分類只有18類,而二級分類有78類,類別數(shù)量越多,分類產(chǎn)生的錯誤可能就越多。由于一級分類粒度較大,各類別的區(qū)分度比較明顯,因此比較容易捕獲文本的類別特征。由于二級分類是在一級分類的基礎(chǔ)上進行的細分,同一大類的各個小類的區(qū)分性也不大,特征不夠明顯,因此會對分類的準確度造成影響。
綜合上述分析,HMAN模型在分類準確率和模型的性能上都達到了預(yù)期的實驗效果,在實驗數(shù)據(jù)集為結(jié)構(gòu)化長文本時,更能體現(xiàn)出HMAN模型的分類優(yōu)勢。
本文研究基于深度學習的文本分類算法,提出基于層次混合注意力機制的文本分類模型HMAN。首先,改進分層注意力模型,在句編碼時,提出為文本中每個句子設(shè)置特定的目標向量,結(jié)合全局目標向量,按照一定的權(quán)重對所有詞項及其注意力得分進行綜合得到句編碼。然后,通過分層注意力模型中文檔編碼層、文檔注意力層和文檔分類層,獲得文檔對應(yīng)每個類別的概率,即實現(xiàn)文本分類。通過對公開數(shù)據(jù)集和企業(yè)年報數(shù)據(jù)上的數(shù)據(jù)進行行業(yè)分類,實驗表明HMAN在一級分類和二級分類上的分類準確率均好于傳統(tǒng)機器學習的文本分類模型和當前已有的基于深度學習的文本分類模型。