基于情感词典的文本情感分类
基于情感詞典的文本情感分類
傳統(tǒng)的基于情感詞典的文本情感分類,是對(duì)人的記憶和判斷思維的最簡(jiǎn)單的模擬,如上圖。我們首先通過(guò)學(xué)習(xí)來(lái)記憶一些基本詞匯,如否定詞語(yǔ)有“不”,積極詞語(yǔ)有“喜歡”、“愛(ài)”,消極詞語(yǔ)有“討厭”、“恨”等,從而在大腦中形成一個(gè)基本的語(yǔ)料庫(kù)。然后,我們?cè)賹?duì)輸入的句子進(jìn)行最直接的拆分,看看我們所記憶的詞匯表中是否存在相應(yīng)的詞語(yǔ),然后根據(jù)這個(gè)詞語(yǔ)的類別來(lái)判斷情感,比如“我喜歡數(shù)學(xué)”,“喜歡”這個(gè)詞在我們所記憶的積極詞匯表中,所以我們判斷它具有積極的情感。
基于上述思路,我們可以通過(guò)以下幾個(gè)步驟實(shí)現(xiàn)基于情感詞典的文本情感分類:預(yù)處理、分詞、訓(xùn)練情感詞典、判斷,整個(gè)過(guò)程可以如下圖所示。而檢驗(yàn)?zāi)P陀玫降脑牧?#xff0c;包括薛云老師提供的蒙牛牛奶的評(píng)論,以及從網(wǎng)絡(luò)購(gòu)買的某款手機(jī)的評(píng)論數(shù)據(jù)(見附件)。
文本的預(yù)處理
由網(wǎng)絡(luò)爬蟲等工具爬取到的原始語(yǔ)料,通常都會(huì)帶有我們不需要的信息,比如額外的Html標(biāo)簽,所以需要對(duì)語(yǔ)料進(jìn)行預(yù)處理。由薛云老師提供的蒙牛牛奶評(píng)論也不例外。我們隊(duì)伍使用Python作為我們的預(yù)處理工具,其中的用到的庫(kù)有Numpy和Pandas,而主要的文本工具為正則表達(dá)式。經(jīng)過(guò)預(yù)處理,原始語(yǔ)料規(guī)范為如下表,其中我們用-1標(biāo)注消極情感評(píng)論,1標(biāo)記積極情感評(píng)論。
句子自動(dòng)分詞
為了判斷句子中是否存在情感詞典中相應(yīng)的詞語(yǔ),我們需要把句子準(zhǔn)確切割為一個(gè)個(gè)詞語(yǔ),即句子的自動(dòng)分詞。我們對(duì)比了現(xiàn)有的分詞工具,綜合考慮了分詞的準(zhǔn)確性和在Python平臺(tái)的易用性,最終選擇了“結(jié)巴中文分詞”作為我們的分詞工具。
下表僅展示各常見的分詞工具對(duì)其中一個(gè)典型的測(cè)試句子的分詞效果:
測(cè)試句子:工信處女干事每月經(jīng)過(guò)下屬科室都要親口交代24口交換機(jī)等技術(shù)性器件的安裝工作
載入情感詞典
一般來(lái)說(shuō),詞典是文本挖掘最核心的部分,對(duì)于文本感情分類也不例外。情感詞典分為四個(gè)部分:積極情感詞典、消極情感詞典、否定詞典以及程度副詞詞典。為了得到更加完整的情感詞典,我們從網(wǎng)絡(luò)上收集了若干個(gè)情感詞典,并且對(duì)它們進(jìn)行了整合去重,同時(shí)對(duì)部分詞語(yǔ)進(jìn)行了調(diào)整,以達(dá)到盡可能高的準(zhǔn)確率。
我們隊(duì)伍并非單純對(duì)網(wǎng)絡(luò)收集而來(lái)的詞典進(jìn)行整合,而且還有針對(duì)性和目的性地對(duì)詞典進(jìn)行了去雜、更新。特別地,我們加入了某些行業(yè)詞匯,以增加分類中的命中率。不同行業(yè)某些詞語(yǔ)的詞頻會(huì)有比較大的差別,而這些詞有可能是情感分類的關(guān)鍵詞之一。比如,薛云老師提供的評(píng)論數(shù)據(jù)是有關(guān)蒙牛牛奶的,也就是飲食行業(yè)的;而在飲食行業(yè)中,“吃”和“喝”這兩個(gè)詞出現(xiàn)的頻率會(huì)相當(dāng)高,而且通常是對(duì)飲食的正面評(píng)價(jià),而“不吃”或者“不喝”通常意味著對(duì)飲食的否定評(píng)價(jià),而在其他行業(yè)或領(lǐng)域中,這幾個(gè)詞語(yǔ)則沒(méi)有明顯情感傾向。另外一個(gè)例子是手機(jī)行業(yè)的,比如“這手機(jī)很耐摔啊,還防水”,“耐摔”、“防水”就是在手機(jī)這個(gè)領(lǐng)域有積極情緒的詞。因此,有必要將這些因素考慮進(jìn)模型之中。
文本情感分類
基于情感詞典的文本情感分類規(guī)則比較機(jī)械化。簡(jiǎn)單起見,我們將每個(gè)積極情感詞語(yǔ)賦予權(quán)重1,將每個(gè)消極情感詞語(yǔ)賦予權(quán)重-1,并且假設(shè)情感值滿足線性疊加原理;然后我們將句子進(jìn)行分詞,如果句子分詞后的詞語(yǔ)向量包含相應(yīng)的詞語(yǔ),就加上向前的權(quán)值,其中,否定詞和程度副詞會(huì)有特殊的判別規(guī)則,否定詞會(huì)導(dǎo)致權(quán)值反號(hào),而程度副詞則讓權(quán)值加倍。最后,根據(jù)總權(quán)值的正負(fù)性來(lái)判斷句子的情感。基本的算法如圖。
要說(shuō)明的是,為了編程和測(cè)試的可行性,我們作了幾個(gè)假設(shè)(簡(jiǎn)化)。假設(shè)一:我們假設(shè)了所有積極詞語(yǔ)、消極詞語(yǔ)的權(quán)重都是相等的,這只是在簡(jiǎn)單的判斷情況下成立,更精準(zhǔn)的分類顯然不成立的,比如“恨”要比“討厭”來(lái)得嚴(yán)重;修正這個(gè)缺陷的方法是給每個(gè)詞語(yǔ)賦予不同的權(quán)值,我們將在本文的第二部分探討權(quán)值的賦予思路。假設(shè)二:我們假設(shè)了權(quán)值是線性疊加的,這在多數(shù)情況下都會(huì)成立,而在本文的第二部分中,我們會(huì)探討非線性的引入,以增強(qiáng)準(zhǔn)確性。假設(shè)三:對(duì)于否定詞和程度副詞的處理,我們僅僅是作了簡(jiǎn)單的取反和加倍,而事實(shí)上,各個(gè)否定詞和程度副詞的權(quán)值也是不一樣的,比如“非常喜歡”顯然比“挺喜歡”程度深,但我們對(duì)此并沒(méi)有區(qū)分。
在算法的實(shí)現(xiàn)上,我們則選用了Python作為實(shí)現(xiàn)平臺(tái)。可以看到,借助于Python豐富的擴(kuò)展支持,我們僅用了一百行不到的代碼,就實(shí)現(xiàn)了以上所有步驟,得到了一個(gè)有效的情感分類算法,這充分體現(xiàn)了Python的簡(jiǎn)潔。下面將檢驗(yàn)我們算法的有效性。
困難所在
經(jīng)過(guò)兩次測(cè)試,可以初步認(rèn)為我們的模型正確率基本達(dá)到了80%以上。另外,一些比較成熟的商業(yè)化程序,它的正確率也只有85%到90%左右(如BosonNLP)。這說(shuō)明我們這個(gè)簡(jiǎn)單的模型確實(shí)已經(jīng)達(dá)到了讓人滿意的效果,另一方面,該事實(shí)也表明,傳統(tǒng)的“基于情感詞典的文本情感分類”模型的性能可提升幅度相當(dāng)有限。這是由于文本情感分類的本質(zhì)復(fù)雜性所致的。經(jīng)過(guò)初步的討論,我們認(rèn)為文本情感分類的困難在以下幾個(gè)方面。
語(yǔ)言系統(tǒng)是相當(dāng)復(fù)雜的
歸根結(jié)底,這是因?yàn)槲覀兇竽X中的語(yǔ)言系統(tǒng)是相當(dāng)復(fù)雜的。(1)我們現(xiàn)在做的是文本情感分類,文本和文本情感都是人類文化的產(chǎn)物,換言之,人是唯一準(zhǔn)確的判別標(biāo)準(zhǔn)。(2)人的語(yǔ)言是一個(gè)相當(dāng)復(fù)雜的文化產(chǎn)物,一個(gè)句子并不是詞語(yǔ)的簡(jiǎn)單線性組合,它有相當(dāng)復(fù)雜的非線性在里面。(3)我們?cè)诿枋鲆粋€(gè)句子時(shí),都是將句子作為一個(gè)整體而不是詞語(yǔ)的集合看待的,詞語(yǔ)的不同組合、不同順序、不同數(shù)目都能夠帶來(lái)不同的含義和情感,這導(dǎo)致了文本情感分類工作的困難。
因此,文本情感分類工作實(shí)際上是對(duì)人腦思維的模擬。我們前面的模型,實(shí)際上已經(jīng)對(duì)此進(jìn)行了最簡(jiǎn)單的模擬。然而,我們模擬的不過(guò)是一些簡(jiǎn)單的思維定式,真正的情感判斷并不是一些簡(jiǎn)單的規(guī)則,而是一個(gè)復(fù)雜的網(wǎng)絡(luò)。
大腦不僅僅在情感分類
事實(shí)上,我們?cè)谂袛嘁粋€(gè)句子的情感時(shí),我們不僅僅在想這個(gè)句子是什么情感,而且還會(huì)判斷這個(gè)句子的類型(祈使句、疑問(wèn)句還是陳述句?);當(dāng)我們?cè)诳紤]句子中的每個(gè)詞語(yǔ)時(shí),我們不僅僅關(guān)注其中的積極詞語(yǔ)、消極詞語(yǔ)、否定詞或者程度副詞,我們會(huì)關(guān)注每一個(gè)詞語(yǔ)(主語(yǔ)、謂語(yǔ)、賓語(yǔ)等等),從而形成對(duì)整個(gè)句子整體的認(rèn)識(shí);我們甚至還會(huì)聯(lián)系上下文對(duì)句子進(jìn)行判斷。這些判斷我們可能是無(wú)意識(shí)的,但我們大腦確實(shí)做了這個(gè)事情,以形成對(duì)句子的完整認(rèn)識(shí),才能對(duì)句子的感情做了準(zhǔn)確的判斷。也就是說(shuō),我們的大腦實(shí)際上是一個(gè)非常高速而復(fù)雜的處理器,我們要做情感分類,卻同時(shí)還做了很多事情。
活水:學(xué)習(xí)預(yù)測(cè)
人類區(qū)別于機(jī)器、甚至人類區(qū)別于其他動(dòng)物的顯著特征,是人類具有學(xué)習(xí)意識(shí)和學(xué)習(xí)能力。我們獲得新知識(shí)的途徑,除了其他人的傳授外,還包括自己的學(xué)習(xí)、總結(jié)和猜測(cè)。對(duì)于文本情感分類也不例外,我們不僅僅可以記憶住大量的情感詞語(yǔ),同時(shí)我們還可以總結(jié)或推測(cè)出新的情感詞語(yǔ)。比如,我們只知道“喜歡”和“愛(ài)”都具有積極情感傾向,那么我們會(huì)猜測(cè)“喜愛(ài)”也具有積極的情感色彩。這種學(xué)習(xí)能力是我們擴(kuò)充我們的詞語(yǔ)的重要方式,也是記憶模式的優(yōu)化(即我們不需要專門往大腦的語(yǔ)料庫(kù)中塞進(jìn)“喜愛(ài)”這個(gè)詞語(yǔ),我們僅需要記得“喜歡”和“愛(ài)”,并賦予它們某種聯(lián)系,以獲得“喜愛(ài)”這個(gè)詞語(yǔ),這是一種優(yōu)化的記憶模式)。
優(yōu)化思路
經(jīng)過(guò)上述分析,我們看到了文本情感分類的本質(zhì)復(fù)雜性以及人腦進(jìn)行分類的幾個(gè)特征。而針對(duì)上述分析,我們提出如下幾個(gè)改進(jìn)措施。
非線性特征的引入
前面已經(jīng)提及過(guò),真實(shí)的人腦情感分類實(shí)際上是嚴(yán)重非線性的,基于簡(jiǎn)單線性組合的模型性能是有限的。所以為了提高模型的準(zhǔn)確率,有必要在模型中引入非線性。
所謂非線性,指的是詞語(yǔ)之間的相互組合形成新的語(yǔ)義。事實(shí)上,我們的初步模型中已經(jīng)簡(jiǎn)單地引入了非線性——在前面的模型中,我們將積極詞語(yǔ)和消極詞語(yǔ)相鄰的情況,視為一個(gè)組合的消極語(yǔ)塊,賦予它負(fù)的權(quán)值。更精細(xì)的組合權(quán)值可以通過(guò)“詞典矩陣”來(lái)實(shí)現(xiàn),即我們將已知的積極詞語(yǔ)和消極詞語(yǔ)都放到同一個(gè)集合來(lái),然后逐一編號(hào),通過(guò)如下的“詞典矩陣”,來(lái)記錄詞組的權(quán)值。
并不是每一個(gè)詞語(yǔ)的組合都是成立的,但我們依然可以計(jì)算它們之間的組合權(quán)值,情感權(quán)值的計(jì)算可以閱讀參考文獻(xiàn)。然而,情感詞語(yǔ)的數(shù)目相當(dāng)大,而詞典矩陣的元素個(gè)數(shù)則是其平方,其數(shù)據(jù)量是相當(dāng)可觀的,因此,這已經(jīng)初步進(jìn)入大數(shù)據(jù)的范疇。為了更加高效地實(shí)現(xiàn)非線性,我們需要探索組合詞語(yǔ)的優(yōu)化方案,包括構(gòu)造方案和儲(chǔ)存、索引方案。
情感詞典的自動(dòng)擴(kuò)充
在如今的網(wǎng)絡(luò)信息時(shí)代,新詞的出現(xiàn)如雨后春筍,其中包括“新構(gòu)造網(wǎng)絡(luò)詞語(yǔ)”以及“將已有詞語(yǔ)賦予新的含義”;另一方面,我們整理的情感詞典中,也不可能完全包含已有的情感詞語(yǔ)。因此,自動(dòng)擴(kuò)充情感詞典是保證情感分類模型時(shí)效性的必要條件。目前,通過(guò)網(wǎng)絡(luò)爬蟲等手段,我們可以從微博、社區(qū)中收集到大量的評(píng)論數(shù)據(jù),為了從這大批量的數(shù)據(jù)中找到新的具有情感傾向的詞語(yǔ),我們的思路是無(wú)監(jiān)督學(xué)習(xí)式的詞頻統(tǒng)計(jì)。
我們的目標(biāo)是“自動(dòng)擴(kuò)充”,因此我們要達(dá)到的目的是基于現(xiàn)有的初步模型來(lái)進(jìn)行無(wú)監(jiān)督學(xué)習(xí),完成詞典擴(kuò)充,從而增強(qiáng)模型自身的性能,然后再以同樣的方式進(jìn)行迭代,這是一個(gè)正反饋的調(diào)節(jié)過(guò)程。雖然我們可以從網(wǎng)絡(luò)中大量抓取評(píng)論數(shù)據(jù),但是這些數(shù)據(jù)是無(wú)標(biāo)注的,我們要通過(guò)已有的模型對(duì)評(píng)論數(shù)據(jù)進(jìn)行情感分類,然后在同一類情感(積極或消極)的評(píng)論集合中統(tǒng)計(jì)各個(gè)詞語(yǔ)的出現(xiàn)頻率,最后將積極、消極評(píng)論集的各個(gè)詞語(yǔ)的詞頻進(jìn)行對(duì)比。某個(gè)詞語(yǔ)在積極評(píng)論集中的詞頻相當(dāng)高,在消極評(píng)論集中的詞頻相當(dāng)?shù)?#xff0c;那么我們就有把握將該詞語(yǔ)添加到消極情感詞典中,或者說(shuō),賦予該詞語(yǔ)負(fù)的權(quán)值。
舉例來(lái)說(shuō),假設(shè)我們的消極情感詞典中并沒(méi)有“黑心”這個(gè)詞語(yǔ),但是“可惡”、“討厭”、“反感”、“喜歡”等基本的情感詞語(yǔ)在情感詞典中已經(jīng)存在,那么我們就會(huì)能夠?qū)⑾率鼍渥诱_地進(jìn)行情感分類:
本文結(jié)論
綜合上述研究,我們得出如下結(jié)論:
基于情感詞典的文本情感分類是容易實(shí)現(xiàn)的,其核心之處在于情感詞典的訓(xùn)練。
語(yǔ)言系統(tǒng)是相當(dāng)復(fù)雜的,基于情感詞典的文本情感分類只是一個(gè)線性的模型,其性能是有限的。
在文本情感分類中適當(dāng)?shù)匾敕蔷€性特征,能夠有效地提高模型的準(zhǔn)確率。
引入擴(kuò)充詞典的無(wú)監(jiān)督學(xué)習(xí)機(jī)制,可以有效地發(fā)現(xiàn)新的情感詞,保證模型的強(qiáng)健性和時(shí)效性。
關(guān)注我的技術(shù)公眾號(hào)《漫談人工智能》,每天推送優(yōu)質(zhì)文章
總結(jié)
以上是生活随笔為你收集整理的基于情感词典的文本情感分类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用NoteExpress/Citesp
- 下一篇: spring核心技术之Resource资