代 楊 李永杰
(海軍工程大學電子工程學院 武漢 430000)
在移動互聯(lián)網(wǎng)飛速發(fā)展的大數(shù)據(jù)時代,不同用戶在各大社交平臺發(fā)表了海量的評論,而這些評論的下面,又可以不斷地再次評論。這些信息雖然是碎片化的,但是極具即時性,并且不斷裂變傳播,導致數(shù)據(jù)量爆炸增長。在社交網(wǎng)站不斷野蠻生長的評論包含了廣大網(wǎng)民的情緒信息,它們是情感分析的重要材料。網(wǎng)絡(luò)上的許多不當言論或惡性事件常會引發(fā)各種輿論風波,甚至蔓延到現(xiàn)實生活中,嚴重影響社會的安定團結(jié)。自新冠疫情以來,門戶網(wǎng)站成為輿論的戰(zhàn)場。“俄烏沖突”[1]爆發(fā)后,中文互聯(lián)網(wǎng)的輿論斗爭更加激烈。對主流媒體的網(wǎng)絡(luò)文本進行情感分析可以為重大輿情事件和突發(fā)公共事件的管理提供重要參考,對網(wǎng)絡(luò)空間的良性發(fā)展具有重大的意義[2]。
文本情感分析是指從文字中提取出人們的情緒傾向或特征[3]。目前情感分析的主要方法主要有三種[4]。一是基于情感詞典的方法。該方法需要建立情感詞典,然后根據(jù)詞典對文本內(nèi)容分析,計算其情感傾向。二是基于統(tǒng)計的機器學習方法。該方法通過對標注的語料進行統(tǒng)計學習,把分類模型的選擇和分類特征提取作為重點關(guān)注對象。常見的有支持向量機(SVM)、樸素貝葉斯(NB)、和邏輯回歸等。這種方法需要人工設(shè)定特征、人力成本和時間成本非常高,倘若數(shù)據(jù)集變化,其特征也會變化,原先選取的特征將會時效,可拓展性差。三是基于深度學習的方法。該方法是目前最熱門、效果最佳的方法。該方法不需要人工專門提取強語義表達特征,它利用神經(jīng)網(wǎng)絡(luò)模型自我學習,提取文本句子中的內(nèi)在語義和特征。常用的神經(jīng)網(wǎng)絡(luò)模型有卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[5]、長短期記憶模型(LSTM)、門控循環(huán)單元(GRU)、注意力機制(Attention)等。
利用深度學習對文本進行情感分析的本質(zhì)是利用神經(jīng)網(wǎng)絡(luò)對文本進行分類。針對文本情感分析,學者們提出各種方法改進。Bowen 等[6]提出了一種基于中文門戶網(wǎng)站評論的Word2Vec 模型,專門針對類似微博這種語義稀疏、文本簡短、口語化的場景。避免了維度災(zāi)難以提高分類器培訓的效率。并與長文本的模型對比結(jié)果表明該模型具有更好的有效性和準確性。該模型可以更好地理解單詞的潛在新含義并找到更多合適的同義詞。這些模型可以作為NLP 任務(wù)的許多研究和應(yīng)用的穩(wěn)固依據(jù)。Hu等[7]分別將CNN和RNN兩種神經(jīng)網(wǎng)絡(luò)模型與Word2Vec 詞嵌入技術(shù)組合,構(gòu)建出一種基于中文文本的TextCNN 和TextRNN 分類模型。但是泛化能力不強,不適用與情感分類。Xu等[8]通過構(gòu)造包含基本情感詞、領(lǐng)域情感詞和多義情感詞的擴展情緒詞典來增加情感分析的準確性,但是該模型只針對特定字段,嚴重依賴人工設(shè)計規(guī)則,耗費資源多,且只有二分類,細膩度不夠。Chen 等[9]將方面級情感分類和方面意見的識別作為聯(lián)合文本情感分類任務(wù),同時從情緒知識吸收外部知識來增強情緒識別的能力。這種聯(lián)合模型大幅度減少了對數(shù)據(jù)標記的依賴,同時提高了模型情感分析的性能。Xiao 等[10]提出一種基于控制塊的中文情感分類模型,用來分析情感是否為積極或消極。該模型還考慮了對長文本和短文本的依賴關(guān)系。利用不同的卷積核將短語分割后連接提高了情感分析的準確率。Zhou 等[11]考慮到句子的不同組件有不同程度的影響最終的文本情感分類,提出了一種基于LSTM 改進的BiLSTM 模型,并引入自注意力機制,相較于傳統(tǒng)的LSTM 模型,進一步提高了情感分析模型的穩(wěn)定性和有效性。提取我們需要的信息從文本的不同部分。實驗專注于嵌入層的性能,并試圖確定最優(yōu)嵌入算法。張玉環(huán)等[12]使用LSTM 和GRU 構(gòu)建文本情感分類模型,以便該模型可以獲得較高的準確性。
本文針對傳統(tǒng)情感分析方法不能充分提取文本特征、文本預訓練不準確等問題,提出一種基于BERT和卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合的改進模型。
BERT(Bidirectional Encoder Representation from Transformers)[13]是一種雙向表征預訓練語言模型,源自Transformer模型[14]。Transformer是谷歌在2017 年提出的seq2seq 模型,它包含編碼器encoder 和decoder 兩部分。BERT 只包含Transformer的encoder部分,其結(jié)構(gòu)如圖1所示。

圖1 Transformer的encoder結(jié)構(gòu)圖
標準的語言模型都是單向的,但是BERT 的編碼器是雙向的。BERT模型為了獲得良好雙向語言特征和模型的普遍適應(yīng)性,增加了兩種預訓練任務(wù),分別是遮蔽語言模型(MLM,Masked Language Model)和下一句子預測(NSP,Next Sentence Prediction)。在MLM 任務(wù)中,BERT在每一對句子中隨機選擇15%位置的詞元進行遮蓋動作。其中,80%直接替換為
利用BERT 模型進行情感分析屬于該模型的一個下游任務(wù),一般需要利用預訓練BERT 模型生成文本的向量表示,然后再采用相關(guān)的分類算法進行情感分類。
CNN 即卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks),由卷積層和池化層組成。卷積層負責提取特征,池化層可以提高模型表達能力。CNN最早用于圖像領(lǐng)域,直到出現(xiàn)TextCNN 模型。TextCNN利用不同大小的kernel來提取句子中的關(guān)鍵信息,從而能夠更好地捕捉局部相關(guān)性。卷積層的文本特征表示公式如下所示。
i表示第i個特征,ci表示由第i個特征值生成的特征向量。f為非線性激活函數(shù),b為偏置。W表示卷積核大小,h表示滑動窗口大小,Xi:i+h-1表示矩陣X由第i行到第i+h-1 行生成的特征矩陣。
所有特征向量組合成一個特征圖,生成最后的特征向量c,如下所示。
池化層選擇最大池化的方法,即只保留每個池化核中的權(quán)重最大的特征值,其余舍棄。公式如下所示。
BERT-CNN模型由兩個主要部分組成,第一部分為BERT 基礎(chǔ)模型,另一部分是CNN 模型。BERT-CNN模型如圖2所示。

圖2 BERT-CNN模型結(jié)構(gòu)圖
因為中文的詞語含意復雜,不同的詞語組合起來含意不斷變化,利用四個不同大小的卷積核來劃分不同尺度下的詞語或短句。文本通過BERT 層獲得矢量表示,然后每個卷積核將BERT 的最后的輸出作為通道,對其進行卷積運算,再通過ReLU激活層和最大池化層。最后將它們串聯(lián)拍平,通過Dense層全連接后輸出最終的情感分類結(jié)果。
本實驗選取的數(shù)據(jù)集為自建的微博文本數(shù)據(jù)集,該數(shù)據(jù)集收集了共計21173 條微博文本數(shù)據(jù),將這些數(shù)據(jù)集按照7:2:1的比例分為訓練集14821條、驗證集4446條、測試集1906條。實驗選用七種分類的情感分析,將所有文本分為Fear、Disgust、Optimism、Surprise、Gratitude、Sadness、Anger這七種情感類型。
實驗數(shù)據(jù)集樣例如表1所示。

表1 試驗數(shù)據(jù)及樣例
本文研究的情感分析問題本質(zhì)是一種情感的分類,分類問題常用的評價指標為準確率(Accuracy)、精準率(Precision)、召回率(Recall)、以及F1值。情感分類預測結(jié)果如表2所示。

表2 分類結(jié)果混淆矩陣
上式中,Accuracy 表示預測結(jié)果正確的樣本占所有預測樣本的比例;Precision 表示預測結(jié)果正確且為正例的樣本占所有預測為正例樣本的比例;Recall 表示預測結(jié)果正確且為正例的樣本占所有實際為正例樣本的比例;F1是Precision和Recall的綜合指標,其取值范圍為[0,1],F(xiàn)1 越接近1,反映分類的性能越好。當Precision=Recall=1 時,F(xiàn)1 可以達到最大值1 的理想情況,一般情況下,當Precision 偏高時,Recall 常常偏低。反之,Recall 偏高時,Precision 則偏低,所以F1 可以全面綜合地反映算法分類的性能,是情感分析的重要評價指標。
將BERT-CNN 模型將與BERT 模型和如下相關(guān)模型進行對比實驗。
TextRNN:該模型將詞嵌入之后輸入到雙向LSTM 中,然后將最后一位的輸入作為全連接層的輸入最后經(jīng)過softmax進行分類。
TextRNN-Att:該模型在TextRNN 的基礎(chǔ)上加入了注意力機制。
TextRCNN:該模型在詞嵌入的基礎(chǔ)上加上了上下文環(huán)境作為新的詞嵌入表示。左右兩側(cè)的內(nèi)容是通過前向和后向兩層RNN 的中間層輸出得到的。
FastText:該模型從word2vec 中衍生出來,使用n-gram 特征代替單個詞的特征。該模型共有三層,輸入層對整個文本的n-gram 特征提取序列信息計算詞向量,隱藏層對特征求和平均,最后輸出層輸出分類的結(jié)果。
TextCNN[15]:該模型通過以為卷積獲取句子的n-gram 特征表示,隨時用多個大小過濾器對嵌入的單詞向量執(zhí)行卷積。將卷積層的結(jié)果最大池化為一個長特征向量,正則化后輸出分類結(jié)果。
本實驗使用Google 開源的BERT 的base 版,其隱藏層為768 層。本實驗選取HuggingFace 的開源預訓練模型“bert-base-chinese”。實驗設(shè)置當?shù)鷶?shù)超過1000 且batch 效果還沒提升時提前結(jié)束訓練。
實驗使用的電腦系統(tǒng)為Windows10、處理器為AMD 3600、電腦內(nèi)存為16GB、實驗的模型都使用PyTorch 深度學習框架,使用cu101 驅(qū)動和一塊1660顯卡。
BERT-CNN模型參數(shù)設(shè)置如表3所示。

表3 實驗參數(shù)設(shè)置
在本文數(shù)據(jù)集上選擇TextRCNN、FastText、TextCNN、TextRNN-Att、TextRNN 和BERT 模型作為對比實驗?zāi)P?。對比結(jié)果如圖3所示。

圖3 不同模型準確率變化
從上圖可以看出,本文所提出的BERT-CNN模型準確率高、效果最佳。BERT-CNN 模型在BERT 模型的基礎(chǔ)上提升了0.58%,且相較于TextRCNN、FastText、TextCNN、TextRNN-Att、TextRNN模型,準確率分別提高了10.18%、10.07%、7.92%、5.35%、3.93%。
TextRCNN-Att 模型準確率略高于TextRCNN模型,說明注意力機制對解決特征稀疏問題有一定幫助。TextRCNN 模型和TextRCNN-Attention 模型相較于TextCNN 模型的準確率較低,說明CNN在該數(shù)據(jù)集上的文本特征提取能力較RNN 強。BERT 模型和BERT-CNN 模型比其他所有傳統(tǒng)模型的準確率都高,說明BERT 模型的語言表征能力和特征提取能力遙遙領(lǐng)先于傳統(tǒng)模型?;贐ERT模型改進的BERT-CNN 模型效果最好,說明CNN進一步提升了BERT的情感特征提取能力。
BERT 模型和BERT-CNN 模型在不同評價指標上的對比如表4所示。

表4 BERT和BERT-CNN實驗結(jié)果對比
本文在解決門戶網(wǎng)站評論的文本情感分析問題中提出了一種基于BERT 模型改進的BERT-CNN 模型。實驗表明,BERT 算法在微博文本數(shù)據(jù)集上比傳統(tǒng)的TextRCNN、FastText、TextCNN、TextRNN-Att、TextRNN 算法有大幅度提升,而本文所提出的BERT-CNN 模型相較于BERT模型在Accuracy、precision、Recall和F1 值上也均有所提高。本文對于網(wǎng)絡(luò)文本情感分析的研究有一定參考意義。
本文所提模型相較于BERT 模型提升幅度較小而且目前BERT 預訓練模型所占用的顯存空間太大,訓練時間仍然較長,消耗資源過多。后續(xù)考慮縮略為更加輕便的預訓練模型,并且考慮融合知識圖譜等方法改進算法以提高準確率。