作者:xg123321123
出處:http://blog.csdn.net/xg123321123/article/details/53121473
聲明:版權所有,轉載請聯繫作者並註明出處
1 問題定義
基於Document level的情感分析用於根據document確定用戶對產品的整體情感傾向。
2 背景綜述
1、傳統方法
將情感分析作爲一個文本分類問題,將標註好的情感傾向(比如positive,negative)或者情感分數作爲類別label,用機器學習的方法訓練文本分類器。
由於分類器的性能極大依賴於文本特徵(例如bag of word),所以傳統方法的重心在於如何設計出更好的特徵提取器。
2、深度學習方法
利用設計好的神經網絡來學習低維文本特徵。然而,這些方法忽略了用戶和產品的特徵。
3、以往方法的缺點:
- 只注重局部文本信息,忽略全局的用戶偏好以及產品特點;
- 鑑於模型複雜度,就算考慮用戶偏好和產品特點,也只是單詞層面的。
3 靈感來源
有論文嘗試過將用戶、產品的信息和神經網絡結合起來。
在輸入層將word embedding和preference matrix作爲輸入,利用CNN提取文本特徵,然後將user/product vector和文本特徵結合後輸入到softmax。
然而模型的問題在於:
- 數據量(用戶評論)較少的情況下,訓練preference matrix比較困難(效果不理想);
- 只利用了word evel的用戶和產品信息,忽略了document level信息的使用。
4 方法概述
- 以word爲單位輸入LSTM,提取每個sentence的特徵,再以sentence爲單位輸入LSTM,提取document的特徵;
- 根據attention機制在不同的語義層面加入產品和用戶的信息。
- 最後將得到的特徵進行分類。
層級LSTM
- word->sentence
- 將每個word映射到低維語義空間,得到相應的詞嵌入
wij ; - 每次輸入一個詞嵌入,LSTM的cell state
cij 和hidden statehij 都得以更新,這樣輸入一個句子就得到一系列的hidden state[hi1,hi2,...,hili] ; - 將這一系列的hidden state輸入average pooling layer,得到句子表示
si 。
- 將每個word映射到低維語義空間,得到相應的詞嵌入
其中
這裏
- sentence->document
- 將上一步得到的sentence向量表示
[s1,s2,...,sn] 送進LSTM; - 經過如上的變換過程,一篇document得到一系列的hidden state
[hi1,hi2,...,hili] ; - 將這一系列的hidden state輸入average pooling layer,得到文檔表示
d 。
- 將上一步得到的sentence向量表示
attention機制
不同的word對於表達這個sentence含義的貢獻應該是不一樣的,同理,不同的sentence對於表達這個document含義的貢獻也應該不一樣。
但上述建模過程中,由LSTM的隱層狀態到更高一級的語義表示過程中,average pooling操作相當於每個word(sentence)對sentence(document)的語義表示貢獻是一致的。
attention機制通過賦予sentence和document中不同部分在語義表達中不同的貢獻度來提取出特定user/product的關鍵詞;同時考慮了用戶和產品特點對最終情感傾向的影響。
word-level User Product Attention
- 上面每個句子經過LSTM後得到了一系列的hidden state
[hi1,hi2,...,hili] ; - 在利用這一系列hidden state得到sentence representation時,並不是利用average pooling操作,而是根據下式得到:
si=∑j=1liαijhij - 上式中
αij 代表一句話中每個詞的權重,表示爲:αij=exp(e(hij,u,p))∑lik=1exp(e(hik,u,p)) - 上式中u和p分別是用戶(user)和產品(product)所映射到的連續實數空間中的向量,e則是衡量每個單詞在這句話中重要性的score function,表示如下:
e(hij,u,p)=vTtanh(WHhij+WUu+WPp+b)
其中WH,WU,WP 是權重矩陣;v 是權重向量。
- 上面每個句子經過LSTM後得到了一系列的hidden state
sentence-level User Product Attention
- sentence-level的attention機制和word-level的類似,表示如下:
d=∑i=1nβihi - 用
β 來表示句子在整個document中的權重,而不再用average pooling操作來獲得整個document的表示。
- sentence-level的attention機制和word-level的類似,表示如下:
情感分類
經過上述流程得到的document representation是文本的高維特徵,可以將其作爲情感分類的特徵。
- 先用非線性映射將特徵
d 映射到C類的目標空間:d^=tanh(Wcd+bc) - 再用softmax函數進行分類:
pc=exp(d^c)∑Ck=1exp(d^k)
其中C 是類別數,pc 是屬於類別c 的概率; - 訓練時,採用交叉熵作爲損失函數:
L=−∑d∈D∑c=1Cpgc(d)⋅log(pc(d))
其中pgc 是ground truth,D 是訓練數據.
5 模型分析
- UPA機制對於模型性能都有提高,其中user信息對模型性能提高更多;
- 在word level和document level加入attention機制,都能提高性能,其中word level的提高要更顯著,可能原因是因爲document主題多變,attention機制不容易抓住重點;
- 排除了長度對於模型的影響,模型在各種長度的document上都有提升。
6 未來展望
- 注意利用user和product的profile信息;
- 嘗試將模型用在aspect level sentiment上。
注:給定一個句子和句子中出現的某個aspect,aspect-level sentiment的目標是分析出這個句子在給定aspect上的情感傾向。
例如:great food but the service was dreadful!
在aspect “food”上,情感傾向爲正,在aspect “service”上情感傾向爲負。Aspect level的情感分析相對於document level來說粒度更細。
本篇博客主要參考自
《< Neural Sentiment Classification with User and Product Attention>學習筆記》