情感分析

我靈愁苦,要發(fā)出言語。我心苦惱,要吐露哀情。 --《舊·伯》7:11


一、什么是情感分析

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

情感極性分析的目的是對文本進行褒義、貶義、中性的判斷。在大多應(yīng)用場景下,只分為兩類。例如對于“喜愛”和“厭惡”這兩個詞,就屬于不同的情感傾向。

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

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

二、情感分析的主要方法

現(xiàn)階段主要的情感分析方法主要有兩類:

基于詞典的方法

基于機器學(xué)習(xí)的方法

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

基于機器學(xué)習(xí)的方法大多將這個問題轉(zhuǎn)化為一個分類問題來看待,對于情感極性的判斷,將目標(biāo)情感分類2類:正、負(fù)。對訓(xùn)練文本進行人工標(biāo)標(biāo)注,然后進行有監(jiān)督的機器學(xué)習(xí)過程。例如想在較為常見的基于大規(guī)模語料庫的機器學(xué)習(xí)等。

三、基于詞典的情感分析

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

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

分解文章段落

分解段落中的句子

分解句子中的詞匯

搜索情感詞并標(biāo)注和計數(shù)

搜索情感詞前的程度詞,根據(jù)程度大小,賦予不同權(quán)值

搜索情感詞前的否定詞,賦予反轉(zhuǎn)權(quán)值(-1)

計算句子的情感得分

計算段落的情感得分

計算文章的情感得分

考慮到語句中的褒貶并非穩(wěn)定分布,以上步驟對于積極和消極的情感詞分開執(zhí)行,最終的到兩個分值,分別表示文本的正向情感值和負(fù)向情感值。

算法設(shè)計(偽代碼):

fetch all text

for each text:

for each para in text:

for each sent in para:

for each word in sents:

if word in sentiment_dicts:

if adverb before sentword

score = adverb*score

if inverse before sentword

score = -1 * score

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

四、基于機器學(xué)習(xí)的情感分析

基于機器學(xué)習(xí)的情感分析思路是將情感分析作為一個分類過程來看待。例如對于極性判別來說,正向極性和負(fù)向極性就是目標(biāo)類別,對文本內(nèi)容進行結(jié)構(gòu)化處理,輸入到給定分類算法中進行訓(xùn)練,并對測試數(shù)據(jù)用模型來預(yù)測結(jié)果。

1. 文本結(jié)構(gòu)化

文本結(jié)構(gòu)化是機器學(xué)習(xí)中重要的一步,由于文本的特殊性,計算機不能直接理解文本中的語義。需要將文本轉(zhuǎn)結(jié)構(gòu)化以此作為分類器的輸入。

最小語義粒度

在中文中,最小語義粒度為字,但是一個單字所表示的語義信息太少,一般的,大多都以詞作為最基本的語素,因為這在實際的交流中也正是如此。但是用詞作為最小的語義粒度也有一個問題,就是詞和詞之間的關(guān)系隨著分詞而丟失了,其實這部分信息非常重要。為了減小這種隱性的語義損失,有人提出了N-gram模型。N-gram模型基于這樣一種假設(shè),第n個詞的出現(xiàn)只與前面N-1個詞相關(guān),而與其它任何詞都不相關(guān)。簡單來說,unigram模型對應(yīng)的最小語素就是單字,bigram模型是二字串,舉例說明:“我愛北京天安門”的bigram表示形式就是“我愛 愛北 北京 京天 天安 安門”,以此類推。由于N-gram存在致命的缺陷——產(chǎn)生的結(jié)果過于稀疏,假設(shè)正常分詞的詞表中有1000個詞,如果是bigram那么可能的N-gram就有1000000個,如果是trigram,那么可能的N-gram就有1000000000個,其維度增長是指數(shù)級的。一般在使用中只使用二字串或三字串作為最小的語義粒度,并且需要其他處理來縮減維度,減少計算資源的消耗。

文本向量化

文本向量化是文本結(jié)構(gòu)化的最重要的一步,如果說確定最小語義粒度是告訴計算機最小的語義信息單位的話,那么向量化則是告訴計算機該用什么結(jié)構(gòu)來理解文本。比較主流的表示方式有:詞袋模型和向量空間模型。這兩個模型其實較為類似,兩者都將詞匯(或者N-gram中的最小語素)作為切分的最小粒度,拆分一句話,得到“我” “愛” “北京” “天安門”,根據(jù)每個詞出現(xiàn)的次數(shù)設(shè)置詞的權(quán)重,轉(zhuǎn)化為[1, 1, 1, 1]形式的向量。而向量空間模型則是在詞袋模型的基礎(chǔ)上,將多個文本的詞袋模型整合在一起,組成一個單詞-文檔的二維矩陣。其中詞又稱為維度或者特征,一般的,基于詞典情感分析都基于前者,而后者是應(yīng)用在大規(guī)模語料庫上。

詞條權(quán)值

在詞袋或者詞頻矩陣中,如果出現(xiàn)這個詞,則標(biāo)志為1,沒有出現(xiàn)則標(biāo)志為0,這被稱為布爾權(quán)值。人們發(fā)現(xiàn)有些詞在文章中出現(xiàn)次數(shù)很多,理應(yīng)有更加重要的地位,所以布爾權(quán)重升級為詞頻權(quán)值,用該詞在文章中出現(xiàn)的頻數(shù)作為權(quán)值。再后來人們又發(fā)現(xiàn),有些詞在所有文章中都有很高的詞頻,例如“的”。這些詞反而對文章來說沒有有價值的信息,需要剔除,以節(jié)省性能開支。所以人們通過逆文檔頻率idf來將這些分布較為平均的詞剔除掉,詞頻和逆文檔頻率的乘積就是現(xiàn)在較為常用的tf-idf權(quán)值。

注:這里用權(quán)值是為了和區(qū)分之后會提到的特征選擇時提到的權(quán)重,這兩者的區(qū)別在之后會介紹。

特征提取

特征提取是文本向量化的最后一步,其重要性更多的體現(xiàn)在于防止模型過擬合以及在不損失精度的前提下減少運算開支。面對海量數(shù)據(jù)的時候,其重要性不亞于之前的任何一步。

特征提取主要分兩種方式:特征選擇特征抽取。特征選擇就是在一堆特征中挑選出對目標(biāo)類別貢獻較高的特征維度,通過計算特征的權(quán)重,并依據(jù)權(quán)重重新排序挑選出較高的一部分特征維度作為模型訓(xùn)練的輸入特征。這里的權(quán)重和之前講到的詞(也就是特征)權(quán)值是不同的。特征權(quán)重描述的是特征和目標(biāo)類別之間的關(guān)系,而詞權(quán)值是詞在文章中的重要性的描述,這兩者非常容易混淆。特征抽取則是將所有特征作為輸入,通過某種方式或者算法,輸出一批新的特征,這個特征的維度數(shù)量大大小于原始特征長度。此過程中的信息損失比特征選擇少很多。深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)是主要的算法。

2. 分類算法選擇

文本結(jié)構(gòu)化之后就可以進行訓(xùn)練了。當(dāng)然之前還需要挑選一個合適的分類器。在各大文獻中,較為推薦的文本分類算法大多為SVM。因為其較為出色的泛化能力(不容易過擬合),SVM也受到了工業(yè)界的青睞,被用于許多分類場合。當(dāng)然,分類器有許許多多種,樸素貝葉斯、神經(jīng)網(wǎng)絡(luò)、K臨近都有著各自的有點。本文主要從SVM入手,情感分析場景下的文本分類作一些說明。

Support Vector Machine

支持向量機是一種有監(jiān)督的學(xué)習(xí)算法。其分類的判別標(biāo)準(zhǔn)為最大分類邊界,處于分類邊界上的向量(特征)即為支持向量。

所以其直接參與分類運算的向量其實小于原始輸入向量。這也是為什么雖然在訓(xùn)練的時候比較費時,但是在預(yù)測時期性能較好的原因。

這里需要提到一個SVM中特有的概念,分類超平面。由于現(xiàn)實中的數(shù)據(jù)非常復(fù)雜,尤其是文本數(shù)據(jù),在向量化之后并不能簡單的用線性分割的方式將其區(qū)分,所以有牛人想到利用高維來解決低維中線性不可分的問題,以下是一個簡答的例子,在二維中,無法用一條直線將這兩組點分開。將其映射到三維場景時,就可以用一個線性平面將其分割。當(dāng)然現(xiàn)實中的數(shù)據(jù)也不會那么簡單,所以低維向高維映射之后的復(fù)雜程度也遠(yuǎn)遠(yuǎn)超過想想。不過依然有牛人通過數(shù)學(xué)證明的方式,證明了低維不可分問題在高維中,至少某一個高維中能夠線性可分。

不過支持向量機中的數(shù)學(xué)推導(dǎo)較為復(fù)雜,如果詳細(xì)講解可以另寫一篇文章,這里就不做過多講解。但是有幾個比較重要的概念不得不提:核函數(shù)松弛變量。

核函數(shù):核函數(shù)是一類能夠簡化低維到高維運算的函數(shù),通過他能夠?qū)⒌途S的數(shù)據(jù)映射到高維中。之前提到了低維向高維映射的過程,但是在實際操作中會發(fā)現(xiàn),這之間的一個映射關(guān)系通常是非常難解甚至是不可解的。依舊是牛人,通過一組符mercy定律的函數(shù),找到了低維和高維之間關(guān)系的方法。這些符合mercy定律的函數(shù)就稱為核函數(shù)。

松弛變量:在分類問題中,往往會遇到因為遇到噪聲而導(dǎo)致分類器對于訓(xùn)練集效果較好,但是對于其他測試集則效果較差的問題,在傳統(tǒng)統(tǒng)計算法中,這個現(xiàn)象被稱為過擬合。為了避免這些噪聲的干擾,需要對SVM的決策邊境進行“軟化”,讓其適當(dāng)?shù)卦试S“錯誤”產(chǎn)生,引入松弛變量。

3. 訓(xùn)練模型和評價

參數(shù)選擇

在文本分類場景中,選擇線性核函數(shù)或者高斯核函數(shù)較為平常,前者計算效率較高,后者效果較好。在本文場景下選擇高斯核函數(shù)。松弛變量的選擇依據(jù)主要為實際的模型擬合和在預(yù)測集上的表現(xiàn)來決定。

模型評價

因為在文本分類中類別不平衡經(jīng)常出現(xiàn)(某一類非常多其他類非常少),如果以所有類別的準(zhǔn)確率來作為分類器的評判指標(biāo)的話,就會出現(xiàn)一個問題,假如二類樣本中,1類占到了90%,2類只有10%,那么大多數(shù)分類器只需要將所有樣本都判為1類就有90%的準(zhǔn)確率。但是我們可能更關(guān)注那10%的類別,這樣的分類器對我們來說相當(dāng)于沒有效果的分類器,是不可接受的。所以在評價分類器效果時,引入了信息檢索中的混淆矩陣:

傳統(tǒng)的準(zhǔn)確率計算公式就是圖中的Accuracy,考量了分類器對于兩個類別的總體的分類效果,由于其在不平衡樣本中效果不好,所以提出了精度召回率這兩個指標(biāo)。

精度:反映了被分類器判定的正例中真正的正例樣本的比重。

召回率:也成為True Postive Rate,反映了被正確判定的正例占總的正例的比重。

這兩個指標(biāo)都100%的分類器幾乎不存在(就連人都很難做到),并且經(jīng)過實驗發(fā)現(xiàn),這兩個指標(biāo)在同一場景中具有互斥的性質(zhì)。當(dāng)精度較高的時候往往召回率較低。往往需要我們在面對具體問題時具體分析,例如在本文所描述的情感分析中,我們更加關(guān)注10%的2類,希望判定2類的準(zhǔn)確度越高越好,那么這時候2類的召回率會比較低(可能不到50%),但是精度會相對來說較高(可能在70%-80%左右);若如果我們認(rèn)為希望2類的文章多一些,則在挑選分類器的時候更看重哪些召回率較高的。不過也有牛人為了幫助哪些“選擇困難癥患者”幫助挑選分類器,提出了F-measure檢驗,以此同時考慮兩者的結(jié)果。


以上是經(jīng)常被用的到F1指標(biāo),其擴展形式為:


可以看到,F(xiàn)1即為β取1時的特殊情形。

關(guān)于以上信息檢索的相關(guān)指標(biāo)可以參看一下連接:Precision and recall、Accuracy and precision

五、總結(jié)

相對于基于辭典的情感分析,機器學(xué)習(xí)不太關(guān)注這篇文章中是否含有這些或那些情感詞,他更加依賴于訓(xùn)練集文章被標(biāo)注的類別是什么。他結(jié)果的好壞和語料庫的規(guī)模(預(yù)料是否包含足夠多的信息)和語料庫的標(biāo)注準(zhǔn)確率(如果你告訴我橘子是西瓜,那么以后我遇到橘子都會判它為西瓜)。在實際運用中可以兩者相輔相成,在短文本中,基于詞典的情感分析效果更加好,例如微博、商品評論等。而長文本則更加適合機器學(xué)習(xí)來處理。

參考文獻

情感分析算法設(shè)計

文本分類技術(shù)

Precision and recall

Accuracy and precision


更多內(nèi)容 請訪問:點擊這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內(nèi)容

  • 使用 TensorFlow 做文本情感分析 本文將通過使用TensorFlow中的LSTM神經(jīng)網(wǎng)絡(luò)方法探索高效的深...
    Datartisan數(shù)據(jù)工匠閱讀 13,229評論 0 16
  • 原文鏈接:https://districtdatalabs.silvrback.com/modern-method...
    Eric_py閱讀 1,609評論 1 4
  • 精衛(wèi)鳥 丁香 眾幽靈 跨鯨而來 有這樣的故事,很多跌崖之幽靈悲哀地鴉聚華山之麓,釀造迷魂酒漿,誘惑酩酊...
    丁_香閱讀 683評論 42 56
  • 4.更新數(shù)據(jù)表 更新數(shù)據(jù)表 語法: UPDATE 表名 SET 字段名=表達式 [, 字段名=表達式 ...] ...
    mrs_xu閱讀 378評論 0 0
  • 這是我第28篇原創(chuàng)日記。堅持的力量,持續(xù)寫作,持續(xù)分享美樂家。 5月28日 惠州晴 端午節(jié)放假,先生說...
    天鳴老師閱讀 458評論 3 5