李 鼎
(西安航空學院 人事處,西安 710077)
隨著互聯(lián)網(wǎng)的飛速發(fā)展,尤其是自媒體(如微博、論壇、貼吧、社區(qū)等)的出現(xiàn),改變了傳統(tǒng)媒體一枝獨秀的局面。傳統(tǒng)媒體是通過廣播形式向用戶單方向傳播信息,而現(xiàn)代互聯(lián)網(wǎng)媒體時代,人們不僅是信息的被動消費者,更多的則是信息的生產(chǎn)者,人們主動參與網(wǎng)絡(luò)互動,比如就某一話題發(fā)表自己的觀點,參與時事討論等。隨著網(wǎng)民數(shù)量的急劇攀升,隨之而來的是海量數(shù)據(jù)的產(chǎn)生。能夠快速地從網(wǎng)絡(luò)海量信息中提取出網(wǎng)民的情感傾向,及時掌握網(wǎng)民對某一事件的態(tài)度和看法,已經(jīng)成為重要的研究課題。
現(xiàn)今的網(wǎng)絡(luò)數(shù)據(jù)來源多樣,我們可以通過諸如新浪微博、大秦論壇、百度貼吧等主流社交媒體獲得針對特定話題的語料信息,并對其進行整理分析,從中得到有用的信息加以利用。然而,現(xiàn)存的情感分析技術(shù)存在著這樣或那樣的缺點,基于文本的情感分析方法往往對于特殊場景的判斷不準確;基于機器學習的情感分析方法往往需要大量豐富的數(shù)據(jù)集,準確率難以得到保證。
本文基于這樣的現(xiàn)實背景,研究了一種提高情感分類準確率的方法,使情感分析的結(jié)果更加準確。
采用五組不同的數(shù)據(jù)文本進行實驗,數(shù)據(jù)來源于新浪微博、大秦論壇等知名微博和論壇,每組1000條數(shù)據(jù)。經(jīng)過程序自動運行結(jié)果和手工標注不同數(shù)據(jù)組的結(jié)果進行比較,對于不同數(shù)據(jù)組,使用基于情感詞典[1]的情感分析方法進行情感分析[2-3]得到的結(jié)果準確率如圖1所示。
圖1不同數(shù)據(jù)組情感分析準確率表示
由圖1可以看出,第一組、第二組、第四組和第五組的實驗準確率都在50%左右,而第三組的準確率卻高出了很多,達到了65%。第三組數(shù)據(jù)是從網(wǎng)上下載的評論集中抽取的數(shù)據(jù),而其他數(shù)據(jù)都是爬蟲抓取的網(wǎng)絡(luò)數(shù)據(jù)。本文基于情感詞典的情感分析算法,采用切詞后對于得到的詞組進行關(guān)鍵字匹配,并結(jié)合詞性權(quán)重分配的方法實現(xiàn),究其原因應(yīng)該是網(wǎng)絡(luò)評論集合中的評論句式不像爬蟲抓取的網(wǎng)絡(luò)數(shù)據(jù)那么雜亂無章,用到的評論詞傾向性比較明顯,大部分評論句式符合情感算法中考慮到的情況,所以準確率相對提高了很多。然而對于網(wǎng)絡(luò)爬蟲抓取到的普通數(shù)據(jù),往往雜亂無章,用戶的遣詞用句并不是特別嚴謹準確,所以很多句子并不滿足情感算法設(shè)計的句子結(jié)構(gòu),因此準確率較低。從結(jié)果來看,使用本文實現(xiàn)的基于情感詞典的情感分析算法對于網(wǎng)絡(luò)爬蟲抓取到的數(shù)據(jù)進行分析,準確率較低,需要進一步改進。因此考慮到使用情感詞典構(gòu)建相關(guān)數(shù)據(jù)集的情感特征,并結(jié)合機器學習算法作為分類器進行情感分類,看能否提高分析準確率。
在基于機器學習的情感分析方法研究中,選擇研究KNN[4-6]和SVM[7-9]情感分析方法,實驗采用數(shù)據(jù)集包含且大于1-1數(shù)據(jù)集,并進行初步的人工篩選[10-11]。篩選過程包括以下方面。
(1)過濾掉其中噪音較大的文檔。這里的噪音指的是句子中含有太多二義詞,或者文檔中有太多詞語的含義上下文相關(guān)。由于噪音過大會導(dǎo)致分類準確率下降嚴重,故在此選擇中去除這部分文檔。
(2)剔除其中字數(shù)極少的文檔。文檔中的字數(shù)過少,比如只有一個字,這會導(dǎo)致對其通過向量空間模型后,向量表示中絕大部分維度的值為零,引起向量稀疏的問題,導(dǎo)致分類的準確率下降。
(3)再進行人工標注文檔類別,要求標注的質(zhì)量必須較高,即人工判定的準確率要較高,以免引起過大的人工誤差。
最后,在實驗中,通過TF-IDF等文本向量化方法對標注過后的文檔進行向量空間建模,得出表示文檔的文檔向量。實驗中得到文檔向量如圖2所示。
圖2實驗文檔的向量空間模型表示
需要說明的是,由于篇幅有限,且為了將文檔向量表現(xiàn)清楚,實驗中過濾掉了向量計算中后面所有維值為零的那些維度,圖2中就展示了這種處理。然而在實際計算中,必須將所有向量統(tǒng)一維度,以方便后續(xù)計算處理,不夠維度的需補上在前期處理中故意略去的零值。
從不同訓(xùn)練數(shù)據(jù)集和不同訓(xùn)練數(shù)據(jù)量兩方面進行基于機器學習的情感分析方法研究,因為訓(xùn)練數(shù)據(jù)對于機器學習方法影響較大,首先研究不同訓(xùn)練數(shù)據(jù)量下KNN和SVM情感分析方法的準確率,實驗選擇同一組數(shù)據(jù)集進行準確率檢測。如圖3所示。
圖3不同訓(xùn)練數(shù)據(jù)量KNN和SVM情感分類準確率
由圖3可以看出,隨著訓(xùn)練數(shù)據(jù)量的增大,KNN和SVM的準確率都有明顯提高。在數(shù)據(jù)量小于10000時,KNN的準確率稍好于SVM,且在數(shù)據(jù)量較小時,KNN的比較速度相對較快,效率更高。但隨著訓(xùn)練數(shù)據(jù)量的增加,SVM的準確率提升更明顯。在訓(xùn)練數(shù)據(jù)量達到40000時,兩者準確率幾乎一樣;而在訓(xùn)練數(shù)據(jù)量到達50000時,SVM的準確率明顯高于KNN。由此得出結(jié)論:從準確率和效率兩方面綜合考慮,在訓(xùn)練數(shù)據(jù)量小于10000時,KNN效果明顯好于SVM;在訓(xùn)練數(shù)據(jù)量大于50000時,SVM的效果明顯好于KNN。訓(xùn)練數(shù)據(jù)量在10000到50000,兩者準確率相差不大,隨著訓(xùn)練數(shù)據(jù)量增大,SVM準確率穩(wěn)步提高,而KNN準確率提高的速度逐漸變緩。在此提出可將KNN和SVM的結(jié)果做線性結(jié)合看能否提高準確率,而且隨著訓(xùn)練數(shù)據(jù)的增加,SVM占的比重應(yīng)該逐漸增大。
其次,使用不同的數(shù)據(jù)集來進行情感分析算法的準確率檢測。在此使用50000條訓(xùn)練數(shù)據(jù)得出的KNN和SVM情感分析方法對五組數(shù)據(jù)進行傾向性分析,并檢測其準確率,如圖4所示。
由圖4可以看出,使用SVM方法對不同數(shù)據(jù)組進行情感分析,準確率在64%到70%之間,平均在68%左右,比較穩(wěn)定。使用KNN方法對不同數(shù)據(jù)組進行情感分析,準確率在62%到百分之69%之間,平均在65%左右,也比較穩(wěn)定。說明機器學習方法在本文不同數(shù)據(jù)集上的情感分類準確率較為穩(wěn)定。
圖4不同數(shù)據(jù)組情感分析準確率表示
使用情感詞典進行文本的情感分析,其主要特點是對文本的情感分析直接作用在了詞語的傾向性上,粒度細,分析精準,但同時也受到了自然語言處理技術(shù)的限制,尤其是受到漢語中某些詞語的意思上下文影響較大的困擾,比如在一句話中某個詞語所表達的意思可能到另一句話中卻完全相反,這就增大了這種分析方法的誤差和難度。因此,總體來說,基于情感詞典的情感分析效果一般。然而漢語的句式變化多樣,很難把各種句式的表現(xiàn)形式都做出相應(yīng)的情感分析方法[12]。因此,對于符合基本句式的句子使用情感詞典分析方法,對于不符合基本句式的句子則使用機器學習情感分析方法,最終使用情感詞典與機器學習相結(jié)合的方法得出文本的情感傾向。
在機器學習方法的研究[13]中,KNN算法是一種無監(jiān)督的機器學習方法,具有領(lǐng)域無關(guān)性的特點,這對于跨領(lǐng)域的數(shù)據(jù)分類是個很好優(yōu)勢,然而其只是單純依靠向量間的相似程度進行分類,沒有統(tǒng)計信息,而且初始化簇中心采用隨機的方式很容易造成誤差,這就導(dǎo)致KNN分類算法的準確率不是很高。而SVM需要進行模型訓(xùn)練,是一種有監(jiān)督的機器學習方法,具有統(tǒng)計特性,且具備領(lǐng)域相關(guān)性,但對于未在訓(xùn)練文本中出現(xiàn)的特征難以納入訓(xùn)練后的模型文件,也就是說其預(yù)測準確率十分依賴于訓(xùn)練樣本,訓(xùn)練樣本的質(zhì)量和覆蓋率會很大程度上影響到SVM的預(yù)測準確率,因此會出現(xiàn)預(yù)測不準的問題。由此可見,單純使用一種機器學習方法分析難以得到十分高的準確率,將KNN和SVM兩種方法相結(jié)合是一種提高情感分析準確率的可選方案。
KNN基本沒有訓(xùn)練時間,采用一個新的樣本記住就可以了。但預(yù)測時間卻可能需要很久。如果一路上記了100萬個樣本,那就要和100萬個樣本算距離,再排序出前K個最近的樣本,即使用堆排序或者其他改進過的排序算法,只在乎前k個順序不再往下排序,也還是需要k*log(n)數(shù)量級的排序運算,特別是預(yù)測大量樣本之后的樣例。
SVM訓(xùn)練時間相對久一些,不過是在可接受的時間內(nèi)。預(yù)測時需要對所有訓(xùn)練樣本做核函數(shù)運算,雖然不能在很短的時間內(nèi)計算出結(jié)果,但計算時間也在可接受范圍內(nèi)。另外,由于核函數(shù)的存在,有足夠量的大數(shù)據(jù),預(yù)測精度會稍高一些。
基于以上的實驗研究,本文通過研究各種情感分析方法的優(yōu)缺點,使用情感詞典方法以及KNN和SVM相結(jié)合的方式進行情感分類,結(jié)合兩者的優(yōu)點,摒棄各自的缺點,將兩者優(yōu)化使用,以期提高情感分類的準確率。然而這就涉及到兩者之間的加權(quán)方法,本文采用以下公式來計算兩者加權(quán)后的文本情感標簽。計算公式如下:
EEE=σE1+(1-σ)E2
(1)
式中,E表示文檔的分類后加權(quán)值;E1表示基于SVM算法得到的分類標簽;E2表示基于KNN算法得到的分類標簽;σ表示加權(quán)系數(shù)。
通過以上分析,確定了結(jié)合KNN和SVM的加權(quán)公式,然而,公式中的參數(shù)加權(quán)因子 的取值還未知,結(jié)合上一節(jié)對情感分析算法準確率的研究,并且考慮到KNN以及SVM的優(yōu)缺點,采用分段線性結(jié)合的方法改進情感分類方法。當訓(xùn)練數(shù)據(jù)量小于10000條時σ取0,即使用KNN的方法進行情感分類,因為KNN基本沒有訓(xùn)練時間,采用一個新的樣本記住就可以了,數(shù)據(jù)量較小時預(yù)測也會較快。而SVM在數(shù)據(jù)量較小時準確率較低,而且訓(xùn)練時間相對久一些。當數(shù)據(jù)量大于50000條時σ取1,即使用SVM的方法進行情感分類,因為數(shù)據(jù)量較大時,使用SVM方法的準確率會稍高一些,而且預(yù)測時間會比使用KNN方法快。當數(shù)據(jù)量在10000到50000之間,σ取(n-10000)/50000,這里n為訓(xùn)練數(shù)據(jù)量,即隨著數(shù)據(jù)量的增加,SVM方法的比重逐漸增大,KNN方法的比重逐漸減小。
公式(1)通過對KNN和SVM各自得出的分類標簽進行加權(quán)計算,結(jié)合兩個方法判斷出最終的結(jié)果分類,得出分類后的加權(quán)值E是一個小數(shù),還無法判斷最終結(jié)果分類標簽,這就需要進行下一步處理。
計算得出分類后的標簽值E后,由于E是小數(shù),于是本文采用二次處理,再次根據(jù)公式(2)計算每個情感類別的類別標簽和E的一緯歐式距離:
Distance(i)=||Labeli,E| |=|Labeli-E| (2)
Distancemin=mini(Distance(i) (3)
式中,Distance(i) 表示類別標簽與加權(quán)后標簽的距離;Labeli表示情感類別標簽;E表示KNN和SVM分類結(jié)果加權(quán)后的標簽值。
得出Distance(i)后,由于結(jié)果必然為正數(shù),這時我們可以采用比較Distance(i)與每個類別標簽距離的相對大小來進行類別指定,即如果算出的Distance(i)是所有E與類別標簽距離中的最小值,則將結(jié)果標簽賦值為i。本文根據(jù)公式(3)得到最小距離的類別標簽作為文檔的情感分類標簽,因為在這些距離中一定存在最小值,因此結(jié)果分類標簽必然是唯一的。
經(jīng)過程序自動運行結(jié)果和手工標注的結(jié)果進行比較,得出不同訓(xùn)練數(shù)量不同的方法準確率變化,如圖5所示。
圖5分類準確率變化圖
顯然,由圖5可以看出,在訓(xùn)練數(shù)據(jù)量較少時,機器學習方法的準確率較低,而情感詞典的方法可以適當彌補機器學習方法準確率較低的問題,提高準確率。而隨著訓(xùn)練數(shù)據(jù)量的增加,其準確率得到相應(yīng)提升,在訓(xùn)練數(shù)據(jù)量在10000到50000之間時,將SVM和KNN方法線性結(jié)合,相比于單獨使用KNN或者SVM方法,提高了機器學習方法準確率3-4個百分點。同時結(jié)合基于情感詞典的情感分析方法,相比于單獨使用KNN或者SVM方法準確率提高了5-6個百分點。當數(shù)據(jù)量到達50000時,SVM的準確率達到了較好的效果,同時與基于情感詞典的方法相結(jié)合,相比于單獨使用KNN或者SVM方法準確率仍提高2個百分點。實驗結(jié)果表明,使用情感詞典以及SVM和KNN加權(quán)方式比單獨使用SVM和KNN方法得到的準確率有一定提升。
實驗表明,本實驗較單獨使用領(lǐng)域無關(guān)性的KNN分類器所得到的準確率平均提升達到4個百分點,提升效果明顯。
實驗表明,本實驗的分類準確率較單獨使用SVM進行訓(xùn)練預(yù)測的分類準確率平均提升為3個百分點。
綜上所述,本文提出的結(jié)合情感詞典以及SVM和KNN加權(quán)方式來進行情感分類的方式是有效的,在分類準確率方面,比單獨使用SVM和KNN提升效果明顯。
結(jié)合實驗結(jié)果,筆者對本文提出的結(jié)合情感詞典以及SVM和KNN加權(quán)方式的改進方法使準確率得以提升的理論原因進行分析,本文認為準確率提升的理由有以下方面。
(1)由于SVM是基于統(tǒng)計學習理論的分類方法,在預(yù)測前必須進行模型的訓(xùn)練。然而,對于未在訓(xùn)練樣本中出現(xiàn)的特征便在訓(xùn)練結(jié)束后的模型中沒有體現(xiàn)。當進行預(yù)測時,如果出現(xiàn)模型中未出現(xiàn)的特征時,很大概率上會出現(xiàn)預(yù)測失敗,這就是單獨使用SVM時準確率得不到提高的一個重要原因。而KNN沒有訓(xùn)練過程,不依賴已經(jīng)有的統(tǒng)計信息,恰好彌補了SVM的缺點。
(2)由于KNN是單純依賴文檔向量間的相似度距離來進行文檔的分類,并且在做初始化簇心時采用隨機算法來進行指定,這直接導(dǎo)致了分類結(jié)果的無法預(yù)測和準確率的低下。而SVM沒有隨機化的過程,恰好彌補了KNN的部分缺點。
(3)在本文提出的加權(quán)公式中,可以通過加權(quán)系數(shù)的變化進而調(diào)整SVM和KNN在分類方面的貢獻率,因此可以通過實驗獲得比較理想的加權(quán)系數(shù),得到最好的分類效果,并且將SVM和KNN相結(jié)合提高分類的準確率。
(4)由于漢語句式的特殊性,能夠滿足情感詞典情感分析算法的簡單句式,因此通過情感詞典算法分析出的情感值會比較準確,所以,采用情感詞典、KNN和SVM三者結(jié)合進行情感分類的方法,可以使情感分析的準確率明顯提高。
本文通過對采用情感詞典的情感分析方法以及基于機器學習的情感分析方法的情感分析準確率的研究,發(fā)現(xiàn)使用傳統(tǒng)情感分析方法準確率較低,分析其可能存在的原因后提出了結(jié)合情感詞典、KNN和SVM來進行情感分類的方法,并提出KNN和SVM兩者的加權(quán)公式,然后對改進的方法通過大量實驗來檢測其效果。實驗結(jié)果表明,改進后的情感分析方法相比于單獨使用KNN或者SVM方法準確率提高5%,因此通過情感詞典以及SVMT和KNN加權(quán)方式相結(jié)合的方式來提高情感分析的準確率是可行的。