1. 程式人生 > >短文本情感分析

短文本情感分析

描述 構建 jsb python itl 不容易 網站 而且 learn

一、什麽是情感分析:

情感分析(SA)又稱為傾向性分析和意見挖掘,它是對帶有情感色彩的主觀性文本進行分析、處理、歸納和推理的過程,其中情感分析還可以細分為情感極性(傾向)分析,情感程度分析,主客觀分析等。

情感極性分析的目的是對文本進行褒義、貶義、中性的進行判斷。

情感程度分析主要是對同一情感極性中再進行劃分或者細分,以描述該極性的強度。例如“喜愛”和“敬愛”都是褒義詞,但是“敬愛”相對來說褒義的程度更加強烈一些。

主客觀分析主要目的是識別文本中哪些部分是客觀稱述而不帶情感色彩,哪些是帶有情感的主管描述。在對於微博,或者商品評論時,這個分析步驟一般都忽略,因為微博和商品評論本身就一定存在強烈的情感色彩,而且客觀描述的情感值理論上是為零,不影響最終的情感分析結果。

二、情感分析的主要方法:

現階段主要的情感分析方法主要有兩類:

基於詞典的方法

基於機器學習的方法

基於詞典的方法主要通過制定一系列的情感詞典和規則,對文本進行段落拆借、句法分析,計算情感值,最後通過情感值來作為文本的情感傾向依據。

基於機器學習的方法大多將這個問題轉化為一個分類問題來看待,對於情感極性的判斷,將目標情感分類2類:正、負;對情感程度的分析則轉化為回歸問題看待。對訓練文本進行人工標標註,然後進行有監督的機器學習過程。

在還沒有獲得大量文本的情況下,使用基於詞典的方法或者簡單的機器學習方法是一個不錯的選擇。獲得大量文本後,可以嘗試使用一些復雜的機器學習方法甚至使用深度學習來進一步提升分析效果。

三、基於詞典的情感分析:

情感分析對象的粒度最小是詞匯,但是表達一個情感的最基本的單位則是句子,詞匯雖然能描述情感的基本信息,但是單一的詞匯缺少對象,缺少關聯程度,並且不同的詞匯組合在一起所得到的情感程度不同甚至情感傾向都相反。所以以句子為最基本的情感分析粒度是較為合理的。篇章或者段落的情感可以通過句子的情感來計算。

基於詞典的情感分析大致步驟如下:

技術分享

考慮到語句中的褒貶並非穩定分布,以上步驟對於積極和消極的情感詞分開執行,最終的到兩個分值,分別表示文本的正向情感值和負向情感值。

進過以上的步驟,每篇文章的每個段落的每個句子都會有相應的情感分值,之後針對需求,可以針對句子的分值作統計計算,也可以針對段落的分值作統計計算,得到最後的文本的正向情感值和負向情感值。

四、基於詞典的情感分析實踐:

(1)基於詞典的情感分析首先要構建情感詞典及程度副詞詞典。通常是拉取一些比較成熟的情感詞典。常見的如知網,臺灣大學簡體中文情感極性詞典。將幾個詞典組合後再針對需要添加領域內的一些詞就差不多了。

(2) 準備待分析文本、分詞工具:

待分析文本:可以爬取一些購物網站、團購、電影平臺的評論數據作為實驗數據。

分析工具:中文的話推薦使用結巴分析,Python、Java等都有對應的接口,文檔和應用案例也相對較多。同時需要準備一份自定義詞典,由於領域內的新詞及一些網絡流行語等不容易切分出來,自己制作一份詞典就OK了。

(3)利用結巴分詞分解出一段文本中的句子、及每個句子中詞匯:

(4)計算部分:首先將一段輸入文本調用句子切分函數得到一系列句子,對每個句子進行分析處理,得到每個句子的分詞結果。搜索分詞結果中的情感詞並標註和計數,由於情感詞存在一些修飾詞(如非常、一般、不等)對情感詞的情感程度甚至情感極性影響很大,在此,搜索情感詞前的程度詞,根據程度大小,賦予不同權值,同時搜索情感詞前的否定詞,賦予反轉權值(-1)。綜合得到一個句子的正向情感得分、負向情感得分。

(5)綜合每個句子的結果得到最後的文本情感值。

我們爬取了某購物網站的共計18978條平均數據,采用基於詞典的方法對短文本情感傾向進行分類其結果如下圖:

技術分享

總結:

基於情感詞典的技術重點分析文本中出現的情感詞、同時關聯該詞附近的修飾詞來最終表達句子的情感傾向。在句子結構復雜、無情感詞出現但有明顯情感傾向的情況下,基於詞典的方法就會失效。因此,可以考慮從句子結構,詞頻,詞序等方面構建更多特征,使用機器學習方法來解決這一類的問題。最終綜合多個模型來表達最終的結果。

在此,本人也構建了一個基於word-embedding的CNN模型來進行情感分析,相比於基於詞典的情感分析,CNN對復雜長句具備一定的優勢,可以參考本人另外一篇博文:CNN在中文文本分類的應用

文章來源:http://blog.csdn.net/zbc1090549839/article/details/52800441

短文本情感分析