◆彭曉彬
(廣東工業(yè)大學(xué)計算機學(xué)院 廣東 510006)
基于word2vec的文本情感分析方法研究
◆彭曉彬
(廣東工業(yè)大學(xué)計算機學(xué)院 廣東 510006)
word2vec是一個將單詞轉(zhuǎn)換成向量形式的工具,可以把對文本內(nèi)容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度,來表示文本語義上的相似度。本文通過對word2vec工作原理的介紹并將它應(yīng)用在文本情感分析領(lǐng)域,最后結(jié)合一些分類器取得較好的實驗結(jié)果,相較于傳統(tǒng)的文本情感分析方法(例如基于情緒詞表的方法)在預(yù)測情感分類的準確率上有所提高。
word2vec;詞向量;情感分析;NLP
情感分析的主要目的就是識別用戶對事物或人的看法、態(tài)度,參與主題主要包括:觀點持有者、評價的對象、評價的觀點,評價的文本(一般是一個句子或者是整篇文檔)[1]。
本文主要是將word2vec[2]應(yīng)用于情感分析領(lǐng)域,結(jié)合一些分類器來做實驗,并與傳統(tǒng)的0-1語言模型對比。
1.1 詞袋模型
“詞袋模型”[3]是在自然語言處理領(lǐng)域的一種語言模型。該模型將文本轉(zhuǎn)化為基于詞典的0-1向量,并認為詞語之間沒有語義上的聯(lián)系,只考慮詞語的共現(xiàn)關(guān)系,忽略了上下文的信息和詞語之間的語義關(guān)聯(lián)。
1.2 word2vec的原理
Word2Vec算法可以在捕捉語境信息的同時壓縮數(shù)據(jù)規(guī)模。其中,谷歌提供的word2vec工具包含了CBOW 和 Skip_gram 兩種語言模型[4],這兩個模型均包含輸入層、投影層和輸出層。其中,CBOW 模型(如圖 1 所示)通過上下文來預(yù)測當(dāng)前詞,與其相反,Skip_gram 模型(如圖 2 所示)則通過當(dāng)前詞來預(yù)測其上下文窗口內(nèi)的單詞。Word2vec 提供了兩種優(yōu)化方法來提高詞向量的訓(xùn)練效率,分別是 HierachySoftmax 和 Negative Sampling。這些方法都利用人工神經(jīng)網(wǎng)絡(luò)作為它們的分類算法[5]。每個單詞都是一個隨機 N 維向量,經(jīng)過訓(xùn)練之后獲得了每個單詞的最優(yōu)向量。
圖1 CBOW的語言模型結(jié)構(gòu)
圖2 skip-gram的語言模型結(jié)構(gòu)
學(xué)習(xí)某一個詞的詞向量的框架如圖3所示,該框架是在給定上下文的詞語的條件下來預(yù)測下一個詞。該框架中,詞語被投射在一個向量空間中,每一個詞語對應(yīng)矩陣W里面唯一的一個列向量,以詞語在詞匯表里面的位置為索引編號[6],然后上下文的單詞向量的級聯(lián)或加和作為特征向量來預(yù)測句子中的下一個詞語。在圖2的框架中,用前面三個單詞“the”、“cat”、“sat”來預(yù)測第四個單詞“on”,每一個單詞被影射到向量矩陣W中。
圖3 學(xué)習(xí)詞向量的框架
當(dāng)給定一個需要訓(xùn)練的詞的序列w1,w2,w3,…,wT,詞向量模型的目標(biāo)是最大化概率取log的平均值
這個預(yù)測任務(wù)主要通過利用類是多分類的做法,例如softmax,在上式中,后驗概率
每個yi都是沒經(jīng)過歸一處理概率的log值,可以做以下計算。
U和b是softmax的參數(shù),h可以通過詞向量的加權(quán)平均值進行構(gòu)建。
通過word2vec算法模型,現(xiàn)在這些詞向量已經(jīng)捕捉到上下文的信息。我們可以利用基本代數(shù)公式來發(fā)現(xiàn)單詞之間的關(guān)系。比如存在數(shù)學(xué)關(guān)系 C(king)?C(queen)≈C(man)?C(woman),與 C(king)?C(man)+C(woman)最接近的向量就是 C(queen)。[7,8]這些詞向量可以代替詞袋用來預(yù)測未知數(shù)據(jù)的情感狀況。該模型的優(yōu)點在于不僅考慮了語境信息,還壓縮了數(shù)據(jù)規(guī)模。由于文本的長度各異,我們可能需要利用所有詞向量的平均值作為分類算法的輸入值,從而對整個文本進行分類處理。
我們利用word2vec的python語言版本,可以直接訓(xùn)練自己語料庫的詞向量或者直接導(dǎo)入已經(jīng)訓(xùn)練好的詞向量。實際上,當(dāng)用于訓(xùn)練的原始語料規(guī)模越大,所得詞向量質(zhì)量就越高,利用谷歌預(yù)訓(xùn)練好的詞向量數(shù)據(jù)來構(gòu)建模型是非常有用的,該詞向量是基于谷歌新聞數(shù)據(jù)(大約一千億個單詞)訓(xùn)練所得。這個文件解壓后的大小是 3.5 GB(數(shù)據(jù)來源https://code.google.com/p/word 2vec/)。
2.1 單句子短文本評論集的情感分析
本實驗中,用于情感分類的數(shù)據(jù)集是某網(wǎng)上商城的商品評論集。該數(shù)據(jù)集擁有約10000個短文本,每個文本是一個單獨的句子并且?guī)в幸粋€人工標(biāo)注的標(biāo)簽,positive表示正面評論,negative表示負面評論,其中正面評論和負面評論的數(shù)量基本對等,本問題可視為二分類問題處理。
實驗首先隨機從原始數(shù)據(jù)集中抽取樣本,劃分訓(xùn)練集和測試集,然后利用 Word2Vec 模型得到訓(xùn)練集的詞向量。實驗中利用機器學(xué)習(xí)模塊 Scikit-Learn 構(gòu)建一個線性模型。分類器的選擇為SGDClassifier中的SVM,采用隨機梯度下降法進行分類器訓(xùn)練,最后利用分類器對測試集進行分類。其中分類器的輸入值為推文中所有詞向量的加權(quán)平均值。實驗步驟如下:
(1)導(dǎo)入數(shù)據(jù)并進行簡單的預(yù)處理;
(2)利用sklearn中的train_test_split函數(shù)將原始數(shù)據(jù)集分為訓(xùn)練集和測試集,比例為8:2;
(3)構(gòu)建word2vec模型,輸入訓(xùn)練集數(shù)據(jù),獲得維度為300的詞向量;
(4)對于每一條評論文本,計算所有詞語的詞向量每個維度的的算術(shù)平均值,得到的新的向量代表一條文本;
(5)對所有的文本構(gòu)成的向量矩陣進行歸一化,轉(zhuǎn)換后每個維度數(shù)據(jù)均值為0,方差為1;
(6)使用邏輯回歸的隨機梯度下降法作為分類器算法進行模型訓(xùn)練;
(7)計算測試集的預(yù)測精度,構(gòu)建ROC 曲線來驗證分類器的有效性。
ROC曲線如下圖:
圖4 基于商品評論集構(gòu)建的分類器的ROC曲線
ROC曲線是評價二類分類器預(yù)測精度的一種常用方法,其中橫軸為FTR(假正率),縱軸為TPR(真正率),繪制曲線的數(shù)值由sklearn中的roc_curve函數(shù)生成。當(dāng)曲線下方的面積越接近1,表明分類器的分類效果越好。我們利用 Scikit-Learn 構(gòu)建的簡單線性模型的預(yù)測精度為76%,這說明 Word2Vec 模型有效地保留了文本的語義信息,和一個簡單的線性分類器的結(jié)合較好地對本數(shù)據(jù)集作出了褒貶分類,取得較好的效果。
2.2 與傳統(tǒng)情感分析方法的對比
為了將本文提出的情感分析方法與傳統(tǒng)方法進行對比,我們設(shè)計了一個基于詞袋模型的實驗。詞袋模型(Bag Of Words,BOW)假設(shè)文本中的詞語相互獨立,詞語之間沒有語義上的關(guān)聯(lián),并且認為詞語與類別之間是直接關(guān)聯(lián)的。詞袋模型在對文本轉(zhuǎn)化為向量表示時,根據(jù)特征選擇的單詞構(gòu)成的詞典將文本映射為一個0-1向量。
數(shù)據(jù)集依然用之前采用的商品評論集,情感分類有褒義和貶義兩個類別。特征選擇采用x2統(tǒng)計量(CHI)方法,用來計算某個詞t與類別c之間的關(guān)系,CHI值計算公式為:
其中,A——詞t與類別c共現(xiàn)的文檔數(shù);
B——詞t出現(xiàn)而類別c未出現(xiàn)的文檔數(shù);
C——詞t未出現(xiàn)而類別c出現(xiàn)的文檔數(shù);
D——詞t與類別c均未出現(xiàn)的文檔數(shù);
N——文檔總數(shù);
依據(jù)上式分別計算出訓(xùn)練集中兩個類別每個詞的CHI值,取其中較大者作為詞t的CHI值,即
將所有的的詞根據(jù)CHI值進行排序,分別取前2500、5000、7500、10000個單詞作為特征進行實驗,訓(xùn)練分類器分別采用樸素貝葉斯分類器和SVM分類器。實驗過程采用10折交叉驗證法,準確率作為評價標(biāo)準,取十次實驗的平均值,不同的特征數(shù)量的準確率如下表所示:
表1 基于詞袋模型的分類準確率對比
實驗結(jié)果表明,在詞袋模型中,隨著特征數(shù)量的提高,分類準確率有所提高,但也造成了維度災(zāi)難等問題。另外,由表中數(shù)據(jù)可知SVM更適合詞袋模型。其中最高的準確率是在10000維度的特征下由SVM分類器取得的,相對于前個實驗的預(yù)測準確率86%,很明顯基于Word2vec的實驗結(jié)果更好,因為詞向量與段落向量保存了語義信息。
在本文跟詞袋模型的對比中可以看到Paragraph Vector和詞向量的平均的聯(lián)合對效果提升的優(yōu)越性。通過算法,我們可以獲得豐富的詞向量和段落向量,這些向量數(shù)據(jù)可以被應(yīng)用到各種各樣的 NLP 應(yīng)用中。Word2vec訓(xùn)練得到的詞向量很好地保存了詞語之間的語義信息。目前,詞向量在中文領(lǐng)域還有很大的發(fā)展空間,應(yīng)用在中文的自然語言處理有望促進中文自然語言處理領(lǐng)域的發(fā)展。
[1]Collobert R,Weston J,Bottou L,et al.Natural Lan-gua ge Processing(almost) from Scratch[J].Journal of Ma-chine Lear ning Research,2011.
[2]趙妍妍,秦兵,劉挺.文本情感分析[J].軟件學(xué)報,2010.
[3]Jaakkola T S,Haussler D.Exploiting Generative Models in Discriminative Classifiers[J].Advances in Neur-alInformation Processing Systems,1998.
[4]Le Q V,Mikolov T.Distributed Representations of Sent ences and Documents[J].Eprint Arxiv,2014.
[5]Wallach H M.Topic modeling:beyond bag-of-words[C] //International Conference on Machine Learning.2006.
[6]Pang B,Lee L.Seeing stars:exploiting class rel-ationshi ps for sentiment categorization with respect to r-ating scales[J]. Proceedings of the Acl,2005.
[7]唐慧豐,譚松波,程學(xué)旗.基于監(jiān)督學(xué)習(xí)的中文情感分類技術(shù)比較研究[J].中文信息學(xué)報,2007.
[8]Wallach H M.Topic modeling:beyond bag-of-words[C] //International Conference on Machine Learning,2006.