應用:
1)正面VS負面的影評(影片分類問題)
2)產品/品牌評價: Google產品搜索
3)twitter情感預測股票市場行情/消費者信心
html
利用機器提取人們對某人或事物的態度,從而發現潛在的問題用於改進或預測。
這裏咱們所說的情感分析主要針對態度(attitude)。
注:Scherer 情感狀態類型主要能夠分爲:
情緒(emotion):有必定緣由引起的同步反應。例如悲傷(sadness),快樂(joy)
心情(mood):沒有明顯緣由引起的長期低強度的主觀感覺變化。例如憂鬱(gloomy),倦怠(listless)
人際立場(interpersonal stance):對他人的特定反應。例如疏遠(distant),冷漠(cold)
態度(attitude):對特定人或事物的帶有主觀色彩的偏好或傾向。喜歡(like),討厭(hate)
個性特質(personal traits):相對穩定的個性傾向和行爲趨勢。例如焦慮(nervous),渴望(anxious)
具體定義能夠參考這篇文章git
考慮到態度能夠具體分紅一下內容:
1) 態度的持有者(source)
2) 態度的目標(aspect)
3) 態度的類型:一系列類型如喜歡(like),討厭(hate),珍視(value),渴望(desire)等;或着簡單的加權極性如積極(positive),消極(negative)和中性(neutral)並可用具體的權重修飾
4) 態度的範圍:某句話/全文
所以情感分析的目標能夠分爲一下幾種:
初級:文章的總體感情是積極/消極的?
進階:對文章的態度從1-5打分
高級:檢測態度的目標,持有者和類型web
極性檢測(Bo Pang et.al. Thumbs up? Sentiment Classification using Machine Learning Techniques. EMNLP-2002, 79-86)
數據樣例: IMDB影評數據
步驟:
1)分詞(tokenization)
分詞的一些問題:
1.若是數據來自HTML或XML格式,那就須要處理相應的標記;
2.Twitter標記(名字,哈希標籤);
3.大小寫(中文不存在);
4.均一化電話號碼和日期等數字;5. 表情符號(emoticons)
2)特徵提取(feature extraction)
特徵提取的問題:
1.如何處理否認詞;
在否認詞的到最近的標點之間的全部詞添加NOT_前綴(全部否認詞後的詞極性取反,最先由Das, Mike Chen et.al 在Yahoo! For Amazon: Extracting market sentiment from stock message boards. 2001. APFA中提出)
2.什麼詞用於分析:只用形容詞/全部詞 (在樣例數據上表現更好)
3)分類(classification):經常使用分類器 - 樸素貝葉斯,MaxEnt分類器,SVM
樸素貝葉斯(naïve Bayes)
解釋一下:左邊表明的是這個評論的極性類型,就是右邊機率最大的狀況下的極性類型。P(cj)指該極性類型出現的機率,ΠP(wi|cj)指在當前極性條件下文檔中各個詞出現的機率的乘積。
這裏的用Laplace(+1 smoothing)轉換:
其中V就是當前訓練文本的詞彙量。
二項(布爾值)多項式樸素貝葉斯(Binarized/Boolean feature multinomial naïve Bayes):一篇文檔中出現的全部出現的詞的頻率計數爲1.
原則:對情感而言,詞是否出現比其出現的次數更有意義。
a) 模型訓練:
1.從訓練文庫中提取詞彙
2.計算P(cj)
3.計算P(wk|cj)
Boolean naïve Bayes的特色就是第一步去重,而後才把全部文檔合併爲一個大文檔;而最後的α就是以前所提到的Laplace處理。
b) 驗證集:
c) 具體例子:
通常naïve Bayes:
在測試集上,C類Chinese出現頻次爲5,P(Chinese|C) = 5/8;在驗證集上的頻次爲3.
Boolean naïve Bayes:
去重後,測試集上C類的Chinese頻次爲3,P(Chinese|C)=3/6;驗證集上頻次爲1.
注:1. 通過測試Boolean naïve Bayes的效果比計數全部詞的通常naive Bayes要好;2. Boolean naïve Bayes與multivariate Bernoulli naïve Bayes(MBNB) 不一樣,後者不適用與情感分析相關的問題。3. 頻次統計除了全部詞或去重只保留一個,還能夠用log(freq(w)),詞頻介於二者之間,可能效果會更好。
d) 交叉驗證(cross-validation)
這個材料由不少在這就不具體展開了,沒聽過的能夠看這裏
注: 通常來講,除此之外最後會用一個沒有在交叉驗證數據集中的驗證數據集來最後測試一下,防止過擬合。
e) 分類的其餘問題
MaxEnt與SVM分類器通常在大量數據下表現比naïve Bayes要好
4)問題:沒法對那些沒有出現明顯的感情詞彙但表達了積極或消極的情感的文本進行正確分類。例如:
順序效應(florida expectation problem)(前面描述了很長很期待的句子,但只是爲了表達不滿)。例如:
算法
General Inquirer (Philip, 1966); LIWC (Pennebaker, 2007); MPQA Subjectivity Cues Lexicon (Riloff and Wiebe, 2003); Bing Liu Opinion Lexicons (Bing Liu, 2004); SentiWordNet (Stefano, 2010)
各詞典對於極性的判斷比較一致,能夠隨便用。
分析IMDB評論極性:
1)將1-3星計數爲差評類,但不要使用原始的差評類中的詞的個數用於極性分析,由於雖然評高分的人比評一分的人少,可是留下評論的更多的是好評的人(滿意的人傾向於留下評論),所以直接用會由誤差,須要用似然度(likelihood):
其中f(w, c)指c類中w的個數,分母爲該類全部詞的個數。
而後歸一化(scale)使詞與詞之間的頻率能夠相互比較: P(w|c)/P(w)
2)一些詞在各評分的出現頻率
3)Pott’s 2011 experiment result: more negations in negative sentiment(否認詞常出現於負面情緒)bootstrap
半監督學習法(Semi-supervised learning)
使用少許打標的樣本和制定的規則來bootstrap(大概是自舉的意思)詞典。
方法1:Hatzivassiloglou and McKeown原則 – and鏈接的形容詞極性相同, but鏈接的形容詞極性相反。例如: Fair(公平) and legitimate (正當); fair(公平) but brutal(殘忍)。
此方法使用於單個詞
步驟:
a)人工打標種子形容詞極性集(pos & neg)
b)擴展與種子集共同出現的形容詞。方法能夠以下:
google上前排出現的連體詞通常都是高頻的,不太容易出錯。
c)用監督分類器對各個詞對進行極性類似度打分:count(and)高的表示相同的極性,count(but)高的表示相反的極性。
d)基於類似度聚類將所得的詞分紅兩類
e)手動矯正一些誤分類的詞
方法2:Turney Algorithm:適用於短語,可學習到局部信息特徵。
a)提取短語詞典: 提取與形容詞相關的2詞短語,標準以下:
b)學習短語極性
衡量兩個詞的共現程度:PMI (Point mutual information) .
兩個詞相互獨立。
注:PMI是交互信息(mutual information)衡量方式的變體。
具體方法:
經過搜索引擎搜索,P(word) = hits(word)/N,分子爲搜索結果中出現該詞的條目數,分母爲全部搜索到的條目數;而P(word1, word2) = hits(word1 NEAR word2)/N^2,分子爲兩個詞出如今同一處地方的條目數,分母爲全部搜索到的條目數。
評價某個詞的極性就只須要將正向詞的PMI減去負向詞的PMI,若大於0,則可認爲正,反之可認爲負。好比:
c)基於短語的平均極性對評論整體極性進行打標,好比
方法3:利用WordNet學習極性
WordNet爲同義詞典,所以提取極性詞典只須要將種子正向詞在WordNet中的近義詞(synonym)和反向詞在WordNet中的反義詞(antonym)加入到種子積正向詞庫,將種子負向詞的同義詞和種子正向詞的反義詞加入到種子反向詞庫,往復迭代數次便可。
總結:由於用了多個詞的短語,相比單個詞的極性分析,能夠了解文本局部的信息,並且容錯能力更強。less
1)單句情感:尋找情感描述的對象
方法(raised by Hu 2004 & Goldensohn 2008):
1.高頻短語+規則。首先獲取評論中出現的高頻短語,而後制定規則,好比對評價食物咱們能夠將出如今情感詞以後的高頻詞做爲情感的對象 – 高頻詞爲fish tacos, 那麼評論中出現great fish tacos咱們就認爲fish tacos是great的情感描述對象。
2.對於描述內容的方向比較明確的評論能夠預先定義對象而後用監督學習的方法進行對象分類。好比對於餐館評論而言,通常描述的對象爲food, décor, service, value,NONE(其餘),首先將一些餐館評論語句人工打標爲上述標籤,而後做爲訓練集訓練一個描述對象的分類器。
整體流程以下:
分句 -> 情感極性分類 -> 提取主題 -> 彙總獲得增提評論
2)樣本不平衡問題(機器學習常見問題了)
不一樣極性的評論數量差距太大(好比10^6好評vs10^4差評),會致使分類器模型參數異常。解決方式爲重抽樣(好評只取10^4條)或者採用代價敏感學習(cost-sensitive learning),好比在訓練SVM分類器的時候 將稀有樣本錯誤分類的懲罰加大。
3)處理打分問題(例如5星)
1.可將其轉化爲二元分類問題,好比小於2.5星的視爲neg,大於2.5星的視爲pos。
2.直接將星與極性強度用線性迴歸或其餘方式擬合機器學習
1.情感分析本質上仍是分類問題(二分或者回歸)
2.否認詞在情感描述中很重要
3.使用全部詞的naïve Byes模型在一些問題上表現較好,而使用子集短語的模型則在另外一些表現較好。
4.構建極性詞庫流程:手動標記種子極性詞庫,而後用半監督學習方式擴展詞庫
5.除了態度(attitude)之外,Scherer情感狀態的其餘類型,emotion,mood,interpersonal stance,personal traits都是情感分析的重要方向。ide
1.Stanford nlp公開課視頻:https://www.youtube.com/playlist?list=PLuBJa2RktQX-N0flCReMywxy1E-tsF0ZC
2.課件:https://web.stanford.edu/~jurafsky/NLPCourseraSlides.html學習