張浩洋 夏偉賢 熊聰聰 趙叢


摘? 要:社交化媒體蘊含著大量的數據,通過分析數據,可以研究人們的消費習慣,使用用戶導向型策略進行商業化運作獲取直接的經濟收益。社交情緒分析成為這一體系中最重要的技術之一,國外已經對在英文數據集上的情感分析進行過相關研究。該文利用中文數據、神經網絡算法和相關的Web技術對此進行相關的研究,成功構建3個模型,實現了對任意輸入中文句子的情感分析,并可在極短時間內對輸入內容進行高精度的情感預測。
關鍵詞:情感分析? 自然語言處理? embedding? RNN神經網絡
中圖分類號:G206 ? ?文獻標識碼:A 文章編號:1672-3791(2019)07(b)-0186-03
由于有大量用戶生成內容,社交化媒體幾乎已經成為“大數據”的代名詞。挖掘這些豐富的數據可以探尋輿論、前沿和公眾情緒的趨勢。現如今,臉書、推特、微博、微信等一系列社交平臺讓人應接不暇,人們在社交媒體上花費的時間比歷史上任何一個階段都要多,社交媒體數據和社會熱點、市場營銷、品牌及商業的關系更加緊密。
1? 研究背景
情感分析早在20世紀90年代末出現,隨著機器學習中深度學習算法的應用和計算力的提升,快速高精度的情感分析研究近10年不斷地突破。傳統機器學習領域中也有以Native Bayes、Support Vector Machine(SVM)、最大熵等算法針對文本進行情感分析的實例。相比于豐富的英文數據集分析,中文數據進行情感分析的案例比較匱乏,研究文獻較少。
2? 分析方法建立
利用爬蟲技術獲取訓練數據用word2vec時使用緩存技術大大提高訓練性能,使用計算成本相對較低的GRU單元代替常用LSTM單元,使用BRNN解決深度網絡記憶丟失的問題,使用Dense層加softmax的形式靈活調整輸出。
2.1 數據采集和預處理
數據采集利用爬蟲技術采集Web上現有的數據,并編寫代理池,使用random-agent等中間件加快爬蟲的抓取效率。
預處理指把這些數據變成簡單可用的數據形式,用MongoDB進行數據的存取以及利用基本字符串的處理方法,把相應的編碼進行簡單的預處理,編寫相關函數進行數據結構的變換。
2.2 數據分析算法
數據分析算法主要指,采用深度學習中word2vec(count bag of words)對得到的評論進行編碼/詞嵌入embedding,和使用bidirectional-rnn以及gate recurrent unit所構建的RNN進行情感分析的預測,為該項目最核心點。
2.2.1 神經網絡部分架構
該架構主要分為編碼網絡(CBOW)和預測網絡(BRNN-GRU),利用CBOW進行word embedding 并用word embedding vector對BRNN-GRU進行訓練從而得到預測網絡。
2.2.2 編碼網絡
編碼網絡采用word2vec中count bag of words(CBOW) 對分詞進行編碼。
訓練word2vec需要很大量的corpus,故我們采用transfer_learning的技術,利用在大語料庫下訓練所得到的模型對中文分詞進行編碼。
2.2.3 CBOW的數模型結構
softmax(x)=? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)
(2)
(3)
這便是CBOW的前向傳播過程。
其中(2)中代表projection的過程,為輸入的各個進行過one-hot encoding后的向量,U為投影的矩陣,最后由softmax單元進行激活。
(4)
(5)
迭代使用(5)對投影矩陣U進行更新,直至U收斂,此時得到了完整CBOW模型。
由(5)所得的U矩陣就可以進行很好的詞表示:
(6)
由(6)我們得到了詞的詞嵌入函數word_vector該函數可以用來對詞進行embedding能得到很好的詞表示。
2.2.4 適應神經網絡的數據與處理
使用中文分詞工具jieba進行分詞,對評分進行one-hot encoding作為神經網絡的輸出標簽。利用word2vec對已經分好詞句子進行embedding,最終把這些數據一并緩存到磁盤得到sentence_matrix,此時得到的sentence_matrix則為神經網絡的input。
2.2.5 預測網絡(bidirectional gate recurrent neural network)
預測網絡采用GRU單元作為核心的神經元,相比于更加常見的LSTM單元GRU有著計算簡單的優點,卻沒有使得計算性能下降。
GRU單元的數學模型如下:
(8)
(9)
(10)
(11)
[A,B]代表對矩陣的拼接,*表示元素積,t為神經元所在網絡的層數。
GRU單元有兩個update和reset分別確定更新所占的權重以及重置所占的權重其計算分別對應(7)(8),其目的是為了控制神經網絡的記憶時候傳入更深層次的網絡。迭代使用(7)~(10)就可構建初步的rnn網絡的神經元,也是公式(11)所描述函數——GRU函數里面的參數同一RNN網絡里面共享。
接下來使用bidiretional recurrent neural network的結構對GRU單元所構建的rnn再進行一遍結構復雜化可以更好地處理傳統RNN記憶傳遞不到深層網絡的問題。
BRNN的思路相當于訓練兩個神經網絡,然后把同一批數據傳播的方向進行逆序投入網絡中訓練,用兩個網絡在同一時間步上的兩個輸出對后續的狀態進行預測。
下面是GRU-BRNN單元的具體數學模型:
設模型的RNN部分共有n層。
(12)
對(12)進行循環,t從0到n,把\tilde ct當成傳入下一層。
(13)
對(13)進行循環,構建Dense層,調整數據流。
(14)
接下來使用Dense層和softmax單元,即迭代(13)進行輸出數據的維度調整,對各個參數求梯度進行迭代更新直至算法收斂即可,根據輸出數據的不同得到3個模型,即5-bigru、2-bigru、3-bigru。
3? 結果和分析
3.1 訓練結果以及在驗證集上的測試
訓練出3個可供預測的模型:5-bigru、2-bigru、3-bigru,分別對應5分類、2分類和3分類模型。
下面是3個模型在訓練過程中loss和accuracy的變化的圖像(見圖1)。
5-bigru、3-bigru、2-bigru分別對應訓練過程iter1、iter3、iter2(見圖2)。
可以看出各個模型均呈現收斂趨勢,arruracy表現以二分類的模型,2-bigru的表現最好,為85.4%的準確率;5-bigru的最次,為39.4%的準確率。三者在真實的語言環境下都得到了相當準確的預測。
5-bigru準確率相對低下卻能做出合理預測的原因解釋: 原因首先是數據集有5個檔次“積極、不太積極、中性、不太消極、消極”,因為是客觀數據“這電影還行”這樣的評論可能給出“積極、中性、消極”的評價,都可以認為其合理。
改進方法就是把5個檔次的評分變成2個檔次或者3個檔次“積極、消極”或者“積極、中性、消極”,這樣一來準確性會有很大的提升,即2-bigru和3-bigru的準確率要高于5-bigru(見圖3)。
從loss函數的變化可以看出算法基本已經在該數據集上收斂,這證明神經網絡從數據集上學習到了部分數據的特征,可以進行合理的預測。而loss并沒有降低到一個相對低的值,這可能是由于數據集存在擾動;其次算法本身雖然是逼近真實的解空間,但因為神經網絡的結構限制,并不一定可以完美地貼合解空間,故認為這個loss函數的值處于一個合理的范圍。
3.2 模型測試
利用訓練好的模型,對微博的評論數據進行了小規模的預測,結果發現預測在合理范圍的值高于驗證集的理論準確率(見圖4)。
上面給出使用微博數據和3-bigru進行情感分析預測的實際例子,其實際預測大于驗證集的準確率,實用性的準確率比其理論準確率更高。其原因是自然語言本身存在一定的模糊性,相較于人工進行判別而言具有較低的錯誤率,其真實的預測情況要比在驗證集上的效果更好。
4? 結語
模型經測試已經得到了不錯的準確度,未來還是有很大的改進空間,比如換更大的爬蟲,獲得更多的數據,使用更快的計算機器,更換attention-model算法,使用對應預測體系語料庫從新訓練word2vec等。并且文中用到的是jieba分詞,沒有進行優化,按照內容進行專門優化也是以后研究的方向。
參考文獻
[1] Mikolov T,Chen K,Corrado G,et al.Efficient Estimation of Word Representations in Vector Space[J].Computer Science,2013(7).
[2] Le QV,Mikolov T.Distributed Representations of Sentences and Documents[Z].2014.
[3] Bojanowski P,Grave E,Joulin A,et al.Enriching Word Vectors with Subword Information[Z].2016.