曹澤炎,鄭 靜
(杭州電子科技大學(xué)經(jīng)濟(jì)學(xué)院,浙江 杭州 310018)
隨著社交媒體的廣泛應(yīng)用,互聯(lián)網(wǎng)中文本數(shù)據(jù)量急劇增長,這些文本數(shù)據(jù)包含社會(huì)成員豐富的行為信息,通過對(duì)這些文本的情感分析可以更加深入地了解人們對(duì)國際時(shí)事、國內(nèi)公共事件和個(gè)人生活模式的偏好,在輿論分析、資源推薦和法律挖掘中具有深遠(yuǎn)的影響。早期的文本分類方法主要是機(jī)器學(xué)習(xí)(Machine Learning,ML)方法和統(tǒng)計(jì)方法,如:毛偉等[1]使用鏈狀樸素貝葉斯分類器(Chain Augmented Naive Bayesian Classifier,CA-NBC)對(duì)中文文本進(jìn)行分類,得到良好的分類效果。Zhang D.W.等[2]基于詞性和詞典對(duì)分類文本進(jìn)行特征選擇,并使用改進(jìn)的支持向量機(jī)(Support Vector Machine for Multivariate Performance Measures,SVMperf)對(duì)文本進(jìn)行分類,雖然取得不俗的分類效果,但也存在對(duì)詞典過于依賴的弊端。劉東啟等[3]把自適應(yīng)合成采樣與支持向量機(jī)(Support Vector Machine,SVM)相結(jié)合,平衡每個(gè)類別的樣本數(shù)量,解決了不平衡數(shù)據(jù)集帶來的問題。深度學(xué)習(xí)(Deep Learning,DL)作為當(dāng)下最熱門的領(lǐng)域之一,在文本分類、自然語言處理領(lǐng)域也有不俗的表現(xiàn)。王儒等[4]提出語義聚類處理方法,在短文本數(shù)據(jù)集對(duì)話預(yù)測(cè)中取得了較好的結(jié)果。金占勇[5]基于長短期記憶網(wǎng)絡(luò)(Long Short Term Memory,LSTM)+word2vec[6]模型對(duì)突發(fā)災(zāi)害事件網(wǎng)絡(luò)輿情進(jìn)行情感識(shí)別,結(jié)果優(yōu)于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和傳統(tǒng)機(jī)器學(xué)習(xí)方法。
情感分類任務(wù)分為顯性情感分類和隱性情感分類。與顯性情感分類的任務(wù)相比,隱性情感分類的任務(wù)更困難,而中文情感表達(dá)往往是隱性的。從情感表達(dá)的語言層面來看,漢語詞匯沒有形態(tài)變化,獲取中文語義特征更加困難[7]。無監(jiān)督神經(jīng)網(wǎng)絡(luò)模型通過從大規(guī)模語料庫中學(xué)習(xí)得到詞語的向量化表示形式,在許多自然語言處理中取得了重要進(jìn)展,如word2vec模型訓(xùn)練捕獲的詞向量可以直觀計(jì)算詞語之間的異同。基于這一思想,本文使用word2vec模型訓(xùn)練獲得詞語的詞向量,用于深度學(xué)習(xí)模型建立前的數(shù)據(jù)預(yù)處理工作。
現(xiàn)實(shí)中,不平衡數(shù)據(jù)集占有一定的比重,中美貿(mào)易戰(zhàn)輿情評(píng)論數(shù)據(jù)集是典型的不平衡數(shù)據(jù)集,使用這種數(shù)據(jù)集進(jìn)行建模往往存在部分類別的分類準(zhǔn)確率較低的問題。Lin T.Y.等[8]提出Focal Loss函數(shù)(FL),通過降低分配給正確分類的損失來解決難分類類別準(zhǔn)確率過低的問題,本文將FL的思想推廣到多分類,采用Multi-Focal損失函數(shù)(MFL),并據(jù)此建立深度神經(jīng)網(wǎng)絡(luò)模型,使得模型在訓(xùn)練過程中把訓(xùn)練的重點(diǎn)放在錯(cuò)誤分類的樣本上,有效提升了分類器性能。
CNN與普通的人工神經(jīng)網(wǎng)絡(luò)(Artificial Nueral Networks,ANNs)的相似之處是均通過層層節(jié)點(diǎn)組織起來,其中每個(gè)節(jié)點(diǎn)都為一個(gè)神經(jīng)元;不同之處在于相鄰的層之間只有部分節(jié)點(diǎn)相連,可以把輸入的內(nèi)容轉(zhuǎn)換為信息量更高的特征。CNN的網(wǎng)絡(luò)結(jié)構(gòu)主要由輸入層、卷積層、池化層和全連接輸出層組成。
對(duì)于處理文本的CNN而言,網(wǎng)絡(luò)的輸入是一個(gè)經(jīng)過分詞以及去停用詞的文檔,它是由一個(gè)個(gè)的詞語組成,長度固定為L,即有L個(gè)詞,每個(gè)詞用詞向量來替代,詞向量由word2vec模型在預(yù)訓(xùn)練時(shí)設(shè)定,維數(shù)為D,也可以不預(yù)先映射好詞向量而采用對(duì)每個(gè)詞進(jìn)行標(biāo)號(hào),再由嵌入層(EMBEDDING)來對(duì)獨(dú)熱編碼(ONE-HOT)詞向量進(jìn)行詞嵌入。但無論用哪種方法,最終輸入的文檔均為相同維度的矩陣X∈RL×D。
卷積層是CNN中最為重要的組成部分,與全連接層不同的是,卷積層中的每一個(gè)節(jié)點(diǎn)僅僅是上一層網(wǎng)絡(luò)中的一小部分,文本處理通常采用一維卷積,卷積核w的長度為h,寬度等于詞向量的維數(shù)D,即w∈Rh×D,卷積公式如下:
函數(shù)f為激活函數(shù),j和k分別為矩陣的行和列,b為偏移,輸出矩陣的形式為c∈RL-h+1,1,卷積核數(shù)量越多,輸出矩陣變得越多,這些矩陣疊加起來形成的深度越深。
卷積層后連接一個(gè)池化層,它的作用是簡(jiǎn)化神經(jīng)網(wǎng)絡(luò)計(jì)算的復(fù)雜程度,壓縮數(shù)據(jù),提取主要特征。池化主要形式有平均池化和最大池化,本文將采用最大池化方法,池化不會(huì)改變矩陣的深度。池化的輸出為:
cout=max{c1,c2,…,cL-h+1}
如果后面不再添加卷積層,則需要將數(shù)據(jù)平鋪成普通的一維向量作為后面全連接層的輸入。另外,在每一層中需要適當(dāng)斷開一定數(shù)量的神經(jīng)元來避免過擬合。
LSTM是循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)的一種變體,普通循環(huán)神經(jīng)網(wǎng)絡(luò)通過分析信息的短期依賴關(guān)系來輔助當(dāng)前決策,但無法解決長期依賴問題。很多監(jiān)督學(xué)習(xí)任務(wù)中,LSTM往往比RNN表現(xiàn)更為出色。LSTM擁有“三門”的特殊結(jié)構(gòu),“三門”分別為輸入門、遺忘門和輸出門。遺忘門用來控制遺棄無用信息,根據(jù)當(dāng)前時(shí)刻節(jié)點(diǎn)的輸入xt、上一時(shí)刻節(jié)點(diǎn)的狀態(tài)Ct-1以及上一時(shí)刻節(jié)點(diǎn)的輸出ht-1來決定需要遺忘的無用信息。遺忘門公式定義如下:
f=sigmoid(Wfht-1+Ufxt+bf)
通過遺忘門以后,上一時(shí)刻的狀態(tài)為f°Ct-1,“°”為哈達(dá)瑪乘積,Wf,Uf分別為隱狀態(tài)中遺忘門和輸入的權(quán)重矩陣,bf為偏移。
輸入門根據(jù)xt和ht-1來決定當(dāng)前輸入數(shù)據(jù)中哪些信息被加入到狀態(tài)Ct-1和新生成的狀態(tài)Ct。數(shù)據(jù)經(jīng)過遺忘門之后,需從當(dāng)前輸入添加最新的記憶。輸入門公式定義如下:
i=sigmoid(Wiht-1+Uixt+bi)
a=tanh(Waht-1+Uaxt+ba)
其中,Wi,Wa,Ui,Ua分別為輸入門權(quán)重矩陣,bf為偏移。此外,通過輸入門之后的輸入為i°a,與遺忘門得到的上一刻狀態(tài)f°Ct-1相加可得到新的狀態(tài):
Ct=f°Ct-1+i°a
在得到最新狀態(tài)Ct后,結(jié)合ht-1和xt來決定當(dāng)前時(shí)刻節(jié)點(diǎn)的輸出:
o=sigmoid(Woht-1+Uoxt+bo)
ht=o°tanhCt
Wo,Uo分別為輸出門權(quán)重矩陣,bo為偏移。
若網(wǎng)絡(luò)不再添加其他LSTM結(jié)構(gòu),則處理方式與CNN最后的操作相同。
在處理難分類樣本數(shù)據(jù)集和不平衡數(shù)據(jù)集時(shí),采用常規(guī)損失函數(shù)搭建的神經(jīng)網(wǎng)絡(luò)模型往往得不到理想的模型評(píng)價(jià),而F1得分是查準(zhǔn)率和查全率的一個(gè)調(diào)和均值,僅在查準(zhǔn)率和查全率都較高的情況下才能得到較高的F1得分,因此,選擇F1得分作為實(shí)驗(yàn)結(jié)果的評(píng)價(jià)標(biāo)準(zhǔn)?;诮徊骒?fù)p失改進(jìn)的Focal Loss能夠很好地解決二分類任務(wù)中的難分類樣本準(zhǔn)確率較低的問題,本文根據(jù)Focal Loss的構(gòu)造思路,將Focal Loss函數(shù)推廣到多分類任務(wù)上,提出Multi Focal損失函數(shù),用于解決多分類文本數(shù)據(jù)集中的難分類問題,提高分類器的準(zhǔn)確率。
在二分類任務(wù)中,一般采用標(biāo)準(zhǔn)交叉熵(Cross Entropy,CE)作為神經(jīng)網(wǎng)絡(luò)的損失函數(shù),其表達(dá)式為:
FCE(p,y)=-log2(pt)
而Focal Loss(FL)的表達(dá)式為
FFL(pt)=-(1-pt)γlog2(pt)
(1)
式中,(1-pt)γ作為難分類樣本的調(diào)至系數(shù),γ≥0,其工作原理為:當(dāng)某樣本被分錯(cuò)時(shí),pt趨于0,故調(diào)至系數(shù)約為1,此時(shí)的FL與普通交叉熵一樣,而在樣本被分對(duì)的情況下,調(diào)至系數(shù)趨于0,F(xiàn)L也趨于0,對(duì)總損失函數(shù)的貢獻(xiàn)很小。γ則是對(duì)調(diào)至系數(shù)做出一些調(diào)整,避免過大或過小。
FL減少正確分類樣本帶來的損失對(duì)總損失的貢獻(xiàn),從而解決二分類數(shù)據(jù)不平衡的問題和某一類別的難分類問題。根據(jù)這一思想,本文提出MFL函數(shù)用于解決多分類任務(wù)數(shù)據(jù)集不平衡問題和部分類別的難分類問題,但在多分類任務(wù)中對(duì)比的是預(yù)測(cè)和實(shí)際的概率分布,很難直觀地用FL中pt的大小來體現(xiàn)誤分問題,故本文使用的方法為:當(dāng)樣本被誤判時(shí)增加對(duì)總損失的貢獻(xiàn),而沒有誤判時(shí)保持不變。因此表達(dá)式為:
(2)
本文通過網(wǎng)絡(luò)爬蟲獲取搜狐新聞12個(gè)類別總計(jì)35 548條數(shù)據(jù),12個(gè)類別分別是娛樂、財(cái)經(jīng)、房地產(chǎn)、旅游、科技、體育、健康、教育、汽車、新聞、文化、女人。同時(shí)在微博、b站、美國之聲爬取中美貿(mào)易戰(zhàn)新聞評(píng)論,對(duì)應(yīng)有3 634,13 130,3 566條數(shù)據(jù),貿(mào)易戰(zhàn)評(píng)論數(shù)據(jù)集均為不平衡數(shù)據(jù)集,人工將其標(biāo)注成3類,分別為消極情感、中性情感和積極情感。首先對(duì)所有數(shù)據(jù)分詞并剔除停用詞。由于數(shù)據(jù)量較大,針對(duì)搜狐新聞數(shù)據(jù),在本地訓(xùn)練word2vec模型需要花大量時(shí)間,故直接采用維基百科已訓(xùn)練完畢的word2vec模型的詞向量,而微博、b站、美國之聲等數(shù)據(jù)由于樣本較少,且不像新聞文本那樣正式,存在很多新穎的詞語、句式,故使用gensim庫中的models.word2vec接口對(duì)文本進(jìn)行向量化處理,所有詞向量維數(shù)均設(shè)置成128。本文不對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的特征選擇處理,而是參考不同數(shù)據(jù)集文檔分詞后長度的中位數(shù)和眾數(shù)給出合適的最大文檔長度,并根據(jù)漢語語義,對(duì)超過限定長度的文檔進(jìn)行首尾截取,通過這種處理來降低分類器的負(fù)擔(dān)。本文實(shí)驗(yàn)在處理器Intel(R) Core(TM) i5-7300HQ,win10操作系統(tǒng)下使用python3.7進(jìn)行編程。
測(cè)試用數(shù)據(jù)為搜狐新聞數(shù)據(jù),采用分類器分別為樸素貝葉斯(Naive Bayesian Classifier,NBC),CNN,LSTM和加入了卷積層的長短期記憶網(wǎng)絡(luò)CNN+LSTM,模型的查準(zhǔn)率(Precision)、查全率(Recall)、F1得分(F1-score)如圖1所示,模型的綜合性評(píng)價(jià)指標(biāo)如表1所示。
圖1 分類器測(cè)試結(jié)果
圖1中,共有4個(gè)子圖,每個(gè)子圖的橫坐標(biāo)為12個(gè)類別標(biāo)簽,縱坐標(biāo)為百分?jǐn)?shù),每個(gè)子圖有12個(gè)簇,對(duì)應(yīng)數(shù)據(jù)的12個(gè)類別。從圖1可以看出:財(cái)經(jīng)、科技、新聞和文化類的F1得分較低,屬于難判別類。
表1 模型微平均F1、宏平均F1及訓(xùn)練耗時(shí)
表1中,微平均F1是輸入分類器的預(yù)測(cè)樣本個(gè)數(shù)和預(yù)測(cè)正確的樣本個(gè)數(shù)(無論類別)的比值,也稱為準(zhǔn)確率,宏平均F1為每個(gè)分類器中所有類的F1得分值取算術(shù)平均得到的值。從表1可以看出:CNN,LSTM和CNN+LSTM分類器的效果要優(yōu)于NBC分類器。就分類性能而言,NBC墊底,但運(yùn)行速度最快。LSTM分類表現(xiàn)最好,但是效率低下,CNN表現(xiàn)中規(guī)中矩,在較快的時(shí)間內(nèi)取得不錯(cuò)的分類性能。CNN+LSTM運(yùn)行速度比LSTM快不少,和CNN相比,分類效果并沒有明顯的提高。
圖1中得到評(píng)估指標(biāo)最高的模型為LSTM,將它作為基礎(chǔ)模型,把MFL與Logcosh函數(shù)(LC)和CCE進(jìn)行對(duì)比,使用的實(shí)驗(yàn)數(shù)據(jù)為搜狐新聞文本數(shù)據(jù)集和中美貿(mào)易戰(zhàn)數(shù)據(jù)集,分別為部分類別F1得分較低的數(shù)據(jù)集和不平衡數(shù)據(jù)集,實(shí)驗(yàn)結(jié)果如表2和表3所示。
表2 基于搜狐新聞數(shù)據(jù)集的模型F1得分對(duì)比
通過表2可知:對(duì)于搜狐新聞數(shù)據(jù)集而言,在原LSTM模型(LSTM+CCE)中分類結(jié)果較差的財(cái)經(jīng)、科技、新聞?lì)悇e的誤判率有較為明顯的降低,分別降低了5%,6%,8%。
表3 基于貿(mào)易戰(zhàn)評(píng)論數(shù)據(jù)集的模型F1得分對(duì)比
熱點(diǎn)話題評(píng)論問題(b站、微博、美國之聲上的貿(mào)易戰(zhàn)評(píng)論)不比新聞文本,不同的類別罕有明顯的關(guān)鍵詞,而且由于人工分類的原因,標(biāo)注可能存在問題,分類性能存在一定的缺陷。
通過表3可知:b站評(píng)論中,消極情感的識(shí)別率較低;微博評(píng)論中,中性情感識(shí)別率不高;美國之聲評(píng)論中,積極情感識(shí)別率較弱。采用MFL分類器對(duì)模型的弱項(xiàng)有明顯提高,難分類類別的F1得分也得到了提升,例如微博數(shù)據(jù)集中消極類別的F1得分比LSTM+CCE提高了8%,美國之聲數(shù)據(jù)集的積極類別的F1得分比LSTM+CCE提高了9%。綜上所述,改進(jìn)的MFL函數(shù)不僅能解決平衡數(shù)據(jù)集中部分類別的難分類問題,也能較好地解決不平衡數(shù)據(jù)集帶來的問題。
Focal Loss通過對(duì)標(biāo)準(zhǔn)交叉熵添加加權(quán)因子可使得模型在訓(xùn)練時(shí)更專注于難分類的樣本,本文提出Multi Focal Loss多分類交叉熵?fù)p失函數(shù),充分考慮多個(gè)難分類樣本對(duì)損失的影響,有效提升了多類別文本分類任務(wù)中難分類類別的分類準(zhǔn)確率。在下一步研究工作中,將更加注重不同損失函數(shù)對(duì)模型整體分類評(píng)價(jià)指標(biāo)的提升。