1. 程式人生 > >自然語言處理入門——白話情感分析原理

自然語言處理入門——白話情感分析原理

引言

情感分析在很多點上領域有很多的應用場景:

  • 比如,酒店網站需要提取使用者對酒店的評價,然後策略性的進行顯示,比如把負面的評價排的稍微往後面一點,總不能上來滿屏都是髒亂差吧!
  • 比如,一些電商類的網站根據情感分析提取正負面的評價關鍵詞,形成商品的標籤。基於這些標籤,使用者可以快速知道大眾對這個商品的看法
  • 比如,一些新聞類的網站,根據新聞的評論可以知道這個新聞的熱點情況,是積極導向,還是消極導向,從而進行輿論新聞的有效控制。

首先我們先來看看大廠們的效果:

攜程旅遊

這裡把各種評價進行了歸類,然後通過類別標籤可以索引到目標評論。

京東

雖然有提取一些情感主題,但是不支援跳轉

天貓

天貓做的就不錯了,主題提取出來了,還支援跳轉。

有人對情感分析並不看好,首先是因為機器做情感分析畢竟沒有一些主觀的因素,難以還原使用者當時的心情;其次是再好的情感分析也不如打星星來的精準,直接廢話不多說,5顆星好評,1顆星差評...簡單粗暴。
不過我還是比較看好這個方向的,因為星星畢竟只是一個簡單粗暴的情感分析,直接劃分粒度太粗。

所以迴歸正題,還是繼續說說情感分析的一些實現方法吧!基本上情感分析有兩種套路,一種是基於情感詞的;另一種是基於機器學習的,我們下面就仔細的來看看每一種的實現方法。

基於情感詞典的情感分析

這種分析方法簡單粗暴,並不需要有太多複雜的知識,但是要求有儘量龐大完備的詞庫,而且這種詞庫必須是某一個領域背景下的。至於為什麼不能通用稍後再說....

首先需要這樣幾個詞典:

停頓詞詞典

的 和 得 之間 ....

正面評價詞

價格便宜 乾淨 美麗 物美價廉...

負面評價詞

埋汰 髒 差 壞 ...

程度詞

還行    0.8
非常好  3.0
湊合    0.5
一般    0.5
特別    2.0

否定詞

不 難道 非 ...

這些詞典基本每個領域都不一樣,比如聲音大這個詞,在音響的領域裡面表示正面評價;但是在空調的領域裡面就是負面評價了。因此每個領域最好有自己專業的詞庫,這個詞庫可以基於爬蟲也可以基於人工蒐集整理。網上有很多可以下載到的詞庫,不過都是比較通用的。

然後就可以按照下面的步驟計算情感取向了:

  • 獲取全部的使用者評價內容
  • 先進行分詞
  • 根據每個詞計算總體的情感分值,公式如:-1^(否定詞的個數)*程度詞的分值*評價詞的分值
  • 然後根據正負判斷情感走向。

比如,難道非得讓我說差麼?中,難道都算否定詞,這樣分值就是(-1)^2*1*-1 = -1,結論是負面評價
再比如,難道這樣不好嗎?中,難道都是否定詞,分值為(-1)^2*1*1=1,結論是正面評價

雖然說有上面這些規則,在一些特定語境裡面情感分析還是會出現誤差。而且詞語的位置也是一個很重要的因素,在詞典這種機制裡面,是忽略掉位置的。下面我們再看看基於機器學習的分析方法吧!

基於機器學習的情感分析方法

定義問題

在情感分析中應用機器學習,首先第一步是定義問題,即先要判斷情感分析是一個迴歸問題還是分類問題,還是聚類問題。由於使用者基本上就是正面評價和負面評價,因此我們可以把它定義成二分類的問題。問題定義完,就可以考慮使用什麼分類器的方法,比如邏輯迴歸、支援向量機、神經網路...都可以嘗試。

準備資料

有機器學習背景的同學都應該知道,分類的問題屬於有監督的學習問題,因此是需要提前準備一些標註資料的(標註的意思就是我們想要知道的結果)。比如現在有這樣一波數:

評價語1 正面評價
評價語2 負面評價
評價語3 正面評價
評價語4 正面評價

其中評價屬於最後我們想要的結果,即Label;評價語則是原始的資料,需要給變成可以計算的數值(方法有幾種:詞袋、TF-IDF、word2vec這個以後在詳細說明,可以簡單的理解為就是把一些評價文字,變成了 01010101的數值作為特徵)

然後我們就形成了這樣的資料:

(0 1 1 0 1),1
(1 1 0 0 1),0
(0 1 0 0 0),1
(0 1 1 1 0),1

接下來就需要準備訓練集和測試集,訓練集用來訓練模型;測試集用來測試模型是否正確。訓練集在選取時,需要注意正負兩個label的比例。試想一下,如果你的訓練集裡面90%都是負面評價,那麼這個模型直接就寫死只返回負面評價的結果,那麼如果測試集也是同樣的資料分佈比例,那麼正確率也會高達90%。這樣顯然是不合理的,因此要保證樣本中正負評價資料的均衡。關於評測,手段有很多比如RMSE,MSE等等,有興趣可以多瞭解下。

訓練模型

然後就是利用各種演算法訓練模型,訓練之後對比一下,選一個正確率最高的即可。最後把模型儲存下面,之後可以直接使用。

應用

這裡就直接應用模型,傳入響應評價對應的特徵引數即可。

總結

如果想要快速實現一個情感分析系統,最快的方式就是找到對應的情感詞庫,直接基於詞典來做。如果考慮到未來的優化...可以再嘗試使用機器學習的方式。

參考