張 苑, 祝小蘭, 楊東曉
(青海大學 計算機技術與應用系, 西寧 810016)
2019 年新型冠狀病毒肺炎疫情備受社會各界關注,2020 年1 月1 日~2 月20 日,疫情相關微博話題數超過200 個。 如何挖掘海量、多樣化數據中的有價值信息已逐漸成為研究熱點。 近年來,隨著計算機技術的飛速發展和硬件的不斷完善,深度學習技術得到了廣泛的應用,其處理能力也得到了很大的提高,引起了許多學者的關注。 深度學習(Deep Learning)的概念最早是在2006 年,由多倫多大學的G.E.Hinton 等人提出,是一門用于學習和利用深度神經網絡的機器學習技術,主流算法模型包括卷積神經網絡(Convolutional Neural Networks,CNN)和循環神經網絡(Recurrent Neural Networks,RNN)。 深度學習是指通過一定的訓練方法,以大量的樣本數據為基礎,獲得多層次深度網絡模型結構,進而實現自動的分類識別的機器學習過程。 情感分析又稱觀點挖掘,是指在傳遞信息時,分析說話者所隱含的情緒、態度和觀點,以便做出判斷或評估。 就文本而言,一個句子的情感取向一般比較清晰,積極的情感代表積極的含義,如:贊美、喜悅、歌頌等;消極情緒表示消極的含義,如:貶損、悲傷、嫉妒等。
此次疫情為重大社會熱點事件,對疫情期間的情感進行準確判別和可視化分析能客觀反映出疫情輿情的發展動向。 因此,本文以與新冠疫情相關的微博文本內容為研究對象,使用深度學習技術對網民情感進行分析識別,為政府把握社會輿論,有效的做好預防和輿論引導,進而制定科學合理的決策提供輔助決策支持。
隨著深度學習的興起和應用,很多學者開始采用深度學習技術來處理情感分類問題。 劉思琴等人提出基于雙向編碼器表征技術(Bidirectional Encoder Representations from Transformers,Bert)預訓練語言模型與雙向長短期記憶(Bidirectional Long Short Term Memory,Bi-LSTM)神經網絡及注意力機制相結合的神經網絡模型進行文本情感分析;謝潤忠等人針對句子級文本情感分析問題,提出了基于Bert 和雙通道注意力模型,實驗結果表明:Bert模型能夠較好的提取文本特征,有助于提高情感識別的準確度;陳珂等人使用了詞語和單字粒度的特征信息,提出了一種多粒度門控卷積神經網絡模型,并應用在中文微博情感分析任務中;王安君等人提出并擴展了一種基于Bert-Condition-CNN的檢測模型,利用Bert 預訓練模型來獲取文本的句子向量,構造關系矩陣Condition 計算層來反映兩個文本序列的關系特征,并使用卷積神經網絡CNN 提取Condition 層的特征;陳珂等結合CNN 和特定的情感特征進行情感分析,提出了一種基于多通道卷積神經網絡模型,用于中文微博情感分析;趙容梅等人使用CNN 提取文本特征,結合長短期記憶神經網絡(Long Short-Term Memory,LSTM)結構來提取上下文的信息,并在模型中添加了注意力機制,建立了一個新的混合神經網絡模型,實現分析文本隱含的情感;潘東行等人采用Word2vec 詞嵌入技術提取文本的特征,分別研究了基于LSTM 和雙向門控循環單元(Bidirectional Gated Recurrent Unit, Bi-GRU)的分類模型,并基于各種深度的分類模型研究了包含注意機制的分類模型;朱燁等人提出了一種結合注意力機制Condition 和CNN 的評論文本情感分類模型;羅春春等人提出了一個融合了雙重注意力機制與Bi-LSTM 的模型,并證明在微博情感的分類效果上其優于其他模型;蓋赟等人通過Word2vec 計算文本的詞向量,利用LSTM 對輿情文本進行情感分析;張瑜結合了CNN 和RNN 的優勢,提出了多重卷積循環網絡,從而把握文本情感模式的變化。 針對商品評論的情感分析問題,蘇秀芝等人應用LSTM 對文本進行情感分類;國顯達等人提出了一種基于CNN-BiLSTM 的在線分析評論情感方法;史振杰等人提出了一種基于預先訓練的Bert 網絡和CNN 相結合的混合網絡模型,該模型提取的情感特征可以捕獲文本中更多的情感信息;常城揚等人對比了傳統CNN 模型和RNN 模型在數據集上的分類效果,選擇微調Bert 預訓練模型得到分類器,再將未知的美國政客推文輸入分類器,得到識別結果;黎潔君以微博上關于新疆的熱門評論為樣本,通過構建LSTM 模型對每條評論進行評分,分析其正負性;吳鵬等人提出了一種基于LSTM 和認知情感評價模型的網絡;曹宇等人提出了一種基于Bi-GRU 的中文文本情感分析方法;繆亞林等人提出將Bi-GRU 與CNN 相結合的文本情感分析模型,通過CNN 和Bi-GRU 對文本的局部靜態特征以及序列特征進行提取,然后進入(Gate Recurrent Unit,GRU)層進一步對數據降維,最后,使用Sigmoid 函數對情感進行分類。
深度學習技術在新型冠狀病毒肺炎疫情情感分類方面也有諸多應用,劉洪浩等人采用Bert 模型對新冠肺炎疫情期間的微博評論進行分析,并基于詞頻和詞云進行相關性分析,達到全面了解疫情期間社會情緒狀態的目的;Müller 等人針對近期新冠疫情熱點,在擁有1.6 億條推文的大型數據集上訓練出COVID-Twitter-Bert 預訓練模型,該模型在完成來自社交媒體的有關新冠疫情文本的自然語言處理任務中相比其他基本模型,有10%~30%的效果提升;Yin 等人提出了一個基于詞庫和語法規則的情感識別方法,用以分析大量和疫情相關推文的情感隨時間動態變化的規律;王楠等人提出了一種新的情緒分析框架,并結合社會網絡分析法,分析了在疫情時期不同類的政務媒體在情感傳播方面的特點,構建了基于LSTM 的情緒分類模型,研究用戶的情感體驗;劉忠寶等人利用條件隨機場模型從微博新聞中提取疫情事件,以與新冠肺炎疫情相關的微博新聞及其評論為研究對象,構建與疫情相關的事件畫像,進一步在情感詞典的基礎上引入Bi-LSTM 模型建立網民情感畫像,利用基于自注意力機制的Bi-LSTM 模型分析疫情事件與網民情感之間的關系。
基于上述研究,本文基于深度學習技術分別構建了Bert 模型、Bert-CNN 模型和Bert-RCNN 模型對網民情感進行分析和識別。
深度學習是機器學習研究的一個分支,其動機在于建立深度神經網絡,模擬人類大腦進行分析學習,進一步實現物體的自動分類與識別。 主流的深度 神 經 網 絡 模 型 有 許 多, 如 AlexNet、 VGG、GoogLeNet、ResNet 和MobileNet、LSTM 等。 本文主要研究Bert、Bert-CNN 和Bert-RCNN 3 種模型。
Bert 模型擁有一套完整的自然語言處理方案,該模型具有強大的語義理解能力,包含了從訓練數據集到微調指定任務的完整流程,該模型以Transformer 編碼器為基礎,主要內容包括基于Transformer 的模型結構、預訓練和微調。
基于Transformer 的模型結構:首先,文本輸入經過詞嵌入層,將每個詞映射到指定的維度,得到單詞的詞向量;其次,將詞向量輸入編碼層,包含自注意力機制(Self-Attention) 層和前饋神經網絡(Feedforward Neural Network)層。 Self-Attention 層幫助當前節點不僅僅只關注當前的詞,從而能獲取到上下文的語義,Self-Attention 處理數據后,把數據送給前饋神經網絡,前饋神經網絡的計算可以并行,得到的輸出會輸入到下一個編碼器。
在預訓練中,Bert 需完成兩項任務,即隨機預測遮蓋詞語,并判斷后一句是否和前一句屬于同一句子的二分類任務。 隨機預測遮蓋詞語就是隨機替換或遮蔽句子中的任何一個或多個單詞,通過上下文理解,讓模型預測被替換或遮蔽的部分。 此外,Bert 還需完成一個二分類任務,即判斷B 句是不是A 句的下一句,能使Bert 學會如何輸出一個更好的句子表達。
微調即添加相應的輸出層,基于有監督的數據集訓練整個模型,使模型的預測值與真實輸出值之間的誤差最小,進而得到最佳網絡模型。 基于Bert的疫情情感分析模型,如圖1 所示。

圖1 基于Bert 的疫情情感分析模型Fig. 1 Epidemic sentiment analysis model based on Bert
CNN 是一種帶有卷積結構的神經網絡,包括卷積層(Convolution)、池化層(Pooling)和全連接層(Fully Connected Neural network,FCN)。 其中,卷積層用于提取深層特征;池化層是一種降采樣操作(Subsampling),主要作用是降維;全連接層實現從輸入數據到分類標簽集的映射,即分類操作。 此外,CNN 采用的局部感知、權值共享和下采樣方式,減少了參數數量,使網絡易于優化,進而提高了網絡訓練性能和分類效果。 本文Bert-CNN 模型由Bert 和CNN 融合而成,主要包括文本輸入層、Bert 層、CNN層和輸出層。
CNN 有一個缺陷,即卷積窗口的大小是靜態的。 如何設置窗口的大小也是一個問題,如果設置過小,有效信息將丟失;如果設置太大,將添加許多參數。 因此,針對模型問題,Siwei Lai 等人提出了循環卷積神經網絡模型(Recurrent Convolutional Neural Networks,RCNN)。 RCNN 將CNN 中的卷積層替換為帶有遞歸結構的循環卷積層,并按照前饋連接方式構建網絡結構,RCNN 能夠較為均勻地利用單詞的上下文信息,具有較好的文本特征提取效果。 本文中Bert 模型疊加的另外一個深度學習神經網絡模型為RCNN,即Bert-RCNN 模型。
本文基于深度學習的疫情情感分析模型,首先用文本分詞及正則表達式、詞性、停用詞表過濾等方法進行預處理操作;其次,分別構建Bert-CNN 模型、Bert-RCNN 模型;最后,對模型進行訓練和優化,得到最佳模型。
首先,使用jieb 文本進行分詞;其次,用正則表達式來過濾一些原始數據中包含的一些無意義噪聲,并進行詞性與停用詞表的過濾,本文保留了與情感表達相關的詞(名詞、形容詞、副詞、動詞、助詞、嘆詞),因為這些詞對文本分類來說意義較大,使用HanLP 開源代碼中的核心停用詞表進行第二次過濾;最后,本文數據集中共有10 萬條記錄,按照18 ∶1 ∶1的比例進行數據劃分。
Bert 模型通過查詢字向量表將文本中的每個字轉換為一維向量作為模型輸入,模型輸出則是輸入各字對應的融合全文語義信息后的向量表示。 此外,模型輸入除了字向量,還包含另外兩個部分:文本向量和位置向量。
(1)文本向量:該向量的取值在模型訓練過程中自動學習,用于刻畫文本的全局語義信息,并與單字或詞的語義信息相融合。
(2)位置向量:由于出現在文本不同位置的字或詞所攜帶的語義信息存在差異,因此,Bert 模型對不同位置的字或詞分別附加一個不同的向量以作區分。
最后,Bert 模型將字向量、文本向量和位置向量的和作為模型輸入,Bert-CNN 與Bert-RCNN 則將Bert 輸出的相應的隱藏狀態的完整序列作為輸入。
3.3.1 Bert-CNN 模型
首先,文本經過Bert 層以后,將Bert 輸出的隱層狀態的完整序列擴展一個維度;其次,采用激活函數將隱層神經元輸出,接著輸入到卷積層,通過卷積運算將輸入矩陣映射為一個低維矩陣,并在卷積結果中,選擇一個最大值作為輸出,即最大池化(Max Pooling),進一步按照維度1 進行拼接;最后,輸入到線性分類器(Linear),實現多分類任務,完成Bert-CNN 模型的構建。 基于Bert-CNN 的疫情情感分析模型如圖2 所示。

圖2 基于Bert-CNN 的疫情情感分析模型Fig. 2 Epidemic sentiment analysis model based on Bert-CNN
3.3.2 Bert-RCNN 模型
首先,將文本輸入到Bert 層,并將Bert 輸出的隱層狀態完整序列作為RCNN 層的輸入;其次,構建循環卷積神經網絡層,該層是一個雙向循環神經網絡模型,一個單詞的上下文是通過正向LSTM 和逆向LSTM 來構建的,將Bi-LSTM 獲得的隱層輸出和詞向量拼接即可得到新的向量,采用激活函數將新的向量通過非線性操作映射到較低維度;向量中的每一個位置的值都取所有時序上的最大值,得到最終的特征向量;最后,將特征向量輸入到Linear 分類器,實現多分類任務,完成Bert-RCNN模型的構建。 基于Bert-RCNN 的疫情情感分析模型如圖3 所示。

圖3 基于Bert-RCNN 的疫情情感分析模型Fig. 3 Epidemic sentiment analysis model based on Bert-RCNN
3.3.3 模型訓練
本文中Bert 模型、Bert-CNN 模型及Bert-RCNN 模型的訓練過程基本一致,具體流程如下:
(1)構建迭代器,分批將數據輸入到模型,每批(batch)128 條數據,并設置學習率。
(2)訓練模型參數,定義需要和不需要梯度衰減的參數,一般層標準化的偏差和權重以及模型的偏差不需要衰減,同時定義被衰減參數的衰減程度。
(3) 設置優化器,本文中采用Bert 優化器(BertAdam)。 進行迭代,先將訓練數據輸入到模型,在完成了一批數據的訓練以后,手動將梯度清0。 此外,還需要計算損失值,同時反向傳播更新梯度,在完成了上述操作之后,更新所有參數。 此處用交叉熵損失函數,其計算公式(1):

其中,為類別的數量;[,…,p] 是一個概率分布,每個元素p表示樣本屬于第類的概率;[,…,y]是樣本標簽的編碼表示,當樣本屬于類別時y=1,否則y=0。
(4)設置模型訓練終止條件,若超過500 batch效果還沒提升,即校驗集的損失值超過500 batch 沒有下降,則結束模型訓練過程。
本文實驗環境:操作系統為64 位Windows 10系統,Anaconda 版本為2019-10,Python 版本為3.7.4,Jieba 版本為0.42.1,Pytorch 版本為1.5。 內存8 G,硬盤由128 G 固態硬盤和1 T 機械硬盤組合而成,CPU 為因特爾酷睿i5-8300H 四核八線程處理器,顯卡為英偉達GTX1050TI,4 G 獨顯。
數據集來源于官方競賽平臺(DataFountain),以與“新冠肺炎”有關的230 個主題詞為數據采集依據,共爬取了2020 年1 月1 日~2020 年2 月20 日期間的100 萬條微博數據,并對其中的10 萬條進行手工標注,分為3 類:1(正向)、0(中性)和-1(負向)。 數據集的詞云圖如圖4 所示,從詞云可以看到,輿論關注的重點是新型冠狀病毒及其相關內容,例如:疫情防控、冠狀病毒感染、確診病例等,并且也比較關心武漢的情況,會給武漢加油,給中國打氣。

圖4 數據集詞云圖Fig. 4 The word cloud map of data set
4.3.1 評價指標
本文文本分類模型的評價指標采用準確率() 和1 值(1) 兩 個 指 標。代表分類器對整個樣本判斷正確的比重,精確率() 指被分類器判定正例中的正樣本的比重,召回率() 指被預測為正例的占總的正例的比重,1值常用來最終評價分類模型的好壞,公式(2)(3):

其中,表示情感預測為正類且正確的數量;表示情感預測為負類且正確的數量;表示負類錯誤預測為正類的數量;表示正類錯誤預測為負類數量。
4.3.2 本文方法實驗結果
本文通過實驗進行對比分析,將需要衰減的參數衰減度值設置為0.01,不需要衰減的參數則設置為0.0。采用的和兩種激活函數。函數的定義式(4),函數的定義式(5) 如下:

其中,是輸入值;是具有0 均值和單位方差的高斯隨機變量;(≤)是小于或等于給定值的概率;() 是(0,1) 時的分布函數。
此外,本文采用1和準確率指標評估模型的效果,進一步通過實驗對比分析,尋找最優學習率參數值。 Bert-CNN 模型、Bert-RCNN 模型在測試集上的最優表現及其最佳學習率、1和準確率見表1,直觀對比結果如圖5 所示。

表1 本文模型在測試集上的最優表現Tab. 1 The optimal performance of the Proposed models on the test set

圖5 本文模型在測試集上的表現對比圖Fig. 5 The optimal performance comparison chart of the proposed models on test set
如圖5 所示,當激活函數為時,模型Bert-RCNN和Bert-CNN 的效果最佳,最優學習率分別是0.000 2和0.000 3,Bert-RCNN 模型效果最好,1值為0.702,準確率為73.56%。 部分文本分詞結果見表2。
4.3.3 與其他模型的對比
為了進一步驗證本文兩種模型的有效性,在相同的實驗環境和評價指標條件下,將其與LSTM、Bi-LSTM、GRU、Bert 模型的實驗效果進行了對比,對比結果見表3,直觀對比如圖6 所示。

表2 部分文本分詞結果Tab. 2 Part of the text segmentation result

表3 不同模型在測試集上的分類效果Tab. 3 The performance of some models on the test set

圖6 不同模型在測試集上的分類效果對比圖Fig. 6 Comparison of the performance of some models on the test set
可以發現,Bert-RCNN 模型的分類效果最佳,準確率為73.56%,1為0.702;Bert-CNN 模型的表現與Bert-RCNN 模型接近,準確率達到了72.95%,1達到了0.701;本文的Bert-CNN模型和Bert-RCNN 模型的分類識別效果明顯優于其他單個模型。
如果僅對比單個模型, Bert 模型的分類效果也是最佳的。 首先,Bert 模型擁有更深的層次,放棄了循環神經網絡架構,采用注意力機制來解決長期依賴問題,并且疊加了12 層自注意力機制層;另一方面,Bert 模型在預訓練中完成隨機預測遮蓋詞語和二分類任務,使得Bert 能輸出更好的句子表達。
本文在Bert 模型的基礎上分別疊加了CNN 和RCNN 網絡,也即Bert-CNN 模型和Bert-CNN 模型。 Bert 模型疊加了CNN 和RCNN 模型以后,分類效果對比單個Bert 模型有了一定的提升,是因為CNN 和RCNN 本身就是文本分類模型,模型疊加以后,能夠學到Bert 模型未能學習到的內容,從而提高了分類效果。 而疊加RCNN 比CNN 模型表現更好,因為RCNN 模型結合了Bi-LSTM 和CNN 來實現文本分類任務。
本文以與新型冠狀病毒肺炎疫情相關的微博內容為研究對象,首先,采用文本分詞、正則表達式、詞性和停用詞表過濾等方法進行預處理操作;其次,基于深度學習分別構建了Bert-CNN 模型和Bert-RCNN 模型,對網民情感進行分析和識別;最后,實驗驗證和分析,得到了較好的識別效果,為政府進一步做好疫情預防控制工作的宣傳、輿論引導、決策的制定提供輔助決策支持。