周凱,李暉,劉桐
(沈陽工業大學信息科學與工程學院,沈陽 110870)
情感分析也稱為意見挖掘[1],它是利用計算機技術對文本的觀點、情感傾向進行挖掘與分析,并利用人工智能的神經網絡對文本情感傾向進行分類判定。文本情感分析技術主要可劃分為基于人工和機器學習的傳統分類方法[2-3]和基于深度學習的分類方法兩種?;谌斯さ姆诸惙椒ê艽蟪潭壬先Q于情感詞典的構建,主要是通過對標注情感詞典的極性和強度標注來實現文本的情感分類。由于構建的詞典通常只針對特定領域的固定短文本,對于長文本和跨領域的情感分析任務來說,該方法費時、費力且遷移能力較差。基于機器學習的方法,先對文本的語料庫進行標記,利用特征提取的方法提取特征,再在分類器中輸入所提取的特征,計算概率分布達到情感分類的目的,這類方法成功的關鍵在于選擇出大量高質量的標注樣本、最佳的特征組合和分類器,機器學習的準備工作需要耗費大量精力,模型泛化能力差。與此同時,機器學習的算法對復雜語境下的表達能力有限,不能捕捉文本隱藏語義之間的關聯性,從而影響分類的準確率。本研究針對上述問題,提出一種基于深度學習的情感分析模型。
BERT(Bidirectional Encoder Representation fromTransformer)[4]是根據Transformer中衍生出來的預訓練語言模型,能實現文本的向量化。BERT作為一種預訓練語言模型,預訓練過程是最為核心的部分,其中包括MLM、NSP兩個預訓練任務。
MLM訓練任務可以看作是完形填空的形式,每當輸入一句話,模型會隨機地遮住一些要預測的詞,使用[MASK]特殊符號統一表示。這個選取的概率是每個句中15%的詞。例如:疫情嚴峻→疫情嚴[MASK]。此處將“峻”字進行了特別的MASK處理,再利用無監督學習的方法,來預測MASK位置的詞語。BERT模型對隨機選取的15%的詞匯做出如下三種處理,使模型更加合理。
1)80%的時間是采用[MASK]處理:疫情嚴峻疫情嚴[MASK]。
2)10%的時間是隨機取一個詞來代替MASK的詞:疫情嚴峻→疫情嚴酷。
3)10%的時間保持不變:疫情嚴峻→疫情嚴峻。
NSP訓練任務可以看作是段落重排序。當輸入句子A和B時,判斷二者是否前后句。在此基礎上,從語料庫中隨機選取了50%的B作為A的背景句,其余50%的B是在語料庫中隨機匹配的。引入NSP訓練任務可以更好地讓BERT學習到連續的文本片段之間的相關性,并且把其相關性保存在[CLS]符號中。預訓練任務流程如圖1所示。

圖1 BERT預訓練任務流程示意圖
TextCNN的網絡結構如圖2所示。與傳統的CNN[5]相比,TextCNN的結構并無顯著差異,它僅包含一層卷積層和一層最大層池化層[6]。

圖2 TextCNN網絡結構
TextCNN網絡主要通過卷積層提取語句的不同特征,池化層提取其中最重要的特征,再加上全連接和softmax層,最后輸出情感分類結果。
局部特征的獲取是CNN的關鍵。在文本中,局部特征一般由一個或多個字構成,類似于N-gram。CNN的優勢在于可以自動地結合、篩選出各種抽象層次的語義信息。
TextCNN的輸入層是一個n×d的矩陣,其中n表示句子的字數,d表示每個單詞對應的向量維度。因此,輸入的每一層就是一個單詞對應的d維的詞向量。此外,本研究還對語句進行填充處理,以保證詞向量的長度一致。
對文本的卷積運算和圖像的卷積運算是完全不同的。在圖像處理中,通常采用正方形核,例如3×3的卷積核,卷積核沿著整個圖像的高、寬,按步長進行卷積運算。而TextCNN的卷積層[7-8]是一維卷積,它的卷積核尺寸是固定的,即詞向量維度d。卷積核僅沿高度方向運動,而卷積核的高度也就是該窗口內文字的數目。當設置kernel_size=(2,3,4)時,即為一個窗口中分別可以包含2、3、4個單詞。由于矩陣的一行代表的是一個單詞,所以確保了詞作為語言中的最小粒度。
2017年騰訊提出用于文本分類的模型DPCNN(Deep Pyramid Convolutional Neural Networks)[9],其網絡結構如圖3所示。該模型比TextCNN更加深入,并且增加了殘差網絡,能夠更好地捕捉長文本之間的相關性,從而彌補了TextCNN在實現文本的分類任務時,由于本身網絡深度太淺而無法獲得長距離文本信息的缺陷。

圖3 DPCNN網絡結構
DPCNN采用每個卷積塊包含兩層等長卷積的方式提高詞位的豐富性。等長卷積意味著輸出序列的長度與輸入序列長度相等。將輸入輸出序列的第n個詞向量稱為第n個詞位,此時尺寸為m的卷積核所生成的等長卷積就是將該詞位和它附近(m-1)/2個字的上下文信息進行壓縮后的詞向量。與此同時,DPCNN使用兩層等長卷積累加會讓每個詞位的詞向量語義更加豐富準確。
在DPCNN中采取了與ResNet網絡不同的方式,將feature map的數量進行了固定。該方法通過對詞向量空間的維數進行約束,使相鄰詞在原空間或類似于原空間的情況下進行融合。同時,DPCNN在整個網絡結構上看是深層的,但是從語義空間的角度上觀察是扁平的。
當DPCNN為池化提供了恰當的合并條件后,就可以用1/2池化操作進行合并信息。同樣大小的卷積核,每經過一個1/2池化層,所能感知到的文本語義范圍就會增加一倍。
首先在語料S={w1,w2,…,wn}輸入到BERT模型時,將在文字的開頭加上[cls]特別的標簽,含義是分類,并將[sep]標簽添加到文字的結尾。BERT將一連串上下文序列作為輸入,經過多層transformer編碼層處理,BERT為每個輸入標記生成對應的隱藏狀態向量,并輸出隱藏向量序列E={H[CLS],H1,H2,…,Hn,H[SEP]}。在此基礎上,利用H[CLS]作為文本輸入序列的聚合向量表達,它包含上下文信息,可直接用于一步任務模型的輸入,實現情感分類。BERT-DPCNN情感分析模型如圖4所示。

圖4 BERT-DPCNN情感分析模型
實驗在網絡媒體平臺爬取[10]評論數據10萬條,在數據清洗過程中,刪除無任何情感傾向的錯亂語句和僅由符號構成的評論,保留文本評論98270條。將其中80%的評論文本作為訓練集數據,10%設置為測試數據集,剩余10%作為實驗驗證集,每個數據集包含10個情感標簽。其中10種情感標簽分別對應開心、喜愛、驚訝、悲傷、厭惡、生氣、同情、羨慕和失望。
實驗基于矩池云服務器Python3.7編程語言實現,選用Pytorch框架搭建神經網絡。實驗數據設置4400個epoch進行訓練。
實驗選取了準確率、損失函數值、召回率,作為評估指標,評估情感分析模型的性能。通過與其他模型對比,驗證本模型的有效性。實驗結果對比如表1。

表1 實驗結果對照表
可見,實驗搭建的深度學習情感分析模型在準確率這一指標上都有著不錯的表現,因此基于BERT-TextCNN和BERT-DPCNN的模型都適合于應用在情感分析任務上。具體來看,BERT-DPCNN在情感分析任務上有著更加突出的表現;同時,DPCNN可以更好的捕捉長文本之間的相關性,這一點也得到了驗證。
在損失函數值這一指標上,實驗搭建模型符合理論預期。基于BERT-TextCNN和BERT-DPCNN的模型都適合于應用在情感分析任務上。
實驗得到的準確率曲線如圖5所示。從單條曲線上看,無論是基于TextCNN還是DPCNN網絡,其準確率都隨著epoch次數的增加,先快速提高,然后逐漸趨于平穩,曲線整體平滑。兩種模型的準確率曲線與情感分析任務相吻合。隨著迭代次數的增加,詞表內的語料被逐漸加載,模型準確率也隨之增加。對比之下,基于BERT-DPCNN模型的準確率更優。

圖5 準確率百分比曲線
實驗得到損失函數值曲線如圖6所示。通過實驗數據曲線可見,所有網絡模型的損失函數值都隨著epoch次數的增加,先快速收斂,然后趨于平穩,最后達到模型最優時停止迭代。曲線整體平滑,起伏較小。損失函數值可以很好地反映模型與實際數據的差距,其中,基于BERT-DPCNN模型的損失函數收斂速度最快,損失函數的值最小。結合DPCNN模型的優勢,分析可知,基于BERT-DPCNN模型的情感分析系統在情感分析領域有著一定的優勢。

圖6 損失函數值曲線
針對目前情感分析技術在復雜語境中表達能力有限、語義關聯性困難、模型分類準確率低等問題,優化改進情感分析模型。通過在BERT語言模型上結合DPCNN神經網絡分類器,提高了模型效率和計算效果,使模型具有泛化性。通過比較精確率度、損失函數指標,對該方法的性能進行了評價。模型的準確率達到了92.09%的準確率,損失函數值為0.38,結果表明,改進后的模型可以更好兼容情感分析任務。