薛 濤
(運城師范高等??茖W校 數(shù)計系,山西 運城 044000)
人們通過社交平臺來表達感受、情緒和態(tài)度,社交平臺的帖子中通常包含豐富的信息,因此社交媒體成為熱門研究對象。其中,情感分析是最基本且關鍵的研究主題之一[1-3]。情感分析的目的是分析社交媒體的極性,以判斷人們對某些事件所持有的正面、負面或中性態(tài)度[4-5]。有研究者提出將社交媒體中的表情符號應用于情感極性預測,目前大多數(shù)現(xiàn)有的方法不僅依賴于手工特征,還分別考慮了表情符號和純文本的情感,但并沒有充分探索表情符號對文本情感極性的影響。表情符號在純文本的情感極性中起著重要作用,對于情感原本是中性的純文本,在純文本后添加開心或沮喪的表情會使帖子表達不同的情緒極性。
本研究提出了一種深度學習模型,結合表情符號對文本情感極性的影響以進行情感分析。該模型使用雙向長短期記憶模型來構建社交平臺帖子的表示,使用注意力模型計算每個單詞的權重。研究的主要貢獻有兩點:首先建立了帶有表情符號、包含超過1 萬條帖子的語料庫;其次,聯(lián)合訓練微博帖子中的表情符號和單詞,獲得包含其上下文信息的表情符號表示。
大多數(shù)現(xiàn)有的情感分析語料庫僅包含一小部分帶有表情符號的內容,這些語料庫并不適用于基于表情符號的情感分析。因此,需要收集和注釋帶有表情符號的文本。
由新浪微博收集了250 000 條微博帖子,從中提取了85 000 條包含表情符號的帖子。根據(jù)每個表情符號的出現(xiàn)次數(shù),對微博帖子進行排名,并選擇至少出現(xiàn)10 次的表情符號集。用表情符號分割每條微博帖子,選擇只包含一個表情符號的微博帖子,并過濾掉帖子中的URL、用戶名和主題標簽以清理數(shù)據(jù),并選擇至少出現(xiàn)10 次的表情符號集。用表情符號分割每條微博帖子,并保留長度大于5 的微博帖子。在篩選出的35 000 條微博帖子中,隨機抽取了18 000 條微博帖子進行下一步標記,并使用Jieba 中文文本分詞工具進行分詞。
采用手工標注的方式來構建語料庫。情感極性分為正面、中性和負面,分別用0、1、2 表示。首先,僅根據(jù)文本來判斷每個帖子的極性,即從文本中刪除表情符號,僅使用每條微博帖子的純文本來確定帖子的極性;然后,結合文本和表情符號來確定每個帖子的極性。語料庫的極性結果見表1。
表1 語料庫的極性Tab.1 Corpus polarity %
由此可見,表情符號的出現(xiàn)會改變帖子的情感極性。表2 展示了情感極性變化的社交帖子情況。
表2 情感極性變化的情況Tab.2 Changes of emotional polarity
本文提出的社交情感分析注意力模型結構如圖1 所示。
圖1 情感分析模型Fig.1 Sentiment analysis model
應用雙向長短記憶(Bi-directional Long Short Term Memory,Bi-LSTM)模型學習句子的表征,將表征作為特征對情感的極性進行分類。本文使用PyTorach 來實現(xiàn)該模型,PyTorach 是一個基于Python 的深度學習框架。模型初始化過程如下:
LSTM 能捕獲序列中的長距離依賴關系。一個LSTM模型由多個LSTM 單元組成,其中每個LSTM單元對神經(jīng)網(wǎng)絡中的記憶進行建模。LSTM 單元包含的門結構允許LSTM 存儲和訪問隨時間變化的信息。給定一個包含詞wt的短文本,使用嵌入矩陣We將這些詞嵌入到向量xt=Wewt中,該向量的維度是d。Bi-LSTM 包含一個前向LSTM 以讀取從x1到xT的文本和一個后向LSTM 以讀取從xT到x1的文本,即:
Bi-LSTM 將每個詞wt映射到一對隱藏向量和中,那么一個詞可以表示為一對向量的串聯(lián),即ht=。因此,得到[h0,…,hT],然后將其輸入到平均池化層以獲得句子的表示s。
為了表明表情符號對文本情感極性的影響,提出了一種基于表情符號的注意力機制。給定一個微博帖子,每個詞對情感極性的貢獻是不一樣的,表情符號的交互權重也不均等。EA 機制結合單詞和表情符號來衡量微博帖子中單詞的權重。
在微博帖子{w1,...,wT;E} 中,wi表示單詞,E表示表情符號。首先,wi和E都被轉換為向量表示,即xi和e。
聚合這些詞的表示以形成句子表示,句子表示s是隱藏狀態(tài)hi的加權和,即:
其中,權重ai用于衡量第i個詞的重要性,其計算方式為:
其中,函數(shù)f(·)表示單詞的重要性,函數(shù)f(·)的定義為:
其中,Wh、WE是可學習的參數(shù);vT表示v的轉置;b是偏置。
串聯(lián)了3 種類型的特征,如下所示:
其中,和表示最后一步中前向和后向LSTM 的隱藏狀態(tài)。
訓練的目標是最小化交叉熵損失,在引入基于表情符號的注意力機制后,獲得了用于文本情感分析的特征lc。模型使用線性變換,將lc投影到C種類別的目標空間中:
之后,使用一個softmax 層來獲得微博帖子情感的概率分布:
其中,C是情感標簽的數(shù)量,pc是情感標簽c的預測概率。
softmax 層的python 實現(xiàn)如下所示:
設(d)是帖子的目標分布,pc(d)是預測的情緒分布,D是微博帖子的集合。訓練目標是最小化集合D中的(d)和pc(d)之間的交叉熵損失,則損失函數(shù)定義為:
為了獲得單詞和表情符號的嵌入表示,使用word2vec.3 的SkipGram模式,對由350 萬條微博組成的大規(guī)模語料庫上訓練單詞和表情符號嵌入。
實驗中使用5 重交叉驗證。原始數(shù)據(jù)被隨機分成5 個相等的部分,其中4 個部分用于訓練,第5 部分用于測試。從4 個訓練部分中隨機選擇一個部分作為開發(fā)集來調整超參數(shù)。分類結果通過準確度來衡量。準確度定義為T/N,其中T表示預測的與真實情緒評級相同的情緒評級數(shù)量,N表示微博的總數(shù)量。由于多分類中類不平衡問題,還使用了宏觀精度來進行更公平的比較。
將詞嵌入和表情符號嵌入的維度設置為200。LSTM 單元中隱藏狀態(tài)和單元狀態(tài)的維度設置為100。在訓練期間,使用Adadelta 作為優(yōu)化方法。訓練的批次大小為16,動量為0.9,初始學習率α為0.01。
為了評估本模型的性能,將其與E-only[6]、SVM、LSTM 和Bi-LSTM 等算法進行了比較。其中,E-only 是僅使用表情符號來判斷情感的極性,Bi-LSTM 將微博帖子的文本和表情符號作為Bi-LSTM模型的輸入進行情感分析,實驗對比了各個模型的精度、召回率、F-度量和準確度,表3 給出了所有模型進行情感分析的實驗結果。由于類不平衡問題,算法在中性極性的性能要遠低于其它極性。
實驗結果從表3 的結果可見,由于模型利用了包括文本、表情符號特征,以及表情符號對文本的影響,本文模型表現(xiàn)最佳。這表明基于表情符號的注意力,可以有效地捕捉表情符號對文本情感極性的影響。此外,LSTM 優(yōu)于SVM,表明與具有稀疏指標特征的離散模型相比,神經(jīng)網(wǎng)絡模型能更好地提取文本和表情符號特征。
表3 實驗結果對比Tab.3 Comparison of experimental results
Bi-LSTM模型與本文模型對不同情感極性的準確率比較,結果見表4。從中可以看出,在情感變化方面,本文模型在大多數(shù)情況下優(yōu)于Bi-LSTM模型。
表4 極性變化的準確度對比Tab.4 Accuracy comparison of polarity changes
本研究設計并實現(xiàn)了基于注意力模型的情感分析模型。該模型考慮了表情符號對文本情感極性的影響。與現(xiàn)有的模型相比,本模型實現(xiàn)了較好的性能。未來的工作將在以下兩個方向上進一步研究表情符號對短文本情感極性的影響。首先,將研究擴展到其它類型的短文本。其次,將采用其它神經(jīng)網(wǎng)絡模型以探索表情符號對文本的影響。