自然語言處理系列篇——情感分類
情感分類是對帶有感情色彩的主觀性文本進行分析、推理的過程,即分析對說話人的態度,傾向正面,還是反面。它與傳統的文本主題分類又不相同,傳統主題分類是分析文本討論的客觀內容,而情感分類是要從文本中得到它是否支持某種觀點的信息。比如,「日媒:認為殲-31能夠抗衡F-35,這種說法頗具恭維的意味。」傳統主題分類是要將其歸為類別為「軍事」主題,而情感分類則要挖掘出日媒對於「殲-31能夠抗衡F-35」這個觀點,持反面態度。這是一項具有較大實用價值的分類技術,可以在一定程度上解決網路評論信息雜亂的現象,方便用戶準確定位所需信息。按照處理文本的粒度不同,情感分析可分為詞語級、短語級、句子級、篇章級以及多篇章級等幾個研究層次。按照處理文本的類別不同,可分為基於新聞評論的情感分析和基於產品評論的情感分析。
文智系統提供了一套情感分類的流程,可以對句子極別的評論進行分析,判斷情感的正負傾向。接入業務的用戶只需要將待分析文本按照規定的協議上傳,就能實時得到情感分析的反饋。如果持續上傳不同時間段的評論、綜合分析,還能得到事件的發展趨勢,或者產品的情感走勢等。
一.常用分類方法介紹
文本分類方法一般包含如下幾個步驟:訓練語料準備、文本預處理、特徵挖掘、分類演算法選擇、分類應用。具體的分類流程可以參考另一篇KM文章《文智背後的奧秘—自動文本分類》。這裡,對一些常用的特徵挖掘和分類演算法做簡單的介紹。
1.1特徵挖掘方法
常見的特徵選擇方法有:TF-IDF、卡方、互信息、信息增益、X2統計量、交叉熵、Fisher判別式等方法,這裡介紹一下工業上常用的兩種方法。
1.1.1 TF-IDF
TF-IDF的主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。這裡介紹一種對 TF-IDF 的傻瓜理解法:
TF:詞頻,表示特徵t在文檔D中出現的次數,比如一篇談論喬布斯的文章,可預期「iphone」、「蘋果」的TF值為較高。
DF:包含特徵t的文檔數,DF越高,表示特徵X對於衡量文檔之間的區別作用低。比如「我」、「的」這樣的詞,DF一般最高。
IDF:定義為IDF =log(|D|/DF),|D|為所有文檔數。與DF成反比,IDF值越高,表示特徵t對區別文檔的意義越大。最終定義:TF-IDF=TF*IDF
1.1.2 信息增益
信息增益 (IG) 是公認較好的特徵選擇方法,它刻畫了一個詞語在文本中出現與否對文本情感分類的影響,即一個詞語在文本中出現前後的信息嫡之差。傻瓜式理解下信息增益:
其中,n是總類別數,P(Ci)是第i類出現的概率,若每類平均出現,則P(Ci)=1/n.
P(t)是出現詞語t的文檔數除以總文檔數,p(t否)=1-p(t).
P(Ci|t)即t出現時,Ci出現的概率,等於出現t且屬於Ci的文檔數除以所有出現t的文檔總數。
p(Ci|t否)即t不出現但屬於Ci的概率,等於未出現t但屬於Ci的文檔總數除以未出現t的所有文檔數。
1.2分類演算法
常見的分類演算法有,基於統計的Rocchio演算法、貝葉斯演算法、KNN演算法、支持向量機方法,基於規則的決策樹方法,和較為複雜的神經網路。這裡我們介紹兩種用到的分類演算法:樸素貝葉斯和支持向量機。
1.2.1樸素貝葉斯
貝葉斯公式:P(C|X)=P(X|C)P(C)/P(X)
先驗概率P(C)通過計算訓練集中屬於每一個類的訓練樣本所佔的比例,類條件概率P(X|C)的估計—樸素貝葉斯,假設事物屬性之間相互條件獨立,P(X|C)=∏P(xi|ci)。
樸素貝葉斯有兩用常用的模型,概率定義略有不同,如下:設某文檔d=(t1,t2,…,tk),tk是該文檔中出現過的單詞,允許重複。
- 多項式模型:
先驗概率P(c)= 類c下單詞總數/整個訓練樣本的單詞總數。
條件概率P(tk|c)=(類c下單詞tk在各個文檔中出現過的次數之和+1)/( 類c下單詞總數+|V|)
- 伯努利模型:
先驗概率P(c)= 類c下文件總數/整個訓練樣本的文件總數。
條件概率P(tk|c)=(類c下包含單詞tk的文件數+1)/(類c下單詞總數+2)
通俗點解釋兩種模型不同點在於:計算後驗概率時,對於一個文檔d,多項式模型中,只有在d中出現過的單詞,才會參與後驗概率計算,伯努利模型中,沒有在d中出現,但是在全局單詞表中出現的單詞,也會參與計算,不過是作為「反例」參與的。
1.2.2 支持向量機模型SVM
SVM展開來說較為複雜,這裡藉助兩張圖幫助概念性地解釋一下。對於線性可分的數據,可以用一超平面f(x)=w*x+b將這兩類數據分開。如何確定這個超平面呢?從直觀上而言,這個超平面應該是最適合分開兩類數據的直線。而判定「最適合」的標準就是這條直線離直線兩邊的數據的間隔最大。
而對於線性不可分的數據,則將其映射到一個更高維的空間里,在這個空間里建立尋找一個最大間隔的超平面。怎麼映射呢?這就是SVM的關鍵:核函數。
現在常用的核函數有:線性核,多項式核,徑向基核,高斯核,Sigmoid核。如果想對SVM有更深入的了解,請參考《支持向量機通俗導論(理解SVM的三層境界)》一文。
二.情感分類系統實現
情感分類與主題分類除了第一章提到的挖掘信息不同外,處理的文本也大不相同。情感分類主要處理一些類似評論的文本,這類文本有以下幾個特點:時新性、短文本、不規則表達、信息量大。我們在系統設計、演算法選擇時都會充分考慮到這些因素。情感分灰系統分為在線、離線兩大流程,在線流程將用戶輸出的語句進行特徵挖掘、情感分類、並返回結果。離線流程則負責語料下載、特徵挖掘、模型訓練等工作,系統結構如圖3-1所示:
圖3-1 情感分類系統框架圖2.1 語料庫建設
語料的積累是情感分類的基石,特徵挖掘、模型分類都要以語料為材料。而語料又分為已標註的語料和未標註的語料,已標註的語料如對商家的評論、對產品的評論等,這些語料可通過星級確定客戶的情感傾向;而未標註的語料如新聞的評論等,這些語料在使用前則需要分類模型或人工進行標註,而人工對語料的正負傾向,又是仁者見仁、智者見智,所以一定要與標註的同學有充分的溝通,使標註的語料達到基本可用的程度。
迄今,我們已對涵蓋電商、新聞、影視、音樂、APP等類別的20多個站點評論進行抓取,累計已有4億標註語料,每天新增標註語料200多萬。
2.2極性詞挖掘
情感分類中的極性詞挖掘,有一種方法是「全詞表法」,即將所有的詞都作為極性詞,這樣的好處是單詞被全面保留,但會導致特徵維度大,計算複雜性高。我們採用的是「極性詞表法」,就是要從文檔中挖掘出一些能夠代表正負極性的詞或短語。如已知正面語料「@jjhuang:微信電話本太贊了!能免費打電話,推薦你使用哦~」,這句話中我們需要挖掘出「贊」、「推薦」這些正極性詞。分為以下兩步:
1)文本預處理 語料中的有太多的噪音,我們在極性詞挖掘之前要先對文本預處理。文本預處理包含了分詞、去噪、最佳匹配等相關技術。分詞功能向大家推薦騰訊TE199的分詞系統,功能強大且全面,擁有短語分詞、詞性標註等強大功能。去噪需要去掉文檔中的無關信息如「@jjhuang」、html標籤等,和一些不具有分類意義的虛詞、代詞如「的」、「啊」、「我」等,以起到降維的作用。最佳匹配則是為了確保提出的特徵能夠正確地反映正負傾向,如「逍遙法外」一詞,如果提取出的是「逍遙」一詞,則會被誤認為是正面情感特徵,而「逍遙法外」本身是一個負面情感詞,這裡一般可以採用最長匹配的方法。
2)極性詞選擇 文本預處理之後,我們要從眾多詞語中選出一些詞作為極性詞,用以訓練模型。我們對之前介紹的TF-IDF方法略作變化,用以降維。因為我們訓練和處理的文本都太短,DF和TF值大致相同,我們用一個TF值就可以。另外,我們也計算極性詞在反例中出現的頻率,如正極性詞「贊」必然在正極性語料中的TF值大於在負極性語料中的TF值,如果二者的差值大於某個域值,我們就將該特徵納入極性詞候選集,經過人工審核後,就可以正式作為極性詞使用。
目前,我們已挖掘出12w+ 極性詞,通過人工審核的有 8w+ 個,每天仍會從語料中挖掘出100+ 個極性詞。
2.3極性判斷
極性判斷的任務是判斷語料的正、負、中極性,這是一個複雜的三分類問題。為了將該問題簡化,我們首先對語料做一個主客觀判斷,客觀語料即為中性語料,主觀語料再進行正、負極性的判斷。這樣,我們就將一個複雜三分類問題,簡化成了兩個二分類問題。如下:
在分類器選擇中,主客觀判斷我們使用了上節介紹的支持向量機模型。而極性判斷中,我們同時使用了樸素貝葉斯和支持向量機模型。其中樸素貝葉斯使用人工審核過的極性詞作特徵,而支持向量機模型則使用全詞表作為特徵。兩個模型會對輸入的語料分別判斷,給出正、負極性的概率,最後由決策模塊給出語料的極性。在樸素貝葉斯模型中,我們比較了多項式模型和伯努力模型的效果。伯努力模型將全語料中的單詞做為反例計算,因為評測文本大多是短文本,導致反例太多。進而伯努力模型效果稍差於多項式模型,所以我們選擇了多項式模型。支持向量機模型中,我們使用的是台灣大學林智仁開發的SVM工具包LIBSVM,這是一個開源的軟體包,可以解決模式識別、函數逼近和概率密度估計等機器學習基本問題,提供了線性、多項式、徑向基和S形函數四種常用的核函數供選擇。LIBSVM 使用的一般步驟是:
- 按照LIBSVM軟體包所要求的格式準備數據集;
- 對數據進行簡單的縮放操作;
- 考慮選用RBF 核函數;
- 採用交叉驗證選擇最佳參數C與g;
- 採用最佳參數C與g 對整個訓練集進行訓練獲取支持向量機模型;
- 利用獲取的模型進行測試與預測。
在我們的模型中,經過幾次試驗,選用的高斯核,自己調的參數C。文智平台當前情感分類效果:
業界效果:2014 COAE 中文傾向性分析評測
備註:
- 語料來主要源於3個領域(手機、翡翠、保險)的微博數據;
- 針對觀點句進行情感判斷;
- 測試集是7000篇人工標註微博評論。
- 垂直領域的情感分類
上述介紹的是我們通用的情感分類系統,面對的是通用的主觀評論語料。但在一些領域中,某些非極性詞也充分表達了用戶的情感傾向,比如下載使用APP時,「卡死了」、「下載太慢了」就表達了用戶的負面情感傾向;股票領域中,「看漲」、「牛市」表達的就是用戶的正面情感傾向。所以我們要在垂直領域中,挖掘出一些特殊的表達,作為極性詞給情感分類系統使用:
垂直極性詞 = 通用極性詞 + 領域特有極性詞
該系統即為垂直領域的情感分類系統。目前,我們已對社會事件、APP、電影幾個領域建立了垂直情感分類系統。領域的覆蓋正在不斷擴大……
2.5頁面展示
情感分類系統已於線上正常運行,並為兄弟部門服務每天會對當日熱門事件進行輿論分析統計,並給出主流正負面代表評論。移動端展示請觀注文智公共號tencentwenzhi,pc頁展示請獲得許可權後登錄http://tdata.oa.com 查看。頁面效果如下:
2.6 系統優化
情感分類的工作,我們還在繼續。我們在現在和未來還可以做更多的工作來優化我們的情感分類系統:
- 挖掘更多的極性詞(多領域)
- 嘗試不同的分類器,調優現有的模型
- 句式識別:否定句,轉折句,排比句等……
- 語料清洗:識別水軍評論和用戶評論
- 極性詞擴展:採用近義詞、反義詞等方法,將挖掘的極性詞擴展更多
三.總結:
文智平台情感分類系統基於多個領域數、億標註語料的學習,可對眾多評論數據進行傾向性分析,掌握用戶輿論走向。尤其是對新聞、影視、產品等領域句子極別的評論數據,傾向性分析更為準確、有效。系統目前已上線運營,並為兄弟部門提供輿論傾向服務。系統使用簡單、效果可靠,期待能為其他業務部門提供更為廣泛的應用。
歡迎有需求的團隊聯繫我們,使用騰訊文智自然語言處理。
---騰訊AI專家在知乎分享經驗---
3月22日晚上8點,騰訊雲技術總監朱建平將結合實踐為大家分享人工智慧常見的幾種錯誤認知,並結合具體的一個圖片識別的場景,為大家介紹人工智慧領域的演算法、軟體與硬體的一個完整的認知框架,也會試著給出一條可能的學習路徑。朱建平還是騰訊 TEG 架構平台部專家工程師,在人工智慧用于海量圖片處理、 GPU 雲化、 FPGA 應用等領域有豐富的經驗。
【歡迎報名】 知乎Live 騰訊雲總監:如何成為 AI 工程師?
推薦閱讀:
※神奇的人造樹葉,可以隨時隨地製造出常見藥品
※AlphaGo寫給人類的40句話,男人看了沉默女人看了流淚
※十年了,斯坦福和CMU的這場對決,開啟了無人車時代
※循環神經網路RNN打開手冊
※小米智能音箱能否成下一個小米手機?