張焱博,郭 凱
(北京郵電大學(xué),北京 102206)
隨著網(wǎng)絡(luò)發(fā)展的不斷推進(jìn),個(gè)性化推薦成為熱門領(lǐng)域。在文本信息不斷激增的當(dāng)下,有效化的挖掘文本信息、分析處理、歸納推理變得越來越迫切。繼深度學(xué)習(xí)不斷在視覺領(lǐng)域取得成果后,對(duì)自然語言文本分類也推出各種個(gè)性化算法進(jìn)行了多角度的研究。
傳統(tǒng)文本分類任務(wù)通常利用的是單一神經(jīng)網(wǎng)絡(luò)。目前常見的神經(jīng)網(wǎng)絡(luò)有:CNN、RNN、Fasttext、LSTM[1]。CNN網(wǎng)絡(luò)結(jié)構(gòu)簡單,參數(shù)少且訓(xùn)練速度快,但是模型只能提取到位置相近詞語的特征,難以融合間隔很長的詞之間的特征。Facebook設(shè)計(jì)并開源了Fasttext,一種詞向量計(jì)算和文本分類工具[2],它基于淺層網(wǎng)絡(luò)設(shè)計(jì),通過保留文本的低層信息,可取得和深度網(wǎng)絡(luò)相媲美的精確度,但在較復(fù)雜的文本中表現(xiàn)比較無力。 RNN應(yīng)用于文本分類中,可有效記憶全文文本信息特征。但RNN網(wǎng)絡(luò)長序列中較早出現(xiàn)的文本易被遺忘,存在梯度消失和爆炸的情況。用LSTM進(jìn)行文本情感分類的研究方法是對(duì)RNN神經(jīng)網(wǎng)絡(luò)的改進(jìn),通過增加門機(jī)制,對(duì)文本前端的信息選擇性的保留和遺忘,相較于CNN更適合學(xué)習(xí)時(shí)間序列。但是隨著文本增長,LSTM仍易丟失文本前端的信息,且表征性不夠強(qiáng)。
為此,本文結(jié)合卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)以及詞向量平均的三種模型和其特點(diǎn),提出一種基于Fasttext有效融合多特征的文本分類模型。實(shí)驗(yàn)將網(wǎng)上的新聞作為數(shù)據(jù)集,將其詞向量作為CNN層、雙向LSTM層和Fasttext層的輸入,通過CNN和Bi-LSTM提取深層特征并賦予Attention權(quán)重。有效提升了文本分類的精準(zhǔn)性。
CNN即卷積神經(jīng)網(wǎng)絡(luò),與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相對(duì)比,網(wǎng)絡(luò)架構(gòu)相似,仍是層級(jí)網(wǎng)絡(luò),層的功能和形式有區(qū)別。它主要通過卷積層和子采樣層對(duì)輸入數(shù)據(jù)局部進(jìn)行特征提取,并逐層組合得到全局信息,獲得最終輸出層結(jié)果。
RNN即循環(huán)神經(jīng)網(wǎng)絡(luò),作為序列處理的神經(jīng)網(wǎng)絡(luò),序列位置的隱藏狀態(tài)由當(dāng)前位置的輸入與前序位置的輸入共同決定。RNN具有循環(huán)單元,它記憶前序信息并在網(wǎng)絡(luò)中保存,為之后的計(jì)算提供記憶。但是對(duì)于一些較長的序列,循環(huán)單元中較早的輸入強(qiáng)度越來越低。針對(duì)RNN短期記憶問題,創(chuàng)建了長短期記憶網(wǎng)絡(luò)(LSTM)。LSTM模型只能記憶序列t位置之前的信息,無法用之后的信息進(jìn)行分析。Bi-LSTM[3-4]突出(Bi-directional)雙向特性,包含前、后向LSTM,前向網(wǎng)絡(luò)記錄t位置之前的信息,后向網(wǎng)絡(luò)記錄t位置之后的信息,二者的輸出共同決定序列當(dāng)前位置的輸出,能夠更好地捕捉雙向語義依賴。
Fasttext文本分類工具采用N-Gram結(jié)構(gòu),基于詞向量化的淺層網(wǎng)絡(luò),訓(xùn)練與測(cè)試高效快速。具體做法是把N-gram作為詞向量輸入,隱藏層對(duì)詞向量做疊加平均,得到文本向量,最后連接輸出層,得到特征。
Attention機(jī)制最初被用于圖像領(lǐng)域[5]。Attention機(jī)制是在一個(gè)序列中學(xué)習(xí)到每一個(gè)元素的重要程度,并對(duì)每一個(gè)元素分配相應(yīng)的權(quán)重,從而提取出相關(guān)度更高的部分,提升模型的精確程度。Attention機(jī)制的實(shí)質(zhì)是一個(gè)尋址(addressing)過程,給定一個(gè)和任務(wù)相關(guān)的Query,稱作向量q,通過計(jì)算與Key的相關(guān)程度并將其附加于Value,從而得到表示相關(guān)程度的Attention Value。如圖1。
圖1 Attention機(jī)制結(jié)構(gòu)圖
本文提出一種AT-LSTM-CNN-FASTTEXT的混合模型文本分類。模型結(jié)構(gòu)如下圖2所示。主要包含6個(gè)模塊:輸入層、卷積神經(jīng)網(wǎng)絡(luò)層、雙向LSTM層、注意力計(jì)算層、Fasttext層、預(yù)測(cè)層。
圖2 AT-LSTM-CNN-FASTTEXT模型結(jié)構(gòu)
1) 輸入層對(duì)文本預(yù)處理,將每個(gè)詞構(gòu)建成詞向量表示。
2) 雙向LSTM層與卷積神經(jīng)網(wǎng)絡(luò)層分別將輸入層的詞向量作為輸入,得到深層詞向量的特征表示。
3) 注意力計(jì)算層將雙向LSTM層與卷積神經(jīng)網(wǎng)絡(luò)層的輸出特征作為輸入,為雙向LSTM層輸出的每個(gè)深層詞向量計(jì)算合適的注意力權(quán)重值。
4) Fasttext層將輸入層的詞向量進(jìn)行2-gram處理,作為自己的輸入并作疊加平均,得到詞向量的淺層表示。
5) 將Fasttext層的輸出與注意力計(jì)算層的輸出拼接并作為預(yù)測(cè)層的輸入,預(yù)測(cè)層基于該特征預(yù)測(cè)文本分類。
基于注意力機(jī)制的分類模型輸入由中文詞向量構(gòu)成。將詞序列轉(zhuǎn)換為詞向量W={w1,w2,w3,…,wn},wi∈Rm,其中:n表示分詞后token的數(shù)量,m表示為詞向量維度。
LSTM神經(jīng)網(wǎng)絡(luò)適合捕捉文本中長或短時(shí)依賴,且雙向LSTM網(wǎng)絡(luò)可以通過向前的狀態(tài)與向后的狀態(tài)分別捕捉到前時(shí)間步長與后時(shí)間步長。相應(yīng)的,雙向LSTM網(wǎng)絡(luò)可以同時(shí)考慮到上下文的內(nèi)容。本模型將W作為輸入,雙向LSTM的前向處理與后向處理步驟如下
(1)
(2)
定義一個(gè)卷積層為用大小為x×y的卷積核P對(duì)輸入矩陣X進(jìn)行卷積操作。每行的輸出結(jié)果如下:
(3)
其中:a代表卷積網(wǎng)絡(luò)中的第a個(gè)通道,X(i,i+r-1)是第i至第i+r-1行特征,b是偏置量,f是BatchNorm2d歸一化處理,ReLu是線性整流函數(shù),ri是通過卷積操作得到的第i行輸出結(jié)果,設(shè)置濾波器縱向移動(dòng)步長為1,最終得到的卷積結(jié)果為
Ra=[r1,r2,…,rn-r+1]T
(4)
對(duì)得到的局部特征進(jìn)行Max Pooling處理提取的局部最大特征代替局部特征,以減小特征數(shù)量
(5)
(6)
Ca=Conv(X)
(7)
對(duì)于每一個(gè)CNN模塊,有
Cj=Conv_3(W)
(8)
其中Conv_3代表對(duì)輸入詞向量做3次Conv操作,j代表第j個(gè)CNN模塊的輸出。將所有CNN模塊的輸出進(jìn)行拼接,得到卷積神經(jīng)網(wǎng)絡(luò)層的輸出
U=[C1,C2,…,CJ]
(9)
其中J為卷積神經(jīng)網(wǎng)絡(luò)層中CNN模塊的個(gè)數(shù)。
CNN神經(jīng)網(wǎng)絡(luò)只能學(xué)習(xí)位置相近的文本特征,LSTM神經(jīng)網(wǎng)絡(luò)在長文本下容易丟失文本前端信息。因此采用Attention機(jī)制,將CNN與Bi-LSTM的高層特征融合,進(jìn)而彌補(bǔ)Bi-LSTM丟失前端信息的問題。根據(jù)卷積神經(jīng)網(wǎng)絡(luò)的深層特征對(duì)雙向LSTM網(wǎng)絡(luò)的深層特征分配注意力權(quán)重,得到融合特征表示。經(jīng)過Attention機(jī)制賦予權(quán)重,深層特征表示如下
Z=α·HT
(10)
其中,α為打分函數(shù)score函數(shù)經(jīng)過softmax處理得到的結(jié)果,代表雙向LSTM深層特征中第i個(gè)特征的注意力權(quán)重值,其公式為
α=softmax(score)
(11)
(12)
對(duì)輸入層詞向量W進(jìn)行2-gram處理。對(duì)于每相鄰兩個(gè)詞向量,計(jì)算它們的平均詞向量
(13)
拼接每個(gè)平均詞向量得到
V=[v1,v2,…,vn-1]
(14)
在詞向量的維度上,對(duì)每個(gè)詞求平均得到Fasttext層的輸出
(15)
因?yàn)榻?jīng)Attention機(jī)制計(jì)算權(quán)重的深層特征與淺層特征互補(bǔ),將注意力計(jì)算層得到的輸出H與Fasttext層K進(jìn)行拼接得到預(yù)測(cè)層的輸入I
I=[H,K]
(16)
(17)
實(shí)驗(yàn)開發(fā)環(huán)境是Pytorch 1.6.0,開發(fā)工具使用Jupyter notebook。計(jì)算機(jī)操作系統(tǒng)Windows10, CPU:Intel Core i7-8750H,顯卡:GeForce GTX 1060,內(nèi)存:DDR4 16G,
本文實(shí)驗(yàn)以清華大學(xué)的THUCNew數(shù)據(jù)集為依托。該數(shù)據(jù)集具有財(cái)經(jīng)、彩票、房產(chǎn)等14個(gè)類別。本文選出其中科技、時(shí)政、娛樂、體育、房產(chǎn)、家居、游戲、教育、財(cái)經(jīng)、時(shí)尚共10個(gè)類別,每個(gè)類別的數(shù)據(jù)6500條。訓(xùn)練集由其中的90%構(gòu)成,測(cè)試集選用剩余的10%。對(duì)每條語料進(jìn)行清洗,使用jieba對(duì)語料進(jìn)行分詞處理操作。若語料長度超過500,取前250個(gè)字與后250個(gè)字做拼接處理。詞向量采用預(yù)訓(xùn)練的中文維基百科詞向量,每個(gè)詞向量維度是300。
本實(shí)驗(yàn)?zāi)P椭蠧NN層所使用的參數(shù)見表1。對(duì)于每次卷積操作得到的結(jié)果進(jìn)行BatchNorm2d操作以增強(qiáng)網(wǎng)絡(luò)穩(wěn)定性。
表1 CNN網(wǎng)絡(luò)參數(shù)
Bi-LSTM層選擇Adam為優(yōu)化函數(shù),所使用的參數(shù)見表2。
表2 雙向LSTM網(wǎng)絡(luò)參數(shù)
4.3.1 采用預(yù)訓(xùn)練詞向量的完整數(shù)據(jù)集實(shí)驗(yàn)
將本文提出的模型(AT-LSTM-CNN-FASTTEXT)與Bi-LSTM模型、CNN模型、無FASTTEXT模塊的融合模型(AT-LSTM-CNN)在完整預(yù)處理數(shù)據(jù)集上實(shí)驗(yàn),對(duì)比模型的超參數(shù)與本方法中超參數(shù)相同。圖3、圖4分別給出了AT-LSTM-CNN-FASTTEXT模型、CNN模型、Bi-LSTM模型、無FASTTEXT模塊的融合模型的準(zhǔn)確率與損失函數(shù)變化圖。
圖3 各類模型實(shí)驗(yàn)準(zhǔn)確率變化
圖4 各類模型損失函數(shù)變化
由表3可以發(fā)現(xiàn),本文模型收斂速度快且準(zhǔn)確率均高于AT-LSTM-CNN、CNN、Bi-LSTM幾種模型。在epoch為1時(shí),本文提出的模型分類準(zhǔn)確率比AT-LSTM-CNN模型提升2.5%,比CNN模型提升了2.4%,比Bi-LSTM模型提升88%。這是因?yàn)楫?dāng)epoch少時(shí),CNN, AT-LSTM-CNN等深層網(wǎng)絡(luò)無法較好的學(xué)習(xí)到深層特征,而本文模型中FASTTEXT模塊可以較好的捕捉到淺層特征并迅速調(diào)整參數(shù),使得本文模型有更好的收斂性。當(dāng)epoch為2時(shí),AT-LSTM-CNN模型與本文模型分類準(zhǔn)確率相差1.6%,CNN模型與本文模型分類準(zhǔn)確率相差0.7%。對(duì)比圖4發(fā)現(xiàn),除Bi-LSTM的損失函數(shù)基本保持不變外,其它模型損失函數(shù)減小到穩(wěn)定值的速度慢于本文模型,但在4 epoch后均下降到一個(gè)相近的穩(wěn)定值,除Bi-LSTM模型外,都有較好的收斂效果。原因?yàn)锽i-LSTM容易丟失文本前端的信息,導(dǎo)致信息在迭代過程中丟失。對(duì)比不同模型在各epoch下的準(zhǔn)確率可以發(fā)現(xiàn),本文模型在第1個(gè)epoch便取得最佳效果。
表3 各模型準(zhǔn)確率(%)隨epoch數(shù)的變化
4.3.2 采用預(yù)訓(xùn)練詞向量的部分?jǐn)?shù)據(jù)集實(shí)驗(yàn)
本文不僅在整個(gè)數(shù)據(jù)集上與其它模型進(jìn)行對(duì)比,還按照不同的比例對(duì)訓(xùn)練集選取一定量的數(shù)據(jù)進(jìn)行訓(xùn)練。不同百分比對(duì)應(yīng)數(shù)據(jù)量見表4。在epoch為1的前提下,不同模型分類預(yù)測(cè)準(zhǔn)確率的變化見表5。
表4 訓(xùn)練集數(shù)據(jù)量占比
表5 1 epoch下分類預(yù)測(cè)準(zhǔn)確率(%)隨數(shù)據(jù)量的變化
訓(xùn)練數(shù)據(jù)量分別為5000,25000,50000時(shí),本文模型、CNN模型、Bi-LSTM模型與去除FASTTEXT模塊的融合特征模型(AT-LSTM-CNN)的分類準(zhǔn)確率,如圖5-圖7所。
圖5 數(shù)據(jù)量5000時(shí)各模型準(zhǔn)確率
圖6 數(shù)據(jù)量25000時(shí)各模型準(zhǔn)確率
圖7 數(shù)據(jù)量40000時(shí)各模型準(zhǔn)確率
通過對(duì)比發(fā)現(xiàn),本文AT-LSTM-CNN-FASTTEXT融合模型訓(xùn)練數(shù)據(jù)條數(shù)為5000時(shí),在收斂速度上明顯強(qiáng)于AT-LSTM-CNN融合特征模型。在1 epoch下,由于訓(xùn)練數(shù)據(jù)集較小,較復(fù)雜的AT-LSTM-CNN網(wǎng)絡(luò)在epoch較少時(shí)難以對(duì)更多的參數(shù)有效的調(diào)整,而本文模型中的FASTTEXT模塊可以較快速準(zhǔn)確的學(xué)習(xí)文本的淺層特征,使得本文模型準(zhǔn)確度比單CNN模型高7%,比AT-LSTM-CNN模型高出約20%。隨著訓(xùn)練數(shù)據(jù)集的變大,本文模型在epoch為1時(shí)的準(zhǔn)確率不斷提升且在epoch增加的情況下準(zhǔn)確率始終高于CNN、Bi-LSTM、AT-LSTM-CNN模型,當(dāng)數(shù)據(jù)集為整個(gè)測(cè)試集時(shí),本文模型在1 epoch條件下準(zhǔn)確率在四種模型中最高,具有更快收斂速度。
4.3.3 采用未訓(xùn)練詞向量的完整數(shù)據(jù)集實(shí)驗(yàn)
將AT-LSTM-CNN-FASTTEXT模型、CNN模型、Bi-LSTM模型、AT-LSTM-CNN模型在未引入預(yù)訓(xùn)練詞向量的不同大小訓(xùn)練集上進(jìn)行訓(xùn)練,數(shù)據(jù)的大小同表4,在epoch為1的前提下,隨數(shù)據(jù)量的變化,準(zhǔn)確率見表6。
表6 無預(yù)訓(xùn)練詞向量1 epoch下分類預(yù)測(cè)準(zhǔn)確率(%)隨數(shù)據(jù)量的變化
在訓(xùn)練集小的時(shí)候,具有注意力機(jī)制的AT-LSTM-CNN與AT-LSTM-CNN-FASTTEXT模型在1epoch下準(zhǔn)確度明顯高于CNN模型與Bi-LSTM模型。隨著訓(xùn)練資源增加,訓(xùn)練數(shù)據(jù)條數(shù)為10000時(shí),AT-LSTM-CNN與AT-LSTM-CNN-FASTTEXT兩模型分別比CNN模型準(zhǔn)確率高出4.6%與19.1%,AT-LSTM-CNN-FASTTEXT模型效果更優(yōu)。這表明通過使用LSTM與CNN特征進(jìn)行交互,具有Attention機(jī)制的模型捕捉到的特征相比單純使用CNN模型或Bi-LSTM模型更有效,具有更好的分類準(zhǔn)確率。
本文提出了一種基于Fasttext和LSTM、CNN的AT-LSTM-CNN-FASTTEXT混合模型進(jìn)行文本分類。該模型利用Fasttext對(duì)文本的淺層特征進(jìn)行提取,同時(shí)利用CNN網(wǎng)絡(luò)模型對(duì)文本局部特征提取,利用雙向LSTM網(wǎng)絡(luò)進(jìn)行全局文本特征提取并通過Attention機(jī)制將卷積神經(jīng)網(wǎng)絡(luò)的深層特征對(duì)雙向LSTM模型的特征分配注意力權(quán)重。將淺層特征與深層特征相結(jié)合對(duì)文本類別進(jìn)行預(yù)測(cè),充分考慮了局部文本與全局文本的語義信息。在實(shí)驗(yàn)過程中,對(duì)比本文模型、CNN模型、LSTM模型、AT-CNN-LSTM模型,結(jié)果表明,本文AT-LSTM-CNN-FASTTEXT融合特征模型能夠有效提取到文本淺層和深層特征,準(zhǔn)確率更高。本文僅依托THUCNews中的部分?jǐn)?shù)據(jù)集驗(yàn)證了模型的有效性,后續(xù)計(jì)劃針對(duì)不同分類任務(wù)進(jìn)行實(shí)驗(yàn),探究模型泛用性,并對(duì)模型進(jìn)一步改進(jìn)。