吳妍秀
(四川大學計算機學院,成都610065)
隨著全球網絡社交媒體的快速發展,越來越多用戶在推特、微博等社交平臺上發布內容,分享自己的個人觀點、態度及情緒,挖掘海量文本中的此類信息變得尤為重要,使情緒分類成為熱門研究方向。情緒分類具有很高的應用價值,它可以為輿情分析[1],個性化推薦,股票預測[2]等任務提供支持。
情緒具有多種分類方式:Ekman 等人[3]將基礎情緒劃分為joy、sadness、anger、fear、disgust、surprise 六類,在SemEval-2007 競賽task 14: Affective Text[4]任務中,1250 條新聞標題被以這六種情緒進行標注;Plutchik[5]提出了八種基礎情緒的分類,分別為acceptance、anger、anticipation、disgust、joy、fear、sadness、surprise。如表1所示,一段文本中可能包含多種情緒,且情緒之間具有關聯,識別句子中同時存在的多種情緒仍是一項具有挑戰性的任務。
多標簽分類任務的定義為:假設X=Rd為d 維的樣本空間,Y={y1,y2,…,yq}為存在q 個標簽的標簽空間,多標簽分類任務從訓練集中學習函數映射h:X→2Y。

表1 SemEval2018 task 1[6]數據集中的推特及對應情緒
多標簽分類任務主要采用問題轉化或算法適應的方法,問題轉化方法將多標簽分類問題轉化為其他較為熟悉的分類問題,算法適應方法采用現有的機器學習技術加以改進來處理多標簽數據。
二元關系法(BR)[7]將多標簽分類問題分解為q 個獨立的二分類問題,每個二分類任務對應標簽空間中一個可能的標簽;多標簽K 近鄰(MLKNN)[8]采用K 近鄰算法作為基礎處理多標簽數據,通過鄰居節點的標簽信息利用最大后驗進行預測。上述兩種方法為一階方法,單獨預測每個標簽,忽略了標簽的共現性,未考慮標簽之間的關聯,造成信息丟失。
基于排序的方法有排序-SVM[9]及校準的標簽排序算法(CLR)[10],排序-SVM 算法采用最大間隔來處理多標簽數據,對q 個線性分類器進行優化,最小化排序損失,并利用核函數解決非線性情況;CLR 將多標簽分類問題轉化為標簽排序問題,為每個標簽對構建二分類器,共構建q(q-1)/2 個二分類器,通過人工插入的閾值標簽得到最后的分類結果。上述兩種方法為二階方法,只考慮了兩個標簽之間的共現性,未考慮真實世界中的標簽關聯不止存在于二者之間。
分類器鏈(CC)[11]將多標簽分類問題轉化為鏈式的多個二分類問題,鏈中前一個分類器的分類結果將輸入后續的分類器中;標簽冪集(LP)[12]將問題轉化為單標簽多分類問題,每個可能的標簽組合被視為一個單獨的標簽,使標簽數量級增長至2q。上述兩種方法為高階方法,可以考慮標簽之間的關聯,但CC 在訓練過程中使用teacher forcing(即分類器的輸入為上一個分類器的黃金標注,而不是其輸出的實際預測結果)會導致預測時的暴露誤差,LP 轉化問題的方式使標簽數量呈冪級增長導致計算困難。
早期使用基于詞典與規則的方法解決該問題:Balahur 等人[13]構建了一個能觸發情緒的常識規則庫EmotiNet,該規則庫記錄了各種觸發情緒的事件,進而對沒有明確提到情緒詞匯的文本進行識別。但是人工構建詞典及規則費時費力,覆蓋率仍不夠理想,且無法探測新詞。
Almeida 等人[14]將BR、CC、LP、MLKNN 等多標簽分類任務的方法直接用于情緒多標簽分類,傳統的多標簽分類方法存在未考慮標簽關聯或計算復雜的問題。
Li 等人[15]統計了Ren-CECps 數據集[16]中的標簽共現頻率及上下文出現相同標簽的頻率,提出了依賴因子圖(DFG)模型,可以建模情緒標簽及上下文之間的相關性。Zhu 等人[17]提出了語料庫融合的方法利用兩個情緒語料庫,首先對兩個語料庫進行有監督的分類任務,然后根據語料庫內約束和語料庫外約束對預測結果進行優化。
近年來,基于神經網絡的方法快速發展,從傳統機器學習人工提取特征的方式變為自動學習特征,由于自然語言序列輸入且不定長的特性,可以使用循環神經網絡RNN 這類神經元節點按時間序列連接的神經網絡,而長短時記憶網絡LSTM 及門控循環單元GRU改進了RNN 梯度消失的問題,使用LSTM 或GRU 編碼輸入句子成為了主流。
Abdul-Mageed 等人[18]利用hashtag 信息對語料進行遠監督標注,使用GRU 對文本進行細粒度的情緒多分類任務;Matsumoto 等人[19]利用emoji 表情符號監督標注語料,分別實驗BiLSTM、BiGRU、CNN 三種神經網絡的分類效果,最終效果BiLSTM 及BiGRU 優于CNN。上述研究雖然使用遠監督學習解決了人工標注語料費時費力,且標注數據不足的問題,但是將情緒分類看作普通的多分類問題,未考慮真實世界中的情緒分類應為多標簽分類問題。
Yu 等人[20]通過遷移學習,利用情感分類任務提升樣本較少的多標簽情緒分類任務的效果,編碼端使用BiLSTM 將句子編碼至兩個特征空間,分別為共享空間及情緒任務專有空間,通過雙向注意力正交優化,捕獲情感詞及情緒專有詞的信息,最后將兩個隱藏向量拼接傳入多層感知機進行分類,但需要人工設定閾值得到最后的多個標簽。Jabreel 等人[21]拼接句子和標簽,形成句子標簽對集合,使用標簽嵌入作為查詢向量計算每個詞的注意力,輸入BiGRU 進行聯合編碼,將多標簽分類問題轉化為由同一個分類模型解決的二分類問題。上述研究未考慮標簽與標簽之間的共現相關性。
在LSTM 的基礎上,可以使用Seq2Seq[22-23]進行多標簽分類任務,將多標簽分類問題轉化為序列標注問題,該模型為編碼-解碼結構,編碼端使用BiLSTM 提取輸入句子的特征,注意力機制通過聚焦文本序列的不同詞,對詞的隱藏狀態求和生成上下文向量;解碼端每個時刻接收上一個時刻的隱藏狀態,及上一時刻的標簽嵌入和該時刻由編碼端得到的上下文向量的拼接,將生成過的標簽進行mask 操作從而避免重復生成,最終按序列生成情緒標簽。該研究將解碼端接收的上一時刻的標簽嵌入改為了概率值加權的標簽嵌入,減弱模型teacher forcing 造成的暴露誤差。
Fei 等人[24]提出了潛在情緒記憶網絡得到先驗的情緒分布,其中的潛在情緒模塊使用變分自編碼器重構輸入的詞袋來學習情緒分布;記憶模塊使用潛在情緒模塊得到的參數矩陣作為查詢向量,對輸入句子計算注意力,捕捉對應情緒相關的上下文特征。模型使用了多跳BiGRU 得到輸出,每個時刻輸出一個情緒標簽的二分類結果,潛在情緒模塊得到的情緒分布矩陣及情緒特征矩陣為整個模型共享,記憶模塊僅針對Bi-GRU 的每個時刻。
近年來,由于該任務受到廣泛關注,有多個研究及競賽提出并標注了數據集,如:SemEval-2007 數據集、NLPCC-2014 數據集、Ren-CECps 數據集、SemEval-2018 數據集等。
目前使用較多的情緒多標簽分類數據集為英文微博文本的SemEval-2018 task 1 的競賽數據集及中文博客的Ren-CECps 數據集。如表2 所示,SemEval-18 數據集已劃分訓練集、驗證集、測試集,情緒標簽為disgust、anger、joy、sadness、optimism、fear、anticipation、pessimism、love、surprise、trust 十一類;CEC 數據集為未劃分的結構化數據,情緒標簽為joy、hate、love、sorrow、anxiety、surprise、anger、expect 八類。
統計得出的句子對應標簽個數如表3 所示,兩個數據集的每個句子樣例均包含一種或多種情緒。

表2 數據集情況

表3 情緒標簽數量的分布情況
針對多標簽分類問題,除了傳統的F1 值度量以外,可以使用漢明損失[25]、杰卡德系數進行度量。漢明損失用于評價被誤分類的樣本標簽對:

其中n 代表樣本個數,l 代表標簽個數,Yi為真實標注,h(x)i為預測結果,漢明損失越小,代表模型預測結果越準確。
杰卡德系數用于衡量兩個標簽集合之間的相似性:

當集合Yi、h(x)i都為空時,Ja 定義為1。杰卡德系數越大,代表模型預測結果越準確。
本文對基于神經網絡的多標簽情緒分類方法進行了研究。多標簽情緒分類對于業界挖掘用戶信息有很大幫助,神經網絡的發展使該任務的效果有了進一步提升。但由于神經網絡的黑盒特性,仍有很多特征提取及解碼方式值得探索。