李 芳, 曲豫賓, 陳 翔, 李 龍, 楊 帆
(1. 桂林電子科技大學 廣西可信軟件重點實驗室, 廣西 桂林 541004; 2. 江蘇工程職業(yè)技術學院 建筑工程學院, 江蘇 南通 226001; 3. 江蘇工程職業(yè)技術學院 信息工程學院, 江蘇 南通 226001; 4. 南通大學 信息科學技術學院, 江蘇 南通 226019; 5. 江蘇工程職業(yè)技術學院 圖文信息中心, 江蘇 南通 226001)
網(wǎng)絡的快速發(fā)展產生了海量的文本數(shù)據(jù), 大量的文本數(shù)據(jù)來源于用戶參與論壇等活動, 這種UGC(user generated contents)數(shù)據(jù)變得越來越重要[1]. UGC數(shù)據(jù)主要包括電商商品評論及電影評論等, 其可提供一些有價值的信息, 為用戶的日常決策提供了重要參考[2]. 網(wǎng)絡評論的極性分類是文本處理任務中的一項基本任務[3]. 網(wǎng)絡評論中的情感分析(sentiment analysis)是指根據(jù)文本內容, 使用多種方式判斷該段文本的極性, 文本的極性類型包括褒義(positive)和貶義(negative)兩種. 常見的分析方法主要有基于詞典的情感分析方法、 基于機器學習的情感分析技術以及基于深度神經(jīng)網(wǎng)絡的情感分析技術[4]等. 朱嫣嵐等[5]借助于HowNet提供的語義相似度計算目標詞與基準詞之間的相關性, 對文本的極性進行了分類; 李明等[4]通過研究樸素Bayes、 決策樹、 支持向量機等算法, 發(fā)現(xiàn)支持向量機在商品評論情況傾向性分析中具有較高的召回率和精確率; 高云龍等[6]采用改進的卷積神經(jīng)網(wǎng)絡, 利用不同編碼方式將短文本映射到不同空間下的分布式表示中, 實現(xiàn)了對短文本進行分類; 高巍等[7]采用基于序列卷積網(wǎng)絡對Twitter數(shù)據(jù)進行情感分類, 證明序列卷積分類模型可在情感分類任務中取得較好的效果. 但上述研究都是針對平衡數(shù)據(jù)集, 即含有褒義與貶義內容的數(shù)據(jù)基本保持一致. 由于用戶評論的隨機性, 這些UGC數(shù)據(jù)通常存在天然的類不平衡[8]. 貶義數(shù)據(jù), 也稱為消極數(shù)據(jù), 數(shù)量較少, 但卻有較大的影響力. 傳統(tǒng)基于機器學習方法對類不平衡數(shù)據(jù)集的處理方法包括對數(shù)據(jù)集中多數(shù)類欠采樣、 對數(shù)據(jù)集中少數(shù)類進行過采樣和基于代價敏感的分類方法等[9]. 目前, 對文本分類中類不平衡問題的研究已有許多成果: Li等[10]首先提出了在類不平衡數(shù)據(jù)集中采用過采樣及欠采樣的方法, 緩解不平衡數(shù)據(jù)集對分類器性能的影響; Li等[1]針對類不平衡問題, 提出了結合通用與領域知識對文本進行過采樣, 取得了一定的效果; 如先姑力·阿布都熱西提等[11]提出了在維語網(wǎng)頁中使用n-gram模型結合類不平衡SVM的不良文本過濾方法; Prusa等[12]采用欠采樣方法解決了Twitter情感分析中的類不平衡問題; Li等[13]通過引入半監(jiān)督學習的方式擴充訓練數(shù)據(jù)集, 以緩解類不平衡問題; Ren等[14]在解決自引入技術債務的分類問題中, 采用基于代價敏感的分類方法緩解類不平衡問題, 該方法采用文檔數(shù)量比例作為損失函數(shù)中的權重因子; Lin等[15]在解決使用單機結構做目標識別的過程中, 既引入代表代價敏感的權重影響因子, 又考慮樣例的分類難度, 提升了目標識別的精度; Ye等[16]在用卷積神經(jīng)網(wǎng)絡解決圖像識別時引入了類別相關度特性, 使得少數(shù)類具有較大的決策值, 從而緩解了類不平衡問題. 解決類不平衡問題過程中, 對多數(shù)類數(shù)據(jù)欠采樣可能會導致信息丟失的問題, 對少數(shù)類過采樣可能會導致模型過擬合問題, 因此基于代價敏感的分類方法應用廣泛. 但傳統(tǒng)基于代價敏感的分類方法僅考慮了不同類別數(shù)據(jù)集對訓練模型的影響, 未充分考慮訓練過程中不同樣例區(qū)分的難度問題. Lin等[15]在設計Focal損失函數(shù)過程中引入了不同樣例的區(qū)分難度, 但該計算過程需預先設定超參數(shù), 且物理意義不明確.
基于此, 本文在將基于雙向長短期記憶網(wǎng)絡的深度學習框架應用到情感分析過程中, 設計一種基于交叉熵損失函數(shù)的目標函數(shù), 該目標函數(shù)既考慮了不同類別比例對模型訓練的影響, 又通過集成信息熵將不同樣例的分類難度引入到新的目標函數(shù)中. 首先, 基于預訓練的向量對情感分類文本進行詞嵌入, 將訓練數(shù)據(jù)集的詞向量輸入到長短期記憶網(wǎng)絡中; 其次, 在訓練過程中使用新的目標函數(shù)計算損失值, 進而進行反向傳播; 最后, 使用常見的AUC(area under curve)作為分類性能的評價指標, 將測試數(shù)據(jù)集在該深度學習模型上進行驗證測試. 在公開的情感文本分類數(shù)據(jù)集IMDB上進行多次重復實驗, 對實驗結果進行統(tǒng)計分析, 證明基于該目標函數(shù)的深度學習框架能提升分類性能.
針對網(wǎng)絡評論中需從文本序列特征中學習深度語義以及評論文本中存在類不平衡的問題, 結合信息熵提出一種針對深度學習框架的損失函數(shù), 該損失函數(shù)考慮了數(shù)據(jù)分布中的類不平衡問題, 將信息熵作為衡量樣本分類難易程度的影響因子. 深度語義學習框架的整體流程如圖1所示.
圖1 情感分析中基于類不平衡學習的深度語義學習框架Fig.1 Deep semantic learning framework based on class imbalanced learning in sentiment analysis
情感分析問題屬于自然語言處理(NLP)中的分類問題, 文獻[17]在卷積神經(jīng)網(wǎng)絡上對文本進行了分類實驗, 結果表明, 采用預訓練的向量對輸入文本進行向量初始化, 能大幅度提升分類性能. 如圖1所示, 該深度語義學習框架首先使用glove vector對訓練數(shù)據(jù)集中的文本進行初始化[18], 得到維度為300維的輸入向量, 然后將該初始化后的向量作為雙向長短期記憶網(wǎng)絡的輸入值進行訓練. 長短期記憶網(wǎng)絡作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種, 能解決較長數(shù)據(jù)的依賴問題, 該網(wǎng)絡也能更好收斂[19]. 而雙向長短期記憶網(wǎng)絡除能考慮文字序列之間的正向依賴外, 也能兼顧文字序列之間的反向依賴[20], 且雙向長短期記憶網(wǎng)絡能更好地解決梯度爆炸和梯度消失問題, 從而更好地訓練分類模型. 雙向長短期記憶網(wǎng)絡從嵌入式向量中學習語義特征, 分別生成前序語義特征向量和后序語義特征向量, 將兩種向量連接在一起組合為全連接線性分類層, 輸出層為包含兩個輸出神經(jīng)元的輸出層, 對輸出層使用交叉信息熵損失函數(shù)計算訓練數(shù)據(jù)集的損失值. 鑒于在訓練文本中存在類不平衡問題, 通過引入不同類別的比值作為權重影響因子, 同時引入信息熵的概念, 將經(jīng)過softmax后的輸出值作為概率分布計算相應的信息熵. 信息熵用于衡量樣本分類的難度, 信息熵高則樣本分類難度較高, 應該分配較多的損失值. 對損失值進行反向傳播, 計算得到深度語義學習模型. 將該訓練模型應用在測試數(shù)據(jù)集上, 得到該模型的性能分布情況. 原始訓練數(shù)據(jù)集與測試數(shù)據(jù)集具有相同的樣本數(shù), 為構建類不平衡數(shù)據(jù)集, 設定抽樣因子序列為list={0.05,0.1,0.2,0.3,0.35,0.4}, 對訓練集與測試集中的消極評論(negative)數(shù)據(jù)集進行隨機抽樣, 即可構建多組用于訓練模型的數(shù)據(jù)集.
文獻[20]對從網(wǎng)絡上爬取的英文和中文語料進行了分詞及標注, 研究表明, 采用長短期記憶網(wǎng)絡比采用循環(huán)神經(jīng)網(wǎng)絡能更好地獲取潛在的語義信息, 達到較好的分類效果. 文獻[21]將IF-IDF信息與分布式詞向量表示相融合, 采用雙向長短期記憶網(wǎng)絡對從攜程網(wǎng)上爬取的網(wǎng)絡評論信息進行分類, 取得了比其他循環(huán)神經(jīng)網(wǎng)絡更好的分類效果. 因此, 本文對網(wǎng)絡評論使用glove預訓練模型, 獲取分布式向量表示, 采用雙向長短期記憶網(wǎng)絡對網(wǎng)絡評論的極性進行分類. 單獨的長短期記憶網(wǎng)絡單元結構如圖2所示. 該網(wǎng)絡單元由遺忘門、 記憶門、 輸出門等組成.
圖2 長短期記憶網(wǎng)絡單元結構Fig.2 Unit structure of long short-term memory network
設遺忘門的輸出為ft, 其計算公式為
ft=σ(wf·[ht-1,xt]+bf).
(1)
記憶門確定從輸入中得到的哪些信息被記憶, 其計算公式為
it=σ(wi·[ht-1,xt]+bi),
(2)
(3)
信息的更新過程為
(4)
該網(wǎng)絡單元的輸出值為
ot=σ(wo·[ht-1,xt]+bo),
(5)
ht=ot×tanh(Ct).
(6)
長短期記憶網(wǎng)絡單元中, 信息流只能前向傳播, (t+1)時刻的信息僅依賴于t時刻之前的信息輸入; 為使(t+1)時刻的信息能夠感知(t+2)時刻及以后的信息, 引入雙向長短期記憶網(wǎng)絡. 對基于自然語言處理的情感極性文本分類問題, 該分類模型能更好地滿足自然語言處理過程中對文本信息上下文感知的需求. 由于采用了雙向長短期記憶網(wǎng)絡, 在輸出單元時會輸出兩個方向的語義向量. 通過對兩個向量進行連接操作形成新的深度語義特征向量, 將該向量作為線性全連接層的輸入向量.
目前, 針對網(wǎng)絡評論的研究[4,21]主要考慮了平衡數(shù)據(jù)集, 即在構造訓練數(shù)據(jù)集時積極評論數(shù)量與消極評論數(shù)量相同. 具有相同比重的評論數(shù)據(jù)集在構造長短期記憶網(wǎng)絡的分類模型時有助于獲取分類性能較好的模型, 但網(wǎng)絡評論本身存在類不平衡問題, 通常某種評論數(shù)量會遠多于另一種評論, 使原有的訓練模型無法遷移到新的數(shù)據(jù)集中. 且由于具有少數(shù)類的評論模型通常具有不可忽視的重要性與影響力, 因此需解決面向類不平衡的情感分析問題.
針對類不平衡的數(shù)據(jù)集, 常見的解決方法包括在訓練數(shù)據(jù)集中對多數(shù)類進行欠采樣、 對少數(shù)類進行過采樣、 使用代價敏感的損失函數(shù)等方法[9]. 欠采樣方法存在丟失數(shù)據(jù)信息問題, 傳統(tǒng)基于SMOTE的過采樣方法不能應用于采用分布式詞向量表示的輸入數(shù)據(jù)集中. 采用代價敏感的損失函數(shù)是解決類不平衡問題的常用方法之一. 除考慮類不平衡外, 還要針對不同分類難度的樣例進行處理. Lin等[15]在對圖像檢測問題的研究中發(fā)現(xiàn), 不同分類難度的樣例對分類精度存在較大影響. 易分類的樣例其損失函數(shù)應有較小的損失值, 難分類的樣例其損失函數(shù)應有較大的損失值. 通過引入分類難易程度的影響因子, 可實現(xiàn)對類不平衡數(shù)據(jù)集中不易分類的少數(shù)類提升其損失函數(shù)輸出值, 改變反向傳播過程中的網(wǎng)絡結構, 從而提升分類性能. 但該方法存在物理意義不明確, 需要在使用過程中進行超參數(shù)優(yōu)化等問題, 泛化性能較差.
本文算法基于兼顧類不平衡中不同類別的分類代價及分類難易程度, 特別是對不易分類的少數(shù)類更有效. 由于信息熵能有效衡量離散信息的不確定性, 因此不確定性高的分類樣例信息熵較高, 其對應的樣例分類難度較大; 確定性高的分類樣例信息熵較低, 其對應的樣例分類難度較小.
如圖1所示, 深度神經(jīng)網(wǎng)絡的輸出不同類別得分為score={t0,t1}, 經(jīng)過softmax后的分布概率為P={p0,1-p0}, 情感分析問題屬于二分類問題, 為簡單, 設其真實值為P′={1,0}, 則對應的交叉信息熵CE(P′,P)為
CE(P′,P)=1×(-lgp0)+0×[(-lg(1-p0)]=-lgp0.
(7)
考慮網(wǎng)絡極性評論中存在的類不平衡問題, 設不同類別評論數(shù)量的比例為γ={γ0,1-γ0},γ0∈{0,1}, 為簡單, 設類別為1的評論比例為γ0, 則其對應的交叉信息熵CE(P′,P)為
CE(P′,P)=1×(-lgp0)×γ0+0×[-lg(1-p0)]×(1-γ0)=-γ0lgp0.
(8)
交叉信息熵CE(P′,P)的損失值由大量多數(shù)類的損失值組成, 因此有必要提升少量難分類的少數(shù)類損失值權重.信息熵能衡量離散信息的不確定性, 設信息熵因子為
(9)
則引入信息熵因子后的交叉信息熵CE(P′,P)為
CE(P′,P)={1×(-lgp0)×γ0+0×[-lg(1-p0)]×(1-γ0)}×β=-βγ0lgp0.
(10)
由p0計算得到的信息熵在面對多數(shù)易分類樣例時, 其值接近0, 在面對其他難分類樣例時, 分類難度越高, 其值越接近1, 因此由β因子進行縮放后,β值能較好地反映樣例分類的難易程度. 根據(jù)式(8)計算得到對應的損失函數(shù)梯度為
(11)
所有實驗均在至強E5-2670的CPU與16 GB內存的工作站上完成, 同時在NVIDIA GeForce RTX 2070 GPU上訓練深度神經(jīng)網(wǎng)絡并進行分析. 實驗中使用的深度神經(jīng)網(wǎng)絡庫采用Pytorch 1.6穩(wěn)定版本, 超參數(shù)采用BiLSTM網(wǎng)絡結構的默認參數(shù).
實驗采用的情感分析數(shù)據(jù)來源于IMDB數(shù)據(jù)集, 該數(shù)據(jù)集為經(jīng)過預處理的具有明顯情感偏向的數(shù)據(jù)集, 分為積極評論和消極評論. 原始數(shù)據(jù)集中包括訓練數(shù)據(jù)集和測試數(shù)據(jù)集, 各25 000條數(shù)據(jù). 該數(shù)據(jù)集應用較廣, 在Keras,Pytorch等框架上都有集成, 提供專用的數(shù)據(jù)處理接口. 本文實驗需要對類不平衡數(shù)據(jù)集進行處理, 因此未采用通用接口, 通過直接讀取數(shù)據(jù)源創(chuàng)建數(shù)據(jù)字典的方式封裝數(shù)據(jù)處理接口. 設抽樣因子序列為list={0.05,0.1,0.2,0.3,0.35,0.4}, 對原數(shù)據(jù)集中的訓練集和測試集中的消極評論數(shù)據(jù)集進行隨機抽樣, 即可構建多組用于訓練模型的數(shù)據(jù)集. 數(shù)據(jù)集信息列于表1.
表1 數(shù)據(jù)集信息
在自然語言處理中, 單詞的表示已從早期的one-hot編碼發(fā)展為目前常見的分布式詞向量表示. GloVe模型(global vectors for word representation)是目前較常見的單詞分布式詞向量表示模型之一. 雙向長短期記憶網(wǎng)絡的輸入要求是詞向量, 采用如GloVe模型等預訓練的詞向量可有效提高模型分類的精度[17]. 本文實驗中先將GloVe模型加載到內存中, 再對待訓練的網(wǎng)絡評論查找該向量表, 獲取分布式詞向量表示. 為與GloVe模型保持一致, 分布式詞向量的維度設為300, 其他超參數(shù)包括每句評論的長度設為200, 超過特定長度的句子做截斷處理, 對不滿足長度的句子進行補零操作, 數(shù)據(jù)字典大小為20 000.
針對類不平衡數(shù)據(jù)集的常用評價指標包括召回率、F1值和AUC等. AUC能綜合考慮召回率與精確率指標, 應用較廣, 其值越趨近1表示分類模型性能越高, 如果AUC值在0.5附近, 則表示其分類性能無應用價值.
為比較不同類別的損失函數(shù)對情感分析類不平衡數(shù)據(jù)集的影響, 本文選擇多種損失函數(shù)在相同條件下進行對比實驗. 實驗中用到的4種損失函數(shù)如下:
1) 如式(7)所示, 采用交叉信息熵作為損失函數(shù), 未考慮類不平衡問題, 在實驗中作為基準函數(shù), 記為LF;
2) 如式(8)所示, 采用交叉信息熵作為損失函數(shù), 考慮不同類別評論比例的影響, 引入不平衡率影響因子, 記為LFCS;
3) 文獻[15]的損失函數(shù), 該損失函數(shù)同時引入了不平衡率影響因子和表達分類難易程度的影響因子, 該影響因子采用對分布概率進行放大處理的方法, 本文實驗中影響因子采用的放大因子超參數(shù)設為2, 記為LFFL;
4) 如式(10)所示, 采用交叉信息熵作為損失函數(shù), 在損失函數(shù)中同時引入不平衡率影響因子和表達分類難易程度的影響因子信息熵, 基于Pytorch實現(xiàn)集成信息熵的損失函數(shù), 記為LFIE.
表2為不同抽樣比例情況下采用不同損失函數(shù)深度學習模型的AUC值. 由表2可見, 在不同抽樣比例的情況下, 雙向長短期記憶網(wǎng)絡在使用本文基于集成信息熵的損失函數(shù)后均能獲得最佳的AUC值. 同時, 在抽樣比例較低(0.05)時, 采用LFIE損失函數(shù)的分類模型. AUC值最多提高15.3%. 隨著抽樣比例的升高, 采用不同損失函數(shù)的分類模型均獲得了不同程度的提高, 呈現(xiàn)近似線性的變化, 這種變化趨勢符合分類模型的性能變化趨勢. 采用LFIE損失函數(shù)的分類模型隨著抽樣比例的升高均能獲得最佳的分類結果, 說明采用LFIE損失函數(shù)的分類模型具有較強的泛化能力.
表2 不同抽樣比例情況下采用不同損失函數(shù)模型的AUC值
根據(jù)不同抽樣比例采用不同損失函數(shù)深度學習模型的AUC值得到相應的盒圖如圖3所示. 由圖3可見: 未考慮類不平衡的損失函數(shù)LF, 其中位值優(yōu)于考慮了類不平衡影響因子的損失函數(shù)LFCS和LFFL; 采用LFFL損失函數(shù)的模型分類性能在部分情況下優(yōu)于未考慮類不平衡因子的損失函數(shù)LF; 采用LFFL損失函數(shù)模型的中位數(shù)和最高值均明顯低于未考慮類不平衡因子的損失函數(shù)LF. 此外, 僅考慮類不平衡因子的損失函數(shù)LFCS, 無論是在AUC的最高值、 中位數(shù)還是最小值上均明顯低于未考慮類不平衡因子的損失函數(shù)LF, 這可能與僅采用不同類別評論的比例值作為影響因子有關. 采用LFIE損失函數(shù)的分類模型具有最佳的中位值, 且該中位值明顯高于采用其他損失函數(shù)的分類模型的AUC值. 因此, 在不同抽樣比例情況下, 采用LFIE損失函數(shù)的分類模型具有較強的魯棒性, 能適應不同比例的類不平衡情況, 從而有效減少在其他領域中調整超參數(shù)的難度.
圖3 采用不同損失函數(shù)的模型使用AUC指標對比盒圖Fig.3 Comparison of box plot of AUC indicator for models with different loss functions
綜上所述, 針對網(wǎng)絡評論中普遍存在的負面評論較少而影響力卻較大的類不平衡問題, 本文提出了一種基于類不平衡學習的情感分析方法. 該方法基于深度學習的概率分布輸出, 將計算樣例得到的信息熵作為影響因子構建交叉信息熵損失函數(shù). 在IMDB公開數(shù)據(jù)集上進行驗證實驗的結果表明, 采用集成信息熵損失函數(shù)的雙向長短期記憶網(wǎng)絡模型能處理類不平衡問題. 對數(shù)據(jù)的分析結果表明, 該策略能提升基于長短期記憶網(wǎng)絡的文本分類性能, 使用集成信息熵損失函數(shù)的深度學習模型比未考慮類不平衡損失函數(shù)的深度學習模型, AUC指標在中位數(shù)上最多提升15.3%.