版權聲明:本文由文智原創文章,轉載請註明出處:
文章原文連接:https://www.qcloud.com/community/article/92html
來源:騰雲閣 https://www.qcloud.com/community算法
情感分類是對帶有感情色彩的主觀性文本進行分析、推理的過程,即分析對說話人的態度,傾向正面,仍是反面。它與傳統的文本主題分類又不相同,傳統主題分類是分析文本討論的客觀內容,而情感分類是要從文本中獲得它是否支持某種觀點的信息。好比,「日媒:認爲殲-31可以抗衡F-35,這種說法頗具恭維的意味。」傳統主題分類是要將其歸爲類別爲「軍事」主題,而情感分類則要挖掘出日媒對於「殲-31可以抗衡F-35」這個觀點,持反面態度。這是一項具備較大實用價值的分類技術,能夠在必定程度上解決網絡評論信息雜亂的現象,方便用戶準肯定位所需信息。按照處理文本的粒度不一樣,情感分析可分爲詞語級、短語級、句子級、篇章級以及多篇章級等幾個研究層次。按照處理文本的類別不一樣,可分爲基於新聞評論的情感分析和基於產品評論的情感分析。微信
文智系統提供了一套情感分類的流程,能夠對句子極別的評論進行分析,判斷情感的正負傾向。接入業務的用戶只須要將待分析文本按照規定的協議上傳,就能實時獲得情感分析的反饋。若是持續上傳不一樣時間段的評論、綜合分析,還能獲得事件的發展趨勢,或者產品的情感走勢等。網絡
文本分類方法通常包含以下幾個步驟:訓練語料準備、文本預處理、特徵挖掘、分類算法選擇、分類應用。具體的分類流程能夠參考另外一篇KM文章《文智背後的奧祕—自動文本分類》。這裏,對一些經常使用的特徵挖掘和分類算法作簡單的介紹。框架
常見的特徵選擇方法有:TF-IDF、卡方、互信息、信息增益、X2統計量、交叉熵、Fisher判別式等方法,這裏介紹一下工業上經常使用的兩種方法。iphone
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學習
信息增益 (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的全部文檔數。
常見的分類算法有,基於統計的Rocchio算法、貝葉斯算法、KNN算法、支持向量機方法,基於規則的決策樹方法,和較爲複雜的神經網絡。這裏咱們介紹兩種用到的分類算法:樸素貝葉斯和支持向量機。
貝葉斯公式: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中出現,可是在全局單詞表中出現的單詞,也會參與計算,不過是做爲「反例」參與的。
SVM展開來講較爲複雜,這裏藉助兩張圖幫助概念性地解釋一下。對於線性可分的數據,能夠用一超平面f(x)=w*x+b將這兩類數據分開。如何肯定這個超平面呢?從直觀上而言,這個超平面應該是最適合分開兩類數據的直線。而斷定「最適合」的標準就是這條直線離直線兩邊的數據的間隔最大。
而對於線性不可分的數據,則將其映射到一個更高維的空間裏,在這個空間裏創建尋找一個最大間隔的超平面。怎麼映射呢?這就是SVM的關鍵:核函數。
如今經常使用的核函數有:線性核,多項式核,徑向基核,高斯核,Sigmoid核。若是想對SVM有更深刻的瞭解,請參考《支持向量機通俗導論(理解SVM的三層境界)》一文。
情感分類與主題分類除了第一章提到的挖掘信息不一樣外,處理的文本也大不相同。情感分類主要處理一些相似評論的文本,這類文本有如下幾個特色:時新性、短文本、不規則表達、信息量大。咱們在系統設計、算法選擇時都會充分考慮到這些因素。情感分灰系統分爲在線、離線兩大流程,在線流程將用戶輸出的語句進行特徵挖掘、情感分類、並返回結果。離線流程則負責語料下載、特徵挖掘、模型訓練等工做,系統結構如圖3-1所示:
語料的積累是情感分類的基石,特徵挖掘、模型分類都要以語料爲材料。而語料又分爲已標註的語料和未標註的語料,已標註的語料如對商家的評論、對產品的評論等,這些語料可經過星級肯定客戶的情感傾向;而未標註的語料如新聞的評論等,這些語料在使用前則須要分類模型或人工進行標註,而人工對語料的正負傾向,又是仁者見仁、智者見智,因此必定要與標註的同窗有充分的溝通,使標註的語料達到基本可用的程度。
迄今,咱們已對涵蓋電商、新聞、影視、音樂、APP等類別的20多個站點評論進行抓取,累計已有4億標註語料,天天新增標註語料200多萬。
情感分類中的極性詞挖掘,有一種方法是「全詞表法」,即將全部的詞都做爲極性詞,這樣的好處是單詞被全面保留,但會致使特徵維度大,計算複雜性高。咱們採用的是「極性詞表法」,就是要從文檔中挖掘出一些可以表明正負極性的詞或短語。如已知正面語料「@jjhuang:微信電話本太讚了!能免費打電話,推薦你使用哦~」,這句話中咱們須要挖掘出「贊」、「推薦」這些正極性詞。分爲如下兩步:
1)文本預處理 語料中的有太多的噪音,咱們在極性詞挖掘以前要先對文本預處理。文本預處理包含了分詞、去噪、最佳匹配等相關技術。分詞功能向你們推薦騰訊TE199的分詞系統,功能強大且全面,擁有短語分詞、詞性標註等強大功能。去噪須要去掉文檔中的無關信息如「@jjhuang」、html標籤等,和一些不具備分類意義的虛詞、代詞如「的」、「啊」、「我」等,以起到降維的做用。最佳匹配則是爲了確保提出的特徵可以正確地反映正負傾向,如「逍遙法外」一詞,若是提取出的是「逍遙」一詞,則會被誤認爲是正面情感特徵,而「逍遙法外」自己是一個負面情感詞,這裏通常能夠採用最長匹配的方法。
2)極性詞選擇 文本預處理以後,咱們要從衆多詞語中選出一些詞做爲極性詞,用以訓練模型。咱們對以前介紹的TF-IDF方法略做變化,用以降維。由於咱們訓練和處理的文本都過短,DF和TF值大體相同,咱們用一個TF值就能夠。另外,咱們也計算極性詞在反例中出現的頻率,如正極性詞「贊」必然在正極性語料中的TF值大於在負極性語料中的TF值,若是兩者的差值大於某個域值,咱們就將該特徵歸入極性詞候選集,通過人工審覈後,就能夠正式做爲極性詞使用。
目前,咱們已挖掘出12w+ 極性詞,經過人工審覈的有 8w+ 個,天天仍會從語料中挖掘出100+ 個極性詞。
極性判斷的任務是判斷語料的正、負、中極性,這是一個複雜的三分類問題。爲了將該問題簡化,咱們首先對語料作一個主客觀判斷,客觀語料即爲中性語料,主觀語料再進行正、負極性的判斷。這樣,咱們就將一個複雜三分類問題,簡化成了兩個二分類問題。以下:
在分類器選擇中,主客觀判斷咱們使用了上節介紹的支持向量機模型。而極性判斷中,咱們同時使用了樸素貝葉斯和支持向量機模型。其中樸素貝葉斯使用人工審覈過的極性詞做特徵,而支持向量機模型則使用全詞表做爲特徵。兩個模型會對輸入的語料分別判斷,給出正、負極性的機率,最後由決策模塊給出語料的極性。
在樸素貝葉斯模型中,咱們比較了多項式模型和伯努力模型的效果。伯努力模型將全語料中的單詞作爲反例計算,由於評測文本大可能是短文本,致使反例太多。進而伯努力模型效果稍差於多項式模型,因此咱們選擇了多項式模型。
支持向量機模型中,咱們使用的是臺灣大學林智仁開發的SVM工具包LIBSVM,這是一個開源的軟件包,能夠解決模式識別、函數逼近和機率密度估計等機器學習基本問題,提供了線性、多項式、徑向基和S形函數四種經常使用的核函數供選擇。LIBSVM 使用的通常步驟是:
在咱們的模型中,通過幾回試驗,選用的高斯核,本身調的參數C。文智平臺當前情感分類效果:
業界效果:2014 COAE 中文傾向性分析評測
備註:
上述介紹的是咱們通用的情感分類系統,面對的是通用的主觀評論語料。但在一些領域中,某些非極性詞也充分表達了用戶的情感傾向,好比下載使用APP時,「卡死了」、「下載太慢了」就表達了用戶的負面情感傾向;股票領域中,「看漲」、「牛市」表達的就是用戶的正面情感傾向。因此咱們要在垂直領域中,挖掘出一些特殊的表達,做爲極性詞給情感分類系統使用:
垂直極性詞 = 通用極性詞 + 領域特有極性詞
該系統即爲垂直領域的情感分類系統。目前,咱們已對社會事件、APP、電影幾個領域創建了垂直情感分類系統。領域的覆蓋正在不斷擴大……
情感分類系統已於線上正常運行,併爲兄弟部門服務天天會對當日熱門事件進行輿論分析統計,並給出主流正負面表明評論。移動端展現請觀註文智公共號tencentwenzhi,pc頁展現請得到權限後登陸http://tdata.oa.com 查看。頁面效果以下:
情感分類的工做,咱們還在繼續。咱們在如今和將來還能夠作更多的工做來優化咱們的情感分類系統:
文智平臺情感分類系統基於多個領域數、億標註語料的學習,可對衆多評論數據進行傾向性分析,掌握用戶輿論走向。尤爲是對新聞、影視、產品等領域句子極別的評論數據,傾向性分析更爲準確、有效。系統目前已上線運營,併爲兄弟部門提供輿論傾向服務。系統使用簡單、效果可靠,期待能爲其餘業務部門提供更爲普遍的應用。
歡迎有需求的團隊聯繫咱們,使用騰訊文智天然語言處理。