於 雯,周武能
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
互聯(lián)網(wǎng)的飛速發(fā)展改變了人民的生活方式給人們的生活帶來了很大的便利,也極大地推動了電子商務(wù)的發(fā)展,網(wǎng)絡(luò)購物也逐漸進入人們的生活中.但是網(wǎng)絡(luò)購物在給人們帶來便捷的同時也具有很多不可避免的弊端,無法真實的感受到商品的屬性,就為我們購買商品帶來了很大的風(fēng)險,所以我們經(jīng)常都會查看別人留下的評論信息在我們做出購買商品決策之前來提供參考.各大網(wǎng)絡(luò)購物平臺也會要求人們在購物結(jié)束之后留下商品的評論信息,為商家提供生產(chǎn)指導(dǎo)也為后續(xù)的消費者提供參考.對商品評論信息的情感傾向分析不僅能夠在消費者購買商品是提供指導(dǎo),也可以使商家客觀的認(rèn)識到自己商品的優(yōu)缺點,來改進自己的商品.因此對商品評論的文本情感分析不僅具有巨大的商業(yè)上的價值也可以對學(xué)術(shù)研究用到實際領(lǐng)域起到很好的推動作用[1].
目前,對于商品評論情感傾向分類使用較多的方法主要有基于情感詞典和基于傳統(tǒng)機器學(xué)習(xí)方法.基于情感詞典的方法[2],主要依賴于對大量情感詞語數(shù)據(jù)庫的構(gòu)建,而且現(xiàn)有的情感詞典規(guī)模有限并且情感詞對于所在領(lǐng)域和屬性的不同具有很大的區(qū)別,因此該方法的應(yīng)用具有較大的局限性.傳統(tǒng)機器學(xué)習(xí)的方法最主要思想是先要通過一部分預(yù)先標(biāo)注好的文本數(shù)據(jù)進行預(yù)訓(xùn)練,訓(xùn)練出一個情感傾向分類器,然后通過不斷的調(diào)節(jié)參數(shù)修改模型以達(dá)到較好分類性能,再通過這個訓(xùn)練好的情感分類器對所有的文本進行情感傾向極性的分類.如:針對不同的特征選擇方法,分別應(yīng)用樸素貝葉斯、支持向量機(SVM)、最大熵等不同的機器學(xué)習(xí)的分類方法.對評論進行分類,在幾種分類方法中SVM分類方法取得的效果最好,其分類準(zhǔn)確率最高可以達(dá)到約88%[3,4].
近年來,深度學(xué)習(xí)的算法在語音和圖像領(lǐng)域取得較大突破,將深度學(xué)習(xí)的方法應(yīng)用與自然語言處理領(lǐng)域也獲得了較大的關(guān)注.如 Bengio等利用深度學(xué)習(xí)的思想構(gòu)建的神經(jīng)概率語言模型[5],將各種深層神經(jīng)網(wǎng)絡(luò)在大規(guī)模英文語料上進行語言模型訓(xùn)練,得到了較好的語義表征,完成了句法分析和命名實體識別等許多的的自然語言處理任務(wù),使得自然語言處理任務(wù)也能很好的應(yīng)對大數(shù)據(jù)時代的挑戰(zhàn)[6,7].本文采用深度學(xué)習(xí)的循環(huán)神經(jīng)網(wǎng)絡(luò)中的一種特殊的長短期記憶網(wǎng)絡(luò)LSTM來對商品評論進行情感傾向分析.
在文本處理中,首要的問題就是將人類的語言文本轉(zhuǎn)化為計算機可以理解的計算機語言,就是如何把一個句子用矢量的形式有效地表達(dá)出來.如果這一步能夠很好的完成,文本分類的復(fù)雜程度將會被大大降低.首先可以將每個詞語都用一個唯一的編號來表示,然后把每個詞的編號集合起來就變成一個句子的表示,并且對于詞語的語義相似性問題,可以通過對語義相似的詞語賦予相近的編號就可以很好的在保證語義的基礎(chǔ)上的表示出一個句子,實際上這種方法只在假定語義是單一的情況下成立,也就是說,在這種情況下考慮的語義是只有一維的情況.但是事實卻并非如此簡單,語義應(yīng)該是更加復(fù)雜的多維的情況,而且基于中文的語義就會更加龐雜.因此如果只通過一個唯一的編號,就想將這些詞語放到合適的位置具有很大的難度.針對上述問題本文利用 Google開源的著名工具Word2Vec[8]用高維的向量(詞向量,Word Embedding)來表示詞語,并把具有相近意思的詞語放在同樣相近的位置并且對固定詞向量的維度,就可以通過實數(shù)向量來訓(xùn)練模型,以獲得詞語的詞向量表示.
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networ,RNN)[9],顧名思義是具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.RNN 的鏈?zhǔn)浇Y(jié)構(gòu)使得其能夠很好的解決序列的標(biāo)注問題.但是由于梯度爆炸和梯度消失等問題經(jīng)常存在于在 RNN 的訓(xùn)練中,使得 RNN很難保持較長時間的記憶.
圖1 RNN網(wǎng)絡(luò)結(jié)構(gòu)
長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)是有 RNN 擴展而來,在設(shè)計之初就是用來解決RNN 長期依賴的問題.LSTM也是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)因此也具有鏈狀結(jié)構(gòu),但是相比循環(huán)神經(jīng)網(wǎng)絡(luò)的重復(fù)模塊有著不同的結(jié)構(gòu).它有四層神經(jīng)網(wǎng)絡(luò)層,各個網(wǎng)絡(luò)層之間以特殊的方式相互作用,并非單個簡單的神經(jīng)網(wǎng)絡(luò)層.網(wǎng)絡(luò)模塊示意圖如2所示.
在圖2中每個傳輸單元的狀態(tài)是決定 LSTM網(wǎng)絡(luò)的核心,就是穿過圖中的每條水平線.一個單元狀態(tài)就相當(dāng)于于一個傳送帶,它貫穿于整個結(jié)構(gòu),在這個過程中僅通過一些線性的作用保證了信息傳輸?shù)牟蛔冃?LSTM還具有一個很好的性能就是可以增加和去除向單元狀態(tài)中傳輸?shù)男畔?通過幾個結(jié)構(gòu)來管理信息的傳輸并將其稱為門限.門限就是有選擇地讓信息通過.它們由一個sigmoid神經(jīng)網(wǎng)絡(luò)層和逐點乘法運算組成.sigmoid層輸出[0,1]的數(shù)字,描述了每個成分應(yīng)該通過門限的程度.0表示不讓任何成分通過,而1表示所有成分都可以通過[10].
圖2 LSTM網(wǎng)絡(luò)結(jié)構(gòu)
LSTM有三種這樣的門限,分別為:輸入門、遺忘門和輸出門通過這三個門限來保護和控制單元狀態(tài).以下公式中分別表示t時刻對應(yīng)的三種門結(jié)構(gòu)和單元狀態(tài).
(1)遺忘狀態(tài)信息,LSTM中第一步是決定從上一單元傳來的信息哪些需要從單元狀態(tài)中拋棄.這是由一個sigmoid輸出層決定的該層被成為“遺忘門”.然后為單元狀態(tài)中的每個數(shù)字輸出一個[0,1]的值.就是以當(dāng)前層的輸入xt和上一層的輸出ht?1作為輸入,然后在t–1時刻的細(xì)胞狀態(tài)輸出ft;
(2)更新狀態(tài)信息,決定在單元狀態(tài)中哪些新信息需要被存儲下來.這一層可以分為兩部分.首先,由一個sigmoid層決定哪些值需要更新該層被稱為“輸入門”.接下來,tanh層創(chuàng)建一個向量,里面包含新的待添加信息,這些信息是可以添加到新的狀態(tài)單元的信息.下一步我們將會結(jié)合這兩部分的信息對單元狀態(tài)進行更新.首先更新舊單元狀態(tài),然后為新的單元狀態(tài)輸入新的信息,即在細(xì)胞狀態(tài)中更新信息,主要傳輸過程為:① 輸入門的 sigmoid 層的結(jié)果it作為將更新的信息;②由tanh層新創(chuàng)建的向量c?t,將添加在細(xì)胞狀態(tài)中.將舊的細(xì)胞狀態(tài)ct?1乘以ft,用以遺忘信息,與新的候選信息it·c?t的和,一起合成細(xì)胞狀態(tài)的更新.
(3)輸出信息,用 sigmoid 層來決定要輸出細(xì)胞狀態(tài)的相關(guān)信息,該層被稱為“輸出門”然后用tanh處理細(xì)胞狀態(tài),兩部分信息的乘積就是要輸出的信息.
其中,sigmoid 函數(shù)模型為:
Tanh函數(shù)模型為:
基于LSTM我們可以搭建出商品評論文本的情感分類模型,其結(jié)構(gòu)圖如圖3所示.
圖3 分類模型結(jié)構(gòu)圖
由于互聯(lián)網(wǎng)的商品評論大多屬于短文本,且每個用戶的語言習(xí)慣具有很大差異,在進行文本分類之前需要對文本進行預(yù)處理,需要去除大量的無關(guān)符號,同時對詞頻進行統(tǒng)計,統(tǒng)計得出在文本中出現(xiàn)頻率最高的多為與情感表達(dá)無關(guān)的副詞,因此利用分詞工具進行詞性標(biāo)注后去除無關(guān)的停用詞.將經(jīng)過預(yù)處理后的文本作為輸入,進入分類模型之后通過Word2vec 把文本變?yōu)榉植际酱鎯Φ脑~向量,經(jīng)過LSTM 網(wǎng)絡(luò),為防止模型產(chǎn)生過擬合,在LSTM 網(wǎng)絡(luò)中加入Dropout隨機優(yōu)化因子,使得模型在復(fù)雜的評論語句中也能很好的擬合,增加了模型的適用性
本文的實驗環(huán)境為Windows 7操作系統(tǒng),采用Python編程語言,利用Python的Keras庫來實現(xiàn)LSTM網(wǎng)絡(luò)的搭建,其中Keras 庫底層通過調(diào)用Tensorflow框架來實現(xiàn)本文實驗環(huán)境的搭建,對比實驗中的機器學(xué)習(xí)方法,也采用Python 的第三方機器學(xué)習(xí)庫Scikit-learn來實現(xiàn)傳統(tǒng)機器學(xué)習(xí)的分類方法.
本文實驗的英文數(shù)據(jù)采用斯坦福大學(xué)公開的評論數(shù)據(jù)[12],數(shù)據(jù)已做好情感分類標(biāo)簽正面情感標(biāo)為1負(fù)面情感標(biāo)為0.中文數(shù)據(jù)利用網(wǎng)絡(luò)爬蟲工具從網(wǎng)站上爬取兩萬多條評論信息(涉及六個領(lǐng)域)在去除無關(guān)信息后進行人工標(biāo)注.在標(biāo)注過程中由三個人分別于不同時間段進行標(biāo)注正面情感標(biāo)為1負(fù)面情感標(biāo)為0,并將標(biāo)注結(jié)果取三個人中的最大值(即如果對某條信息的標(biāo)注結(jié)果不同則取標(biāo)注結(jié)果人數(shù)最多的作為最后結(jié)果)以保證標(biāo)注結(jié)果的準(zhǔn)確性.對中文實驗數(shù)據(jù)采用jieba分詞工具做中文分詞處理并去除停用詞.最后采用隨機切分的方法隨機將數(shù)據(jù)切分為測試集和訓(xùn)練集,測試集和訓(xùn)練集的占比為2:8,訓(xùn)練集用于訓(xùn)練LSTM模型,測試集用于測試分類模型的分類效果.
實驗采用的評估分類模型的主要指標(biāo)為模型分類的準(zhǔn)確率、召回率及F1值[11],具體計算公式如下:
其中,a表示情感分類模型判斷文本類別正確的數(shù)目;b表示情感分類模型判斷錯誤將本不屬于此類的文本分到本類別的數(shù)目;c表示分類器錯誤判斷文本本該屬于次類別但卻錯分為其他類別的數(shù)目.
在本文實驗?zāi)P椭兄饕獏?shù)有模型對預(yù)測結(jié)果進行分類的閾值大小,還有采用Dropout算法的比率,以及每輪訓(xùn)練數(shù)據(jù)的大小(batch_size)和訓(xùn)練輪數(shù),模型參數(shù)設(shè)置如表1所示.
由于在對最后的預(yù)測結(jié)果輸出的是一個[0,1]之間的數(shù)值所以分類的閾值對于分類的準(zhǔn)確率具有很大的影響,通常我們會選擇中間值0.5作為分類的閾值,就是在分類結(jié)果大于0.5時判斷為正面,預(yù)測結(jié)果小于0.5時判斷為負(fù)面情感,但是將0.5作為閾值有時并不是最好的選擇,如圖4所示,在研究分類閾值對于真正率和真負(fù)率的影響時發(fā)現(xiàn),曲線在0.39左右發(fā)生了陡變,因此我們選擇0.39作為模型的分類閾值,大于0.39的才被分為正面情感,小于0.39的就被認(rèn)為是負(fù)面情感.
表1 基于LSTM的模型參數(shù)設(shè)置
圖4 真正率和真負(fù)率隨閾值變化曲線
本文的方法采用了深度學(xué)習(xí)的LSTM 網(wǎng)絡(luò)利用高維詞向量的Word2vec方法表示文本詞向量以及使用Dropout的算法在收集的評論文本中進行實驗,并和其他方法進行對比實驗.
將本文采用的Dropout算法進行對比實驗.因為本文屬于二分類問題所以采用對數(shù)損失(binary loss)來衡量損失,本文的實驗?zāi)P椭幸昧?Dropout的算法,從圖5中可以看到相比于沒有使用Dropout的算法的模型,使用Dropout的算法之后損失函數(shù)開始下降較快但是后期下降比較平穩(wěn)說明了函數(shù)的擬合情況較好,證明 Dropout算法的引用提高了模型的泛化能力有效的防止過擬合,并且可以看到隨著訓(xùn)練輪數(shù)的增加函數(shù)損失不斷平穩(wěn)減小.
最后實驗將本文采用的基于 LSTM的方法與傳統(tǒng)的機器學(xué)習(xí)算法,樸素貝葉斯和支持向量機的方法和基于Word2vec情感詞典(本文采用的情感詞典為知網(wǎng)HowNet情感詞典)的方法進行建模對比,同時在不同的中英文數(shù)據(jù)集上進行驗證實驗,實驗結(jié)果如表2所示在利用網(wǎng)絡(luò)爬蟲和自己進行人工標(biāo)注的數(shù)據(jù)上采用本文LSTM + Word2vec+Dropout算法分類模型的各項評價指標(biāo)都要高于其他幾種方法.采用機器學(xué)習(xí)方法由于需要進行特征的選擇和降維操作仍需要較大的工作量,基于情感詞典的方法由于對傳統(tǒng)的情感詞典具有較大的依賴性,并且由于語言系統(tǒng)的復(fù)雜性想要進一步提高精度仍具有很大的難度.由此可以證實本文提出的方法對于商品評論情感傾向性分析具有較好的實用性.
圖5 Dropout算法對損失函數(shù)影響曲線
表2 不同數(shù)據(jù)集不同模型對比實驗結(jié)果
本文的工作基于 LSTM網(wǎng)絡(luò)模型,利用 jieba分詞工具對文本語料進行中文分詞,并利用Word2vec工具來表征高維詞向量,訓(xùn)練多領(lǐng)域的文本語料易于移植到多領(lǐng)域的使用克服了傳統(tǒng)情感詞典方法的領(lǐng)域詞典不足的情況.和傳統(tǒng)機器學(xué)習(xí)的分類模型相比,基于LSTM模型的方法,不用人為地設(shè)計和提取特征,傳統(tǒng)機器學(xué)習(xí)方法對于文本特征的配置和提取都具有一定的難度,并且通過Word2vec對詞向量的處理降低了詞語的維度同時也縮短了分詞模型的訓(xùn)練時間,同時由于深度學(xué)習(xí)的模型還可以通過GPU來訓(xùn)練,可以縮短相應(yīng)的訓(xùn)練時間,模型的適用性更強.為后續(xù)可以很好的使用評論信息來為預(yù)測用戶喜好以及分析真實商品信息提供了良好的基礎(chǔ)支持.