楊笑笑,陸 奎
(安徽理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232000)
文本分類是自然語(yǔ)言處理任務(wù)中的基礎(chǔ)性任務(wù),其目的是對(duì)文本信息進(jìn)行整理和歸類,同時(shí)也是解決文本信息過載問題的關(guān)鍵環(huán)節(jié)。由于其廣泛的學(xué)術(shù)和實(shí)際應(yīng)用價(jià)值,文本分類被應(yīng)用于情感分析、新聞分類、問答系統(tǒng)、主題分類、社交網(wǎng)絡(luò)等領(lǐng)域[1]。
文本分類的核心內(nèi)容是文本表示、特征提取和分類。其中,文本表示和特征提取是文本分類的關(guān)鍵。文本表示是將文本表示成向量形式。詞向量(word2vec)模型是常用的詞嵌入模型,它是靜態(tài)詞向量方法,共有2種:連續(xù)詞袋(continuous bag of words,CBOW)模型和skip-gram模型。但在不同語(yǔ)境下,word2vec生成的詞向量存在語(yǔ)義問題。如對(duì)于“我愛吃蘋果”和“他新買的蘋果手機(jī)”,word2vec模型不能有效分辨出前者的“蘋果”是指水果,而后者的“蘋果”是指公司,因此無法提取到正確的語(yǔ)義信息。在2018年,Google公司提出來自Transformer的雙向編碼器表征量(bidirectional encoder representations from Transformer,BERT)模型[2],很好地解決了這一問題。該模型將雙向 Transformer 用于語(yǔ)言模型,可以很好地學(xué)習(xí)上下文信息。最初,BERT模型預(yù)訓(xùn)練英文文本信息的效果更好,它能根據(jù)上下文預(yù)測(cè)詞的信息,但其缺乏對(duì)更大語(yǔ)義單元的建模,這個(gè)問題在中文領(lǐng)域更加明顯。對(duì)此,百度公司提出知識(shí)增強(qiáng)的語(yǔ)義表示(enhanced representation through knowledge integration,ERNIE)模型,在BERT模型的基礎(chǔ)上進(jìn)行改進(jìn),改變其掩碼策略,通過對(duì)中文實(shí)體和字進(jìn)行掩碼,增強(qiáng)了通用語(yǔ)義的表示能力,在多項(xiàng)任務(wù)中均大幅度超越了BERT模型的效果。
隨著深度學(xué)習(xí)的不斷發(fā)展,研究發(fā)現(xiàn)在特征提取任務(wù)中,深度學(xué)習(xí)方法效果比傳統(tǒng)方法好得多。卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNNs)模型被首次應(yīng)用到微博情緒分類中,并取得了不錯(cuò)的效果[3],之后它開始被大量應(yīng)用于文本分類領(lǐng)域。經(jīng)典CNNs模型致力于提取文本的局部特征,但會(huì)出現(xiàn)局部特征提取不完善的問題;對(duì)此,有學(xué)者采用不同卷積和池化操作再組合的方式以提取更多的局部特征信息[4],但容易忽略局部信息之間的依賴關(guān)系。循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)模型[5]被廣泛應(yīng)用于處理序列信息問題,它可以提取全局特征信息,但存在梯度消失和梯度爆炸的問題。RNN模型的變體——長(zhǎng)短期記憶(long short-term memory,LSTM)神經(jīng)網(wǎng)絡(luò)模型[6]通過引入門機(jī)制和細(xì)胞狀態(tài)方法,不僅解決了梯度問題,還可以捕獲到上下文長(zhǎng)期依賴信息。門控循環(huán)單元(gated recurrent unit,GRU)[7]和LSTM模型的效果相近;不同的是,GRU只有2個(gè)門:更新門和重置門,其結(jié)構(gòu)更加簡(jiǎn)單,需要訓(xùn)練的參數(shù)更少,相對(duì)更高效,因而被廣泛應(yīng)用。但是RNN模型及其變體將所有的特征信息看作同等重要,易丟失關(guān)鍵信息,而保留無關(guān)信息。針對(duì)不同模型各自存在的問題,將其融合在一起也表現(xiàn)出了較好的效果[8-13]。如雷景生等[14]為了更好地保留字的信息和多義性,在ERNIE模型后加入雙向門控循環(huán)單元(bidirectional gated recurrent unit,BiGRU),得到了較好的實(shí)驗(yàn)效果。Guo等[15]通過結(jié)合ERNIE模型和雙向長(zhǎng)短期記憶(bidirectional long short-term memory,BiLSTM)網(wǎng)絡(luò)模型的方法,保留了更多的中文語(yǔ)義信息,在分類任務(wù)中獲得了良好的效果。齊夢(mèng)娜等[16]融合ERNIE模型和多通道CNNs模型的方法,在在線評(píng)論情感文本分類上取得了較好的效果。但這類模型僅在一方面提取文本特征信息,要么忽略了上下文信息,要么忽略了句子中的關(guān)鍵信息。因此,針對(duì)現(xiàn)有模型存在的問題,提出了一種融合ERNIE、CNNs、BiGRU的注意力機(jī)制(integration of ERNIE and CNNs-BiGRU′s attention mechanism,ECBA)模型,通過組合局部特征信息和全局特征信息的方法,提高文本分類的準(zhǔn)確性。具體過程如下。
1) 通過ERNIE模型生成動(dòng)態(tài)詞向量。
2) 組合多尺度卷積核:設(shè)置3個(gè)不同大小的卷積窗口,再經(jīng)過最大池化層處理融合特征,在一定程度上解決局部特征提取不完善的問題。
3) 為BiGRU模型引入注意力機(jī)制:使ECBA模型關(guān)注重要信息或關(guān)鍵信息,丟掉不重要信息或干擾信息。
ECBA模型架構(gòu)如圖1所示。由圖1可知,ECBA模型的結(jié)構(gòu)分為文本表示層、特征提取層和全連接層3個(gè)部分。首先在文本表示層,通過ERNIE模型預(yù)訓(xùn)練出詞向量作為模型的文本表示;然后在特征提取層,使用CNNs模型提取局部特征,為獲取更全面的局部特征信息,改變CNNs的模型結(jié)構(gòu),設(shè)置3個(gè)不同大小的卷積窗口;同時(shí)使用BiGRU模型提取全局特征,為能提取到重要信息,在該模型的前向GRU和反向GRU中加入注意力機(jī)制,加大重要信息權(quán)重,之后融合局部特征和全局特征;最后,通過全連接層輸出結(jié)果。
圖1 ECBA模型的架構(gòu)Fig.1 ECBA model structure
文本表示層目的是將輸入的文本信息轉(zhuǎn)換成向量表示。ECBA模型采用ERNIE模型生成文本表示。和其他詞向量模型不同,ERNIE模型是由雙向Transformer組成,可以很好地解析中文文本并且學(xué)習(xí)文本中上下文的語(yǔ)義信息,將中文文本轉(zhuǎn)化為動(dòng)態(tài)詞向量。
BERT和ERNIE模型的掩碼策略對(duì)比如圖2所示。由圖2可知,原生的BERT模型是對(duì)單個(gè)字進(jìn)行掩碼,忽略了字與字之間的關(guān)系,會(huì)使1個(gè)詞被迫分開;而ERNIE模型在BERT模型的基礎(chǔ)上對(duì)掩碼策略進(jìn)行了改進(jìn),對(duì)中文實(shí)體或詞進(jìn)行掩碼操作,考慮了上下文之間的聯(lián)系,從而提取到更完整的語(yǔ)義信息,增強(qiáng)了語(yǔ)義表示能力。
(a) BERT的掩碼機(jī)制 (b) ERNIE的掩碼機(jī)制圖2 BERT模型和ERNIE模型掩碼策略對(duì)比Fig.2 Comparison of mask policies between BERT model and ERNIE model
ERNIE模型的核心是基于Transformer的編碼結(jié)構(gòu),編碼方式在結(jié)構(gòu)上一樣,且不共享權(quán)重。ERNIE模型的單個(gè)編碼結(jié)構(gòu)如圖3所示。由圖3可知,編碼層輸入的是初始文本向量,經(jīng)過1個(gè)位置信息的嵌入,輸出到多頭自注意力機(jī)制層,進(jìn)行多頭自注意力計(jì)算。然后,ERNIE模型編碼結(jié)構(gòu)的輸出會(huì)經(jīng)過1個(gè)連接-正則化層,連接表示對(duì)來自多頭自注意力機(jī)制層的輸入和輸出進(jìn)行殘差連接,正則化表示對(duì)輸入和輸出進(jìn)行歸一化處理。歸一化處理后的結(jié)果會(huì)傳入前饋神經(jīng)網(wǎng)絡(luò)層,然后再經(jīng)過1個(gè)連接-正則化層,進(jìn)行同樣的處理后會(huì)輸出歸一化的詞向量列表。
圖3 單個(gè)編碼的結(jié)構(gòu)Fig.3 Single encoder structure
ERNIE模型的編碼層堆疊中,除最下面的編碼層外,其他編碼層的輸入都是其鄰接編碼層的輸出,最終經(jīng)過16個(gè)編碼層輸出文本向量表示作為特征提取層的輸入。
產(chǎn)生文本向量的基本過程為:1個(gè)文本按照句號(hào)劃分成n個(gè)文本段,T=[t1,t2,…,tn],ti=[e1,e2,…,ew],i=1,2,…n,w表示1個(gè)文本段的詞數(shù)。其中,ERNIE模型輸入為T,將文本段ti經(jīng)ERNIE模型訓(xùn)練后得到輸出詞向量X=[x1,x2,…,xw],xi的維度為d,即詞向量的維度,X作為特征提取層的輸入。
在特征提取層,使用BiGRU模型提取全局特征信息,使用CNNs模型提取局部特征信息。為解決可能出現(xiàn)的重要特征信息丟失問題,為BiGRU模型引入注意力機(jī)制,然后融合局部特征和全局特征并將其作為ECBA模型的特征表示。
GRU是循環(huán)神經(jīng)網(wǎng)絡(luò)的變體,為門控網(wǎng)絡(luò)結(jié)構(gòu),解決了長(zhǎng)時(shí)記憶和反向傳播中梯度消失的問題。與LSTM模型相比,GRU的結(jié)構(gòu)更加簡(jiǎn)單,只有更新門和重置門2個(gè)門;因此,需要訓(xùn)練和計(jì)算的參數(shù)更少,訓(xùn)練效率更高,常被應(yīng)用于自然語(yǔ)言處理任務(wù)中。為了捕獲到更加全面的特征信息,ECBA模型采用BiGRU模型提取特征信息,該模型可以在前向GRU和反向GRU中提取文本序列特征,然后在前向GRU和反向GRU中引入注意力機(jī)制,使模型關(guān)注到重要信息。BiGRU模型和注意力通道層(BiGRU-attention mechanism,BiGRU-A)的模塊結(jié)構(gòu)如圖4所示。
圖4 BiGRU-A模塊的結(jié)構(gòu)Fig.4 BiGRU-A module structure
(1)
(2)
注意力機(jī)制認(rèn)為在不同的網(wǎng)絡(luò)層中不同特征的重要性也不同,越向后的網(wǎng)絡(luò)所包含的重要信息越多、不重要信息越少。注意力機(jī)制通過為每個(gè)特征賦予權(quán)重的方法逐漸摒棄不重要的特征;權(quán)重越大,所對(duì)應(yīng)的特征越重要。在文本分類任務(wù)中,影響分類結(jié)果的特征信息才應(yīng)該是被關(guān)注的重點(diǎn)。所以在BiGRU模型的正向GRU和反向GRU中引入注意力機(jī)制,可以提高重要信息的權(quán)重,抑制不重要信息的權(quán)重。注意力機(jī)制的計(jì)算如下所示:
ut=tanh(wwht+bw),
(3)
其中,ut是隱藏層ht的向量表示,ww表示權(quán)重系數(shù),bw表示偏置系數(shù),tanh表示激活函數(shù)。
αt=softmax(utuw),
(4)
其中,αt表示得到的權(quán)重,uw是在訓(xùn)練階段隨機(jī)初始化的上下文向量。ut的重要性可以通過點(diǎn)積計(jì)算ut和uw得到的相似度來表示,另外,
(5)
其中,s表示所有隱藏狀態(tài)的加權(quán)組合。
(6)
其中,Ht表示融合注意力機(jī)制的前向GRU和反向GRU的特征信息;fatt表示注意力機(jī)制的計(jì)算。
CNNs模型的結(jié)構(gòu)如圖5所示。由圖5可知,該模型主要包含卷積層和池化層,卷積核是CNNs模型的核心,用于提取文本特征;池化層是為了降低卷積向量維度,避免過擬合,有最大池化和平均池化2種方法。選用最大池化法,以便保留更重要的信息。
圖5 CNNs模型的結(jié)構(gòu)Fig.5 CNNs model structure
由圖5可知,ECBA模型設(shè)置3個(gè)不同大小的卷積核,卷積窗口分別是3、4、5,然后經(jīng)過最大池化層得到特征圖進(jìn)行拼接。由于融合后的特征維度過大,加1個(gè)隱藏層進(jìn)行降維處理,得到CNNs模型的輸出。最后,將得到的BiGRU-A模塊輸出和CNNs模型輸出拼接在一起,作為ECBA模型最終的特征表示。
c3,c4,c5=fConv(x),
(7)
其中,c3、c4、c5表示卷積后的詞向量結(jié)果,x為文本表示,fConv表示卷積操作。
(8)
(9)
(10)
(11)
其中,c表示不同大小卷積核經(jīng)最大池化處理后拼接的特征向量。
BiGRU-A模塊和CNNs模型特征提取分別得到了BiGRU-A模塊的全局特征向量FB_A和CNNs模型的局部特征向量FCNNs,然后對(duì)這2個(gè)特征向量進(jìn)行融合拼接,得到合并后的特征向量F,F=FB_A⊕FCNNs,⊕表示拼接計(jì)算。
在全連接層先對(duì)F進(jìn)行降維處理,另外在全連接層加入隨機(jī)失活層,避免出現(xiàn)過擬合,提高模型的泛化能力。最后經(jīng)softmax分類器來預(yù)測(cè)文本的類別,計(jì)算公式如下:
y=softmax(WconF+bcon) ,
(12)
其中,y為文本屬于所有類別的概率,Wcon為權(quán)重矩陣,bcon為偏置矩陣。
ypre=max(y),
(13)
其中,ypre為y中最大的概率,最后將ypre作為預(yù)測(cè)結(jié)果。
2.1.1 實(shí)驗(yàn)數(shù)據(jù)集 選用清華大學(xué)中文新聞(Tsinghua Chinese news, THUCNews)數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),部分樣本如表1所示。由表1可知,由于該數(shù)據(jù)集所含數(shù)據(jù)樣本較多,從中抽取體育、娛樂、家居、房產(chǎn)、教育、時(shí)尚、時(shí)政、游戲、科技和財(cái)經(jīng)10個(gè)類別的數(shù)據(jù),每個(gè)類別選用8000條作為訓(xùn)練集、2000條作為測(cè)試集,共計(jì)10萬(wàn)條數(shù)據(jù)。
2.1.2 實(shí)驗(yàn)環(huán)境 實(shí)驗(yàn)在Windows操作系統(tǒng)下進(jìn)行,實(shí)驗(yàn)平臺(tái)選用PyCharm、Python3.7,使用Pytorch框架構(gòu)建模型。實(shí)驗(yàn)中的大部分參數(shù)為模型的默認(rèn)參數(shù)。ERNIE模型的隱藏層數(shù)設(shè)置為768,BiGRU模型的隱藏層數(shù)設(shè)置為256,卷積核的個(gè)數(shù)為256,隨機(jī)失活參數(shù)設(shè)置為0.1,學(xué)習(xí)率設(shè)為0.00001,激活函數(shù)選用ReLU非線性激活函數(shù)。
1) 使用自然語(yǔ)言處理工具包(natural language toolkit,NLTK)對(duì)原文本進(jìn)行預(yù)處理,依次分句、分詞、去除停用詞;
2) 使用ERNIE模型對(duì)文本進(jìn)行預(yù)訓(xùn)練,得到增強(qiáng)語(yǔ)義的詞向量;
5) 將預(yù)訓(xùn)練的詞向量輸入到CNNs模型中,進(jìn)行3×k、4×k、5×k的卷積操作,將卷積結(jié)果分別送入最大池化層,對(duì)得到的結(jié)果進(jìn)行拼接操作,然后降維得到CNNs模型的輸出FCNNs;
6) 融合FB_A和FCNNs得到F,送入全連接層,通過softmax函數(shù)判斷類別;
7) 使用訓(xùn)練集訓(xùn)練模型,測(cè)試集驗(yàn)證模型。
實(shí)驗(yàn)采用準(zhǔn)確率(precision,P)、召回率(recall,R)、F1值來衡量分類模型的性能,計(jì)算公式如下:
(14)
(15)
(16)
其中,NTP表示預(yù)測(cè)是正類、實(shí)際也是正類的文本個(gè)數(shù);NFP表示預(yù)測(cè)是正類、實(shí)際是負(fù)類的文本個(gè)數(shù);NTN表示預(yù)測(cè)是負(fù)類、實(shí)際也是負(fù)類的文本個(gè)數(shù);NFN表示預(yù)測(cè)是負(fù)類、實(shí)際是正類的文本個(gè)數(shù)。
為了更好地比較不同模型的性能,在THUCNews數(shù)據(jù)集上設(shè)置了對(duì)照實(shí)驗(yàn),包括了BERT[2]、融合BERT和深層金字塔卷積神經(jīng)網(wǎng)絡(luò)(fusion of BERT and deep pyramid convolutional neural networks, BERT-DPCNN)模型[16]、BERT-BiLSTM[17]、ERNIE-LSTM-CNN[18]、ERNIE-BiGRU[14]模型。比較準(zhǔn)確率、召回率、F1值3種評(píng)價(jià)指標(biāo),結(jié)果如表2所示。由表2可知,相比其他模型,ECBA模型的準(zhǔn)確率、召回率、F1值都有不同程度的提升,分別達(dá)到了95.07%、95.01%、95.03%;其中,相較于BERT模型,性能提升最大。
表2 模型的比較Tab.2 Comparison of models
為了驗(yàn)證ECBA模型的局部模塊對(duì)分類效果的影響,在相同參數(shù)和相同實(shí)驗(yàn)環(huán)境的情況下,在THUCNews數(shù)據(jù)集上設(shè)計(jì)了一系列的消融實(shí)驗(yàn),結(jié)果如表3所示。其中,ERNIE-BiGRU-A模型去除CNNs模塊,以驗(yàn)證CNNs對(duì)模型的影響;ERNIE-CNNs模型去除BiGRU-A模塊,以驗(yàn)證BiGRU-A對(duì)模型的影響;CNNs-BiGRU-A模型改變?cè)~嵌入模塊,使用word2vec模型,驗(yàn)證詞向量對(duì)模型的影響。
表3 消融實(shí)驗(yàn)比較Tab.3 Comparison of ablation experiments
由表3可知,ERNIE-BiGRU-A模型的分類效果有所降低,這說明CNNs模塊提取的局部特征有利于分類;ERNIE-CNNs模型實(shí)驗(yàn)結(jié)果表明了在雙向GRU引入注意力機(jī)制,能保留重要特征,提高分類效果;CNNs-BiGRU-A模型實(shí)驗(yàn)結(jié)果驗(yàn)證了ERNIE模塊生成的詞向量可以提取到更多的語(yǔ)義信息。消融實(shí)驗(yàn)的結(jié)果最終說明,缺少現(xiàn)有任何模塊都會(huì)影響ECBA模型的分類準(zhǔn)確率,導(dǎo)致其降低。
針對(duì)中文語(yǔ)義提取不充分、特征提取不完善的問題,提出了一種融合ERNIE、CNNs、BiGRU的注意力機(jī)制ECBA模型。針對(duì)文本表示中的詞向量在不同語(yǔ)境下的詞語(yǔ)多義問題,使用ERNIE模型預(yù)訓(xùn)練出詞向量,增強(qiáng)中文文本的語(yǔ)義表示能力。在特征提取層,通過卷積神經(jīng)網(wǎng)絡(luò)模型提取局部特征,利用雙向GRU模型提取全局特征;為解決局部特征提取不完善和丟失關(guān)鍵特征信息的問題,設(shè)置多個(gè)不同大小的卷積窗口提取局部信息,并在雙向GRU中引入注意力機(jī)制捕獲關(guān)鍵信息,再融合局部特征和全局特征。最后通過全連接層輸出分類結(jié)果。最終實(shí)驗(yàn)表明,相較于其他對(duì)照模型,ECBA模型在準(zhǔn)確率、召回率、F1值上都得到了一定程度的提升。