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