黃衛東,程小香
(南京郵電大學 管理學院,江蘇 南京 210003)
伴隨著移動互聯網以及移動終端的飛速發展,在線社交媒體的迅速普及,輿論重心逐漸由線下轉移到線上。微博誕生于2009年,是移動互聯網和Web2.0時代的代表產品。通過微博,用戶可以利用140字的短文本形式發布信息,也可以瀏覽到正在發生的事件,滿足了用戶的社交需求和資訊需求,迅速占領國內市場。據CNNIC統計,截止到2020年6月月底,國內微博用戶數量達5.23億,日活躍用戶2.3億,如此龐大的注冊用戶數量以及活躍用戶數量,讓微博成為國內輿情研究最主要的社交媒體平臺。
通常情況下,具有不同的社會背景、生活經歷以及教育水平的輿情參與主體會對相同輿情事件產生不同的情感,而這種情感影響輿情事件的發展趨勢。情感的傾向可以有效反映出參與主體對輿情事件是積極或是消極的態度,情感強度也可以表現出參與主體對輿情事件的關注度和投入度的大小。該文通過微博話題“暴雪”作為研究對象并收集相關數據,構建Bilstm+Attention+情感副詞詞典的分類模型來研究輿情參與主體的情感強度。
21世紀以來,大量學者針對情感進行分類研究,涉及到的情感分類技術基本可以劃分成三種類型:基于情感詞典的方法、基于機器學習的方法以及基于深度學習的方法。
基于情感詞典的方法主要依靠情感詞典的構建對文本進行分類,通過詞性標注以及詞出現的位置來判斷文本情感。Khoo等人[1]構建了一種通用情感詞典,命名為WKWSCI,并將其和現有的情感詞典分析比較,顯示出較高的分類準確度。Wu等人[2]通過構建原始情感詞典、表情符號詞典以及其他相關詞典,擴大了情感詞覆蓋范圍,提高了實驗的準確性。周知等人[3]提出一種針對短文本的情感詞典構建方法,其結果的準確率、召回率、詞典規模均高于通用情感詞典。但由于網絡新詞的頻繁出現,這類詞在一定時期內會被廣泛使用,并對文本情感影響很大,且情感詞典未定義該類詞,導致情感分類準確率降低。
基于機器學習的方法,包括:支持向量機、樸素貝葉斯、隨機森林等,通過統計的方法將文本情感進行分類。Kumar等人[4]從亞馬遜(Amazon)中提取評論信息,并使用幾類不同的機器學習算法將其判別為積極或消極,實驗性能通過查準率、召回率和F1值來衡量。Long等人[5]基于SVM使用包含先驗概率的樣本數據對股票論壇帖子進行分類,并證明了其有較高的準確率。陳新元等人[6]將詞典抽取的規則情感特征與機器學習的基本特征模板融合,使用樸素貝葉斯等分類器,提高情感分類的性能表現。但是基于統計的機器學習分類方法的工作量巨大,需要大量的人工提取特征,給實際工作帶來諸多不便。
對比機器學習,利用深度學習算法分類方式無需人工的特征提取,可以通過模型內部神經網絡結構進行特征提取。Wang等人[7]采用長短期記憶神經網絡來分析文本的情感類別。楊秀璋等人[8]針對傳統方法對輿情事件情感分析缺乏深層次語義支持,且特征稀疏、上下文關系單薄,導致情感分類準確率較低,無法第一時間感知輿情突發事件等問題,提出一種基于TextCNN Attention的輿情事件情感分析模型,其實驗結果表明該模型優于傳統的輿情情感分類方法。Baziotis等人[9]將Attention機制引入到LSTM中,該算法在SemEval-2017對Twitter的情感分析,獲得了較好的實驗效果。趙宏等人[10]提出的Bert-Han模型能有效提升微博情感分析的Macro F1和Micro F1值,具有較大的實用價值。但是深度學習算法是根據語義提取特征,當特征的相似性接近時,分類效果會隨之降低,無法對情感強度進行區分。
對于情感強度的研究,劉依歡[11]提出了評價詞的確定原則,從不同的角度對評價詞進行分類,并論述了影響文本情感強度的語言因素,包括詞匯、語境、固定搭配、語法手段、標點符號和表情等。來能燁[12]分析實際文本中副詞可以表達出的情感強度,將不同情感強度的副詞賦予不同權重值,通過將句子本身定義的權重值與句中副詞權值相乘來獲得文本總情感強度。李肇明等人[13]提出模糊量化情感詞。根據訓練的語料庫找出情感詞,情感詞的選取標準按照高頻詞匯和情感詞強度權值來選取,其中情感強度權值采用人工標注的方式。尹培培[14]根據現有的情感詞典構建出包括情感極性和情感強度的情感詞典,新的情感詞典中包括修飾詞的詞典,然后基于構建的情感詞典進行文本的情感傾向計算。吳青林[15]從客觀情感強度和主觀情感強度兩方面分析微博情感強度。
針對傳統方法無法準確感知輿情參與主體的情感強度、特征稀疏以及對上下文關系沒有充分挖掘的缺點,構建了一種Bilstm+Attention+情感副詞詞典,利用雙向長短期記憶模型自動提取內部特征對文本情感傾向進行分類,并充分考慮上下文的語義聯系,引入注意力機制,增強文本與結果的相關性,提高分類性能。但深度學習無法準確區分情感強度,該文將情感副詞詞典引入分類模型,構建Bilstm+Attention+情感副詞詞典的分類模型來研究輿情參與主體的情感傾向及強度。
整體框架如圖1所示。
首先利用python從微博平臺的開源API接口獲取輿情參與主體的文本數據信息,保存在excel表格中。之后將數據進行清洗,去除無意義的詞、字母以及標點符號,用jieba進行分詞,關鍵詞展示以及文本長度可視化,這一步可以大致確定接下來特征提取的維度。
利用word2vec提取文本特征并計算中心詞,將文本轉化成向量形式輸入到情感分類模型中,利用Bilstm+Attention+情感副詞詞典分析情感強度。
Bilstm+Attention模型主要由5部分構成,分別是輸入層、詞嵌入層、Bilstm層、Attention層和softmax輸出層,如圖2所示。
(1)輸入層(Input Layer)。
Bilstm+Attention模型的輸入層只接受詞語級形式的輸入,所以先將文本進行jieba分詞等預處理操作后,將結果以詞的形式輸入。
(2)嵌入層(Embedding Layer)。
Bilstm+Attention模型的嵌入層選擇word2vec預訓練好的向量,將文本中的每個詞映射到低維空間,并用表征詞語的向量來計算整個句子的表征向量。
word2vec是一種淺層的神經網絡模型,其中包括兩種模型跳字模型(skip-gram)和連續詞袋模型(continuous bag of words,CBOW),以及兩種高效訓練的方法:負采樣(negative sampling)和層序softmax(hierarchical softmax),并且word2vec詞向量可以較好地表達不同詞之間的相似和類比關系。
(3)雙層長短期記憶層(Bilstm Layer)。
Bilstm模型是在RNN模型上改進而來,其主要包括兩個相反方向的傳播,每個時間點包含一個LSTM單元用來選擇性地記憶、遺忘和輸出信息。LSTM單元的公式如下:
it=σ(Wxixt+Whiht-1+Wcfct-1+bi)
(1)
ft=σ(Wxfxt+Whfht-1+Wcfct-1+bf)
(2)
gt=tanh(Wxcxt+Whcht-1+Wccct-1+bc)
(3)
ct=itgt+ftct-1
(4)
ot=σ(Wxoxt+Whoht-1+Wcoct-1+bo)
(5)
ht=ottanh(ct)
(6)
Bilstm模型對輸入的向量進行前向和后向遍歷,然后將結果加和,公式如下:
(7)
h*=tanh(r)
(8)
式中,xt為t時刻的輸入詞,it為t時刻記憶門的值,ft為遺忘門,ct為t時刻的細胞狀態,ht為t時刻的隱藏狀態,ot為輸出門,gt為上一細胞狀態,W為權重系數,σ為激活函數,b為偏置值。
(4)注意力機制層(Attention Layer)。
注意力機制打破了傳統編碼器-解碼器結構在編解碼時都依賴于內部一個固定長度向量的限制。注意力機制與傳統的Seq2Seq模型主要是前者解并不是直接把所有encoder提供的hidden state作為輸入,而是采取一種選擇機制,把最符合當前位置的hidden state選出來。
(5)輸出層(Output Layer)。
Bilstm+Attention模型輸出層使用softmax分類:
(9)
(10)
整個模型的損失函數(loss function)為:
文本中影響情感強度的因素繁復多樣,最主要的研究方向就是詞匯方面,按照詞性可以將詞匯分成四種:名詞、動詞、形容詞以及副詞。副詞是影響文本情感傾向最典型的因素,其中對情感強度最具有區分度的是副詞,現有系統對副詞的處理方法是根據強度的差異,將其細分成四個等級,之后再給這四個強度分配不同的值,進行情感強度計算。具體分級及示例如表1所示。

表1 程度副詞分級及示例
首先依據Bilstm+Attention模型將文本情感進行正負區分,正向情感用+1來表示,負向情感用-1來表示。再利用jieba分詞工具中的標注詞性模塊將文本中的副詞標注出來,提取文本中的副詞,構造情感副詞詞典。具體公式如下:
(12)
式中,Ti表示第i個文本的情感得分,bi表示第i個文本中副詞等級屬于a的個數,wa=2、3、4、5,(±)i1表示第i個文本的情感正負值。
實驗主要在Windows10環境下完成,通過tensorflow框架構建Bilstm+Attention情感分類模型,編程語言為Python3.6。此外,為驗證算法的有效性,進行了系統的對比實驗。
以“暴雪”為主題詞,首先利用python從微博平臺的開源API接口獲取用來實驗的輿情參與主體的文本數據信息。數據類型有用戶id、用戶發文內容,以及相應的轉發、評論、點贊數量,數據總量為25 643。將數據進行去重處理,保證所有文本都是原創微博,剩余24 496條數據,保存在excel表格中。為了更好地訓練Bilstm+Attention模型以及與其他模型做對比實驗,將一部分數據進行人工劃分情感正負傾向,部分數據如圖3所示。
針對微博輿情事件進行情感分析研究,其評價過程采用三個指標,即精確率(precision)、召回率(recall)和宏平均(F1-score)。其計算公式為:
(13)
(14)
(15)
式中,TP表示預測為正類且實際也為正類的數量,FP表示實際為負類預測為正類的數量,FN表示實際為正類預測為負類數量。
(1)關鍵詞云展示,如圖4所示。
在關鍵詞云中,詞語的大小表示出現的頻率,位置代表詞語與其他詞語的親密程度。正面情感詞有安全、及時、暢通等,負面情感詞有寒潮、災害、患者等,也包括一些中性詞語,例如:醫院、地區、人民等。通過關鍵詞云可以在海量的數據中直觀地展示出輿情參與主體關注的重點方向。
(2)文本長度分布,如圖5所示。
文本長度可以為提取特征的維度提供依據,根據大部分文本長度分布的區域選擇相應大小的維度,可以提高結果的準確度和可靠性。從圖5中可以看出大部分文本處于區間[30,130]之間,經調整后,文本長度設置120時,實驗效果最佳。
(3)對比結果分析。
通過Bilstm+Attention模型對微博輿情參與主體的情感傾向進行分析,并與其他三種深度學習算法進行詳細的對比實驗,包括CNN+Bilstm、Bilstm、TextCNN。實驗指標選擇精確率(precision)、召回率(recall)以及宏平均F1(F1-score)。
分別對正面情感和負面情感的文本進行預測,并繪制如圖6所示的正面輿情結果,如圖7所示的負面輿情結果。
由圖6可知,文中算法在正面情感分析中,其精確率為0.85、召回率為0.81、宏平均F1值為0.83,這些情感分析評估結果綜合來看高于其他深度學習結果。在圖7中,微博輿情參與主體的正面情感分析評估結果總的來說也優于其他三種算法,其精確率為0.86、召回率為0.81、宏平均F1值為0.84。通過上述對比實驗,進一步驗證了文中算法的良好性能。
(4)情感強度分析。
利用Bilstm+Attention模型對剩余的9 972條數據進行情感傾向分類處理,得出情感傾向,利用jieba分詞工具標注實驗文本的詞性后將副詞提取出來,構建副詞詞典。實驗部分結果如圖8所示。
根據實驗結果,將文本的情感強度以發布時間為基礎進行累加,時間范圍為2021年11月4~14日,分別計算每天正向情感總強度、負向情感總強度,與真實情況作比較。為了更好地擬合輿情走勢,將結果映射到相應的區間里,如圖9所示。
從上述兩張圖中可以看出每日的情感總強度與輿情走勢情況,兩者的趨勢基本一致。負面情感輿情走勢及實驗結果的情感強度在11月8日達到頂峰,正面情感輿情走勢及實驗結果的情感強度在11月10日達到頂峰。根據實際情況可知,8日的暴雪導致列車停運、學校停課、路面濕滑等,這些事件導致輿情參與主體總體情感較為消極。11月10號可知,政府部門及時介入,包括疏通鐵路干線、清除路面積雪、開展相關宣傳等,有效地消除了輿情參與主體的負面情緒,緩解了緊急的事態。
針對傳統方法無法準確感知輿情參與主體的情感強度、特征稀疏以及對上下文語義關系沒有充分挖掘的缺點,構建了一種Bilstm+Attention+情感副詞詞典,利用雙向長短期記憶模型自動提取內部特征對文本情感傾向進行分類,并充分考慮上下文的語義聯系,引入注意力機制,增強文本與結果的相關性,提高分類性能。但深度學習無法準確區分情感強度,該文將情感副詞詞典引入分類模型,構建Bilstm+Attention+情感副詞詞典的分類模型來研究輿情參與主體的情感傾向及強度。實驗結果表明,構建的模型計算的輿情參與主體情感強度可以有效反映出輿情走勢。
對于影響情感強度的因素,該文只考慮了詞匯因素,像表情、特殊符號、圖片等因素也包含豐富的情感信息。在未來的研究中,將會考慮以上的問題,進一步提高情感強度分類的準確度。