斯坦福大學-自然語言處理入門 筆記 第七課 情感分析(sentiment analysis)
阿新 • • 發佈:2018-11-06
一、情感分析簡述
情感分析(sentiment analysis),又叫意見抽取(opinion extraction),意見挖掘(opinion mining),情感挖掘(sentiment mining)以及主觀分析(subjectivity analysis)。
- 情感分析的應用領域非常廣泛
- 情感分析是對態度的研究,具體可以分解為:
- 按照複雜程度,可以把情感分類分為三類
- 簡單任務:判斷文字的任務是消極的還是積極的
- 更復雜:把對文字的態度按1-5打分
- 進階:研究來源(source)、物件(target)以及複雜的態度型別
二、一個基本演算法
1、一個情感分類任務
- 判斷IMDB的電影評論是積極的還是消極的
- 資料:Polarity Data 2.0 http://www.cs.cornell.edu/people/pabo/movie-review-data
- 基本步驟
- 分詞(tokenizaiton)
- 特徵抽取
- 利用分類模型分類(樸素貝葉斯,SVM,MaxEnt)
2、情感分詞(tokenizaiton)問題
- 處理HTML和XML的標記
- Twitter的標記(名字,tags)
- 大寫(保留全部大寫的單詞)
- 電話和日期
- 表情(下面是一些正則表達)
- 一些有用的程式碼
http://sentiment.christopherpotts.net/code-data/happyfuntokenizing.py
3、特徵抽取
- 否定的抽取: I didn‘ t like this movie vs I really like this movie
- 解決方案:在否定詞和接下來的標點之間的每個詞都加上NOT_,形如下面
- 解決方案:在否定詞和接下來的標點之間的每個詞都加上NOT_,形如下面
- 抽取哪些單詞?
- 只使用形容詞
- 還是使用全部單詞?
- 全部的單詞表現更好,至少在這個資料集上是這樣
4、分類:二值化(binarized (Boolean feature))多元樸素貝葉斯
- 基本思想:主要針對情感(或者可能是其他文字分類領域)。單詞是否出現比單詞出現的頻率更為重要,所以這個演算法的特別之處在於對出現的單詞都記為1。
- 具體演算法和樸素貝葉斯一致,唯一的變動是在計算P(w|c)的時候,先刪除每篇文件裡的重複的單詞,只保留一個。
- 這種演算法會比原來的樸素貝葉斯效果更好(這個演算法和Mutivariate Bernoulli Naive Bayes是不一樣的,後者在文字問題上效果不好)
- 也可以使用其他的改進:log(freq(w))(單詞的count取對數以後就會小很多)
5、交叉檢驗(cross-validation)
- 把資料集分成十份fold(每一份中類別比例相同)
- 對每一份(fold),選擇這一份作為臨時的測試集,在另外九份上訓練模型,並在測試集上計算模型效果。
- 給出十份效果的平均數
6、評論難以分類的原因
三、情感詞典(sentiment Lexicons)
1、一些可用的情感詞典
- 根據相關的研究,我們發現除了sentiword,其他情感詞典的相似度都很高。
2、 分析IMDB中每個詞的極性(polarity)
比較單詞和電影打分之間的相關性,考慮到可比性,計算的公式如下:
3、邏輯否定詞
根據pott的研究,更多的否定詞會出現在消極情緒中
四、情感詞典訓練
1、利用半監督學習詞典
使用少量的資訊,包括一些標註的樣本和一些人工建立的模式(pattern),通過bootstrap的方法來訓練詞典。
2、Hatzivassiloglou和Mckeown的演算法(用於單詞詞典的構造)
- 關鍵思想:用and相連的兩個詞,極性相同;用but相連的兩個詞,則反之。
- 第一步:標記種子集(seed set)
- 1336個形容詞,657個正向詞,679個負向詞
- 第二步:利用關鍵思想拓展種子集
- 第三步:利用監督分類演算法計算單詞對的極性相似程度(polarity similarity),結果如下圖。
- 第四步:利用聚類方法把圖分為兩個部分
- 最終的結果:確實會出現不準確的情況
3、Turney演算法(用於片語詞典的構造)
- 第一步:根據下面的規則,抽取兩字片語
- 第二步:學習每個片語的詞性
- 基本思想:積極片語會和“excellent”更多的一起出現;消極片語會和“poor”更多的一起出現
- 度量一起出現的指標:PMI(pointwise mutual information),表示x和y同時出現的概率,比上他們如果獨立的時候同時出現的概率。
- 兩個單詞之間的PMI可以寫成如下的形式:
- 具體到概率的計算如下:P(word)是word出現的次數/總單詞數,P(word1,word2)是word1和word2同時出現的次數/總單詞數的平方
- 極性的度量=和excellent的PMI-和poor的PMI
- 兩個單詞之間的PMI可以寫成如下的形式:
- 例子
4、使用wordnet學習極性
- wordnet:線上分類詞典(thesaurus)
- 種子詞:積極(good),消極(terrible)
- 找同義詞和反義詞
- 積極方面:加入積極的同義詞(well)和消極的反義詞
- 消極方面:加入消極的同義詞(awful)和積極的反義詞(evil)
5、訓練詞典的總結
- 優點
- 有領域針對性(demain-specific)
- 可以有更多單詞,因此更穩健
- 主要解決思想
- 開始找一系列種子詞(good,bad)
- 找到其他有相同詞性的詞(利用and/but,利用在同一篇文件中附近出現的單詞,利用wordnet的同義詞和反義詞)
五、其他情感任務
1、研究情感的方面(aspect)、物件(target)以及態度(attribute)
- 如何選取方面(aspect)?
- 有些可以事先確定,比如我們要研究酒店的話,方面就是食物、交通、裝置等等
- 有些則利用出現的頻率和規則確定
- 找到在評論中經常出現的片語(fish tacos)
- 利用一些規則進行篩選,比如在情感詞後面出現的詞,比如great fish tacos可以提取fish tacos
- 接下來,進行有監督學習
- 對一小部分的語料進行關於方面(aspect)的人工標註
- 訓練一個分類器,將其他沒標註的句子分到對應的方面(aspect)中
- 步驟圖示
- 訓練結果
2、不均衡類別問題
- 基本模型假設類別的頻率是均衡的,但是在現實生活中的大部分問題,類別都是不均衡的(類別發生的概率是不一樣的)
- 非均衡問題的評價標準:用準確率不適合來進行評價,應該使用F值
- 嚴重的非均衡問題甚至會降低分類表現
- 兩個常見的解決方案
- 訓練樣本重抽樣:隨機欠擬合
- 代價損失函式:svm,當對較少的類錯誤分類的時候會進行懲罰
3、七星問題的處理
- 轉化為二分類問題
- 用線性或者有序迴歸,或者是特定的模型,比如metric labeling
4、關於情緒(sentiment)的總結
- 通常會構建分類或者是迴歸模型
- 特徵構建上的一些要點
- 否定(negation)是很重要的
- 使用所有的單詞(樸素貝葉斯)做特徵,在某些任務中表現很好
- 在其他任務中,使用單詞的子集會更好
- 手工建立的極性詞典
- 種子和半監督方法生成詞典
5、除了態度以外,還可以進行其他型別的分析
,