鄔明強(qiáng),鄔佳明,辛偉彬
1(廣東東軟學(xué)院 數(shù)字媒體與設(shè)計(jì)學(xué)院,佛山 528200)
2(開(kāi)封大學(xué) 軟件職業(yè)技術(shù)學(xué)院,開(kāi)封 475004)
進(jìn)入大數(shù)據(jù)時(shí)代、互聯(lián)網(wǎng)+時(shí)代,數(shù)據(jù)呈現(xiàn)指數(shù)級(jí)增長(zhǎng).微博的社交關(guān)系,淘寶的購(gòu)物記錄,不同類型的新聞信息,諸如娛樂(lè)、軍事、體育等這些形形色色的數(shù)據(jù)包括了人們的各種行為活動(dòng)的細(xì)節(jié)[1].據(jù)統(tǒng)計(jì),1998年3月,我國(guó)第一筆互聯(lián)網(wǎng)網(wǎng)上交易成功,標(biāo)志著網(wǎng)上購(gòu)物在中國(guó)的興起;2001年底,我國(guó)互聯(lián)網(wǎng)用戶數(shù)增長(zhǎng)為3370萬(wàn),網(wǎng)上購(gòu)物的交易額僅為6億元;2010年中國(guó)網(wǎng)絡(luò)購(gòu)物交易規(guī)模就已經(jīng)達(dá)到了5000億.線下沒(méi)有的,照樣可以網(wǎng)購(gòu)到,而在琳瑯滿目的物品中挑選出合適物品的一個(gè)很重要途徑的就是看評(píng)價(jià).因?yàn)槠渌櫩唾?gòu)買該物品后,一般會(huì)對(duì)產(chǎn)品進(jìn)行評(píng)論,所以只要他或她挑選出了中意的商品,再結(jié)合評(píng)論區(qū)的評(píng)論就可以很容易的對(duì)所購(gòu)的商品進(jìn)行更全面的了解.
同時(shí),隨著智能手機(jī)的快速普及,一些飲食類APP,如美團(tuán)、餓了么應(yīng)運(yùn)而生,住宿類APP如去哪兒網(wǎng)、攜程網(wǎng)等人們已司空見(jiàn)慣,面對(duì)眾多的餐館、魚(yú)龍混雜的酒店、賓館,用戶如何根據(jù)自己的需求選擇一個(gè)性價(jià)比最優(yōu)的呢? 顯然最好的方式是查看大量已有的評(píng)價(jià)數(shù)據(jù).本文正是在此背景下從眾多的數(shù)據(jù)集中選取了一定數(shù)量的其中3類數(shù)據(jù)集,借助計(jì)算機(jī)信息技術(shù)的優(yōu)勢(shì)對(duì)已有的文本進(jìn)行處理,進(jìn)而構(gòu)造一個(gè)可靠的情感分類系統(tǒng),通過(guò)情感分類算法對(duì)大量的情感分類數(shù)據(jù)進(jìn)行訓(xùn)練構(gòu)造出相應(yīng)的模型,一旦有新的評(píng)價(jià)數(shù)據(jù)到來(lái),只需要導(dǎo)入該系統(tǒng)就可以快速地完成情感的分析分類.
1.1.1 情感分類方法介紹
常見(jiàn)的情感分類方法有五大類:基于詞典的方法、基于機(jī)器學(xué)習(xí)的方法、詞典與機(jī)器學(xué)習(xí)相結(jié)合的方法、基于弱標(biāo)注信息的方法以及基于深度學(xué)習(xí)的方法.其中基于詞典方法的模式是“詞典+規(guī)則”,即以情感詞典作為判斷情感極性的主要依據(jù),同時(shí)兼顧評(píng)論數(shù)據(jù)中的句法結(jié)構(gòu),設(shè)計(jì)相應(yīng)的判斷規(guī)則;基于機(jī)器學(xué)習(xí)的方法主要依賴特征工程,通過(guò)n-gram方法、Partof-Speech方法、句法特征方法、TF-IDF方法提取出一定數(shù)量的滿足條件的特征,再放到情感詞典中進(jìn)行匹配,進(jìn)而推斷出情感的性質(zhì);將詞典與機(jī)器學(xué)習(xí)融合起來(lái)的方法可以將“詞典+規(guī)則”視為簡(jiǎn)單的分類器或者將詞典信息作為特征與現(xiàn)有特征進(jìn)行結(jié)合,選擇最優(yōu)的特征組合進(jìn)行情感分類;基于弱標(biāo)注信息的情感分類方法試圖從用戶產(chǎn)生的數(shù)據(jù)中挖掘有助于訓(xùn)練情感分類器的信息,比如評(píng)論評(píng)分、微博表情符號(hào)等,加入情感詞典進(jìn)行分類.
前面幾種方法都屬于傳統(tǒng)的文本情感分類方法,在文本分類的表現(xiàn)上仍然有很多不足的地方,因?yàn)樵诜诸愡^(guò)程中需要加入很多人為因素來(lái)對(duì)某種場(chǎng)景下的情感進(jìn)行分類,尤其在語(yǔ)料的訓(xùn)練和情感詞典的建立方面體現(xiàn)的更明顯,如果不是語(yǔ)言學(xué)家或者擁有濃厚的語(yǔ)言背景知識(shí),那么整個(gè)情感分類的結(jié)果就會(huì)受到很大的影響.而基于深度學(xué)習(xí)的情感分類方法克服了傳統(tǒng)方法的不足,首先要求從大量評(píng)論數(shù)據(jù)中學(xué)習(xí)出語(yǔ)義詞向量,然后通過(guò)不同的語(yǔ)義合成方法用詞向量得到對(duì)應(yīng)句子或文檔的特征表達(dá),再通過(guò)構(gòu)建的神經(jīng)網(wǎng)絡(luò)模型導(dǎo)入相關(guān)的句向量就可以讓模型自動(dòng)通過(guò)前向傳播算法和反向傳播算法不斷對(duì)參數(shù)進(jìn)行迭代更新以減少loss函數(shù)值來(lái)提升分類準(zhǔn)確率,這個(gè)過(guò)程中我們只需要設(shè)置一些參數(shù)即可,包括輸入層數(shù)量、隱藏層數(shù)量、各層之間的權(quán)重、隱藏層及之前需要的偏置值、學(xué)習(xí)率、激活函數(shù)等就可以訓(xùn)練出一個(gè)情感分類的模型.
1.1.2 深度學(xué)習(xí)情感分類方法發(fā)展
傳統(tǒng)的情感分類方法包括樸素貝葉斯方法、最近鄰方法、支持向量機(jī)方法等,準(zhǔn)確率受到了很大限制,隨著深度學(xué)習(xí)的興起以及數(shù)據(jù)處理能力的不斷提升,深度學(xué)習(xí)技術(shù)廣泛用于圖像處理、語(yǔ)音識(shí)別、自然語(yǔ)言處理等方面.RNN循環(huán)神經(jīng)網(wǎng)絡(luò)方法作為自然語(yǔ)言處理的一種方法因?yàn)椴荒苡涀√盎蛱蟮膬?nèi)容,所以仍然有一定的局限性,而LSTM神經(jīng)網(wǎng)絡(luò)(Long Short Term Memory)作為RNN網(wǎng)絡(luò)的一種變種,它通過(guò)在普通的RNN基礎(chǔ)上,在隱藏層各神經(jīng)元中增加記憶單元,從而使時(shí)間序列上的記憶信息可控,每次在隱藏層各個(gè)單元間傳遞時(shí)通過(guò)幾個(gè)可控門(遺忘門、輸入門、候選門、輸出門),來(lái)控制之前信息和當(dāng)前信息的記憶和遺忘程度,從而具有長(zhǎng)期記憶功能[2].本文采用的正是Word2Vec與LSTM相結(jié)合的情感分析方法.
1.2.1 Word2Vec
Word2Vec摒棄了傳統(tǒng)方法的one-hot編碼方式,將一個(gè)詞語(yǔ)對(duì)應(yīng)一個(gè)多維向量,通過(guò)該多維向量允許我們用變化較小的數(shù)字來(lái)表征詞語(yǔ),如果用20維向量理論上就可以表征220=1048 576個(gè)詞語(yǔ)了,通過(guò)一定方法,比如歐氏距離或者余弦相似度就可以把相近意思的詞語(yǔ)放在相近的位置,而且一般用的是實(shí)數(shù)向量[3].通過(guò)將所有的詞向量化,詞與詞之間就可以定量的度量他們之間的關(guān)系.
1.2.2 LSTM簡(jiǎn)介
LSTM,是為了解決長(zhǎng)期以來(lái)問(wèn)題而專門設(shè)計(jì)出來(lái)的它是在RNN的基礎(chǔ)上衍生來(lái)的,當(dāng)相關(guān)的信息和要預(yù)測(cè)的詞的位置之間的間隔很小時(shí),RNN可以學(xué)會(huì)使用先前的信息,但是當(dāng)相關(guān)信息和當(dāng)前預(yù)測(cè)位置相隔較遠(yuǎn)時(shí),RNN會(huì)喪失學(xué)習(xí)到很遠(yuǎn)信息的能力.LSTM通過(guò)刻意的設(shè)計(jì)來(lái)避免長(zhǎng)期依賴問(wèn)題.記住長(zhǎng)期的信息在實(shí)踐中是LSTM的默認(rèn)行為,LSTM重復(fù)模塊中包含四個(gè)交互的層.其中遺忘門決定我們從細(xì)胞狀態(tài)中丟棄什么信息,輸入門決定多少新信息加入到細(xì)胞狀態(tài)中來(lái),輸出門決定輸出什么值[4].LSTM結(jié)構(gòu)圖如圖1所示.
1.2.3 LSTM情感分類處理流程
先使用Word2Vec模型將詞向量的集合對(duì)應(yīng)成句子,這樣就能夠得到表征該句子的句向量,然后將句向量作為神經(jīng)網(wǎng)絡(luò)模型的輸入部分,向量的每個(gè)分量對(duì)應(yīng)神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點(diǎn),隱藏層可以根據(jù)經(jīng)驗(yàn)進(jìn)行設(shè)置,輸出層的節(jié)點(diǎn)個(gè)數(shù)就是我們要分類的類別數(shù).情感分類流程圖如圖2所示.
圖1 LSTM結(jié)構(gòu)圖
圖2 情感分類流程圖
選取了一定數(shù)量的語(yǔ)料后,就進(jìn)入了數(shù)據(jù)預(yù)處理階段,包括分詞、去停用詞,接著使用Word2Vec模型訓(xùn)練出一定數(shù)量的情感詞典,然后使用Keras模型搭建出一個(gè)LSTM結(jié)構(gòu),設(shè)置好網(wǎng)絡(luò)的輸入層、隱藏層、輸出層,然后進(jìn)行調(diào)優(yōu),包括設(shè)置學(xué)習(xí)率、激活函數(shù)、損失函數(shù),選取優(yōu)化器等.實(shí)驗(yàn)處理的流程如圖3所示.
圖3 本文文本分類處理流程圖
本文分別選取了網(wǎng)上關(guān)于書(shū)籍、酒店住宿、手機(jī)的評(píng)論數(shù)據(jù)作為實(shí)驗(yàn)用的語(yǔ)料,一共21 090條,每一類數(shù)量均為7030.現(xiàn)從每一類隨機(jī)抽取一些數(shù)據(jù)集,包括積極、中性、消極3類,每一類的數(shù)據(jù)集均劃分成訓(xùn)練集、驗(yàn)證集、測(cè)試集3部分,比例都為6:2:2,數(shù)據(jù)存儲(chǔ)在csv格式的數(shù)據(jù)文件中.各部分?jǐn)?shù)據(jù)的數(shù)量如表1所示.
表1 數(shù)據(jù)集劃分表
本文使用結(jié)巴庫(kù)中的lcut方法對(duì)中文句子進(jìn)行切分,jieba庫(kù)作為Python自帶的第三方中文分詞庫(kù),功能非常強(qiáng)大,分詞的準(zhǔn)確率與速度均高于同類的分詞軟件.
通過(guò)Google提出的Word2Vec模型來(lái)訓(xùn)練情感詞典,將文本的內(nèi)容轉(zhuǎn)換為向量來(lái)表征[5].利用向量的夾角公式來(lái)計(jì)算詞與詞的相似度,詞向量一般是實(shí)數(shù)值形式的,表征的范圍更大、效率更高.通過(guò)Wikipedia獲取大量的語(yǔ)料進(jìn)行訓(xùn)練,通過(guò)分詞、去停用詞、利用Word2Vec模型進(jìn)行特征提取等最終將不同性質(zhì)的詞語(yǔ)歸為一類并用高維的實(shí)型向量表示[6].
創(chuàng)建單詞到索引的映射以及單詞到詞向量的映射,若單詞的索引數(shù)小于10,則設(shè)置為0,若詞語(yǔ)的索引為0,則詞向量也為0,若詞語(yǔ)的索引不為0,則詞向量的分量為該詞語(yǔ)在情感詞典中的出現(xiàn)次數(shù).接著分別獲取訓(xùn)練集及其標(biāo)簽、驗(yàn)證集及其標(biāo)簽、測(cè)試集及其標(biāo)簽構(gòu)造的詞向量.詞匯的維度假設(shè)為100維,那么訓(xùn)練集、驗(yàn)證集及測(cè)試集的數(shù)據(jù)維度均為提取的詞匯大小×100,標(biāo)簽數(shù)據(jù)對(duì)應(yīng)的維度均為詞匯大小×3.
本文通過(guò)Keras框架構(gòu)建了一個(gè)LSTM神經(jīng)網(wǎng)絡(luò)模型,其中模型的基本結(jié)構(gòu)為:輸入層InputLayer為輸入的序列編碼成的向量維度,有向量維度大小的神經(jīng)元,隱藏層HidenLayer的大小可以自由設(shè)置,這里設(shè)置為64,輸出層Softmax的大小為情感分類的類別,這里進(jìn)行的是三分類,所以輸出層有3個(gè)神經(jīng)元,分別代表積極類、中性類與消極類[7].部分結(jié)構(gòu)代碼設(shè)置如下:
np.concatenate((np.ones(len(pos),dtype=int),np.zero s(len(neu),dtype=int),-1*np.ones(len(neg),dtype=int)))/*pos類類別標(biāo)簽為1,neu類類別標(biāo)簽為0,neg類類別標(biāo)簽為-1 */
model.add(LSTM(HIDDEN_LAYER_SIZE,dropout=0.2,recurrent_dropout=0.2))
model.add(Dense(3,activation=‘softmax’))/*LSTM情感分類模型搭建 */
構(gòu)造LSTM模型之前,先做如下預(yù)處理:
1)變長(zhǎng)序列的處理
因?yàn)槊恳活悇e下的數(shù)據(jù)集中句子的長(zhǎng)度都不相等,所以需要將變長(zhǎng)序列轉(zhuǎn)換成定長(zhǎng)序列來(lái)處理:首先在所有句子中選取一個(gè)最大長(zhǎng)度的句子,這里設(shè)定序列最大長(zhǎng)度maxlen為100,不足這個(gè)長(zhǎng)度的序列補(bǔ)0,然后在embedding層中過(guò)濾掉指定字符,通過(guò)該層能將序列映射到一個(gè)固定維度的空間中,代碼如下:
model.add(Embedding(output_dim=vocab_dim,
input_dim=n_symbols,
input_length=input_length))
2)數(shù)據(jù)歸一化
數(shù)據(jù)歸一化的目的是將原本不同量綱的數(shù)據(jù)經(jīng)過(guò)標(biāo)準(zhǔn)化處理后,讓不同的數(shù)據(jù)處于同一數(shù)量級(jí),這樣各數(shù)據(jù)指標(biāo)之間會(huì)具有更好的可比性.這里使用Z-score標(biāo)準(zhǔn)化方法:用樣本的數(shù)據(jù)減去均值再除以標(biāo)準(zhǔn)差,如下所示,這里僅列舉出訓(xùn)練集數(shù)據(jù)標(biāo)準(zhǔn)化代碼:
x_train=np.array(x_train,dtype=np.float)#將數(shù)據(jù)類型轉(zhuǎn)換為float
x_train-=np.mean(x_train,axis=1).reshape(16870,1)# zero-center #求出每一行的均值
x_train /=np.std(x_train,axis=1)# normalize
#數(shù)據(jù)未歸一化和歸一化后的測(cè)試準(zhǔn)確率比較如表2所示.
表2 歸一化前后準(zhǔn)確率對(duì)比表
所以,在模型構(gòu)造時(shí),數(shù)據(jù)不經(jīng)過(guò)歸一化處理模型的效果更好.
3)權(quán)重初始化
LSTM作為神經(jīng)網(wǎng)絡(luò)的一種模型,訓(xùn)練過(guò)程中也要及時(shí)的對(duì)權(quán)重進(jìn)行更新,在更新前,需要給每個(gè)權(quán)重一個(gè)初始值.這里有3種初始化權(quán)重的方式:
第一種方式是把索引為0的詞語(yǔ)權(quán)重初始化為0,索引為1的詞語(yǔ)開(kāi)始每個(gè)詞語(yǔ)按照其對(duì)應(yīng)的詞向量大小進(jìn)行初始化.
第二種方式是Xavier初始化,具體方式如下:
Weights=np.random.randn(node_in,node_out))/np.sqrt(node_in)
其中node_in為前一層神經(jīng)元節(jié)點(diǎn),node_out為后一層神經(jīng)元節(jié)點(diǎn).
第三種初始化的方式是He初始化,它是在Xavier初始化的基礎(chǔ)上,將分母中的方差節(jié)點(diǎn)除以2即可[8].實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)使用He初始化時(shí),測(cè)試集數(shù)據(jù)的準(zhǔn)確率最高.
當(dāng)前訓(xùn)練的數(shù)據(jù)量達(dá)上萬(wàn)條,所以需要將數(shù)據(jù)集分成多個(gè)小塊,實(shí)驗(yàn)發(fā)現(xiàn)當(dāng)訓(xùn)練輪數(shù)epoch達(dá)到30輪之前val loss不斷下降,test loss不斷下降;當(dāng)輪數(shù)超過(guò)30輪時(shí),val loss與test loss趨于穩(wěn)定,所以epoch=30為最優(yōu)訓(xùn)練輪數(shù).
影響LSTM模型準(zhǔn)確率的因素非常多,其中就包含各種不同性質(zhì)的超參數(shù),比如損失函數(shù)、優(yōu)化器種類、學(xué)習(xí)率的大小、激活函數(shù)的選取等,這里選取影響LSTM模型的主要因素進(jìn)行分析,分別如下所示.
1)損失函數(shù)Loss
通過(guò)損失函數(shù)的連續(xù)變化,使預(yù)測(cè)數(shù)據(jù)的真實(shí)值和實(shí)際值的誤差不斷減少,這樣就可以對(duì)給定的模型進(jìn)行預(yù)測(cè)了,對(duì)于多分類來(lái)說(shuō),常見(jiàn)的損失函數(shù)可以為categorical_crossentropy或mean square error.
當(dāng)選用的損失函數(shù)為mean square error時(shí),測(cè)試集的總體準(zhǔn)確率最高.
2)學(xué)習(xí)率Lr
根據(jù)經(jīng)驗(yàn),學(xué)習(xí)率是用來(lái)控制模型的學(xué)習(xí)進(jìn)度,一般設(shè)置在0.001~10之間時(shí)樣本訓(xùn)練的效果最好[9].當(dāng)學(xué)習(xí)率設(shè)置為0.001,0.01,0.1,1,10時(shí),不同學(xué)習(xí)率對(duì)應(yīng)的準(zhǔn)確率如圖4所示.
從圖4可以看出,當(dāng)學(xué)習(xí)率設(shè)置為0.001時(shí),模型的訓(xùn)練效果最好.
3)優(yōu)化器Optimizer
因?yàn)長(zhǎng)STM模型可以設(shè)定的參數(shù)很多,參數(shù)空間比較復(fù)雜,所以優(yōu)化問(wèn)題比較困難,為了尋求最優(yōu)參數(shù),在模型編譯時(shí)選擇了不同的優(yōu)化器進(jìn)行優(yōu)化,其中包括SGD、Momentum、AdaGrad、Adam等[9],其中SGD又稱隨機(jī)梯度下降法,函數(shù)會(huì)沿著當(dāng)前位置呈“之”字形往下移動(dòng),對(duì)參數(shù)更新時(shí)使用的學(xué)習(xí)率相同,Momentum借用了物理上“動(dòng)量”的概念,就像小球一樣在地面上滾動(dòng),它在面對(duì)小而連續(xù)的梯度時(shí),學(xué)習(xí)的更快,AdaGrad優(yōu)化器能在學(xué)習(xí)的過(guò)程中不斷減少學(xué)習(xí)率,并隨著學(xué)習(xí)的進(jìn)行可以適當(dāng)?shù)恼{(diào)整,Adam優(yōu)化器是將Momentum與AdaGrad方法融合到一起創(chuàng)建的,它既可以按照類似小球在碗中滾動(dòng)的物理規(guī)則進(jìn)行移動(dòng),也可以動(dòng)態(tài)地調(diào)整更新過(guò)程中的學(xué)習(xí)率[9].除此之外,還有Adamax、Nadam、RMSProp等優(yōu)化器.不同優(yōu)化器準(zhǔn)確率如圖5所示.
圖4 不同學(xué)習(xí)率對(duì)應(yīng)的準(zhǔn)確率圖
圖5 不同優(yōu)化器對(duì)應(yīng)的準(zhǔn)確率圖
可以看出,當(dāng)優(yōu)化器選擇RMSProp時(shí),模型訓(xùn)練效果最好.
4)激活函數(shù)
激活函數(shù)可以將神經(jīng)網(wǎng)絡(luò)線性的輸入轉(zhuǎn)化到一定范圍的非線性值,從而使神經(jīng)網(wǎng)絡(luò)表達(dá)能力更加強(qiáng)大,網(wǎng)絡(luò)理論上可以逼近任意函數(shù).在本文的多分類情感分析模型中,主要選擇了3種激活函數(shù):tanh、relu、Softmax[10],在訓(xùn)練輪數(shù)、學(xué)習(xí)率、損失函數(shù)、優(yōu)化器等參數(shù)確定的情況下,通過(guò)實(shí)驗(yàn)可以得出不同激活函數(shù)作用下測(cè)試集總體的準(zhǔn)確率.如表3所示.
表3 不同激活函數(shù)作用下的準(zhǔn)確率表
從表3可以看出,當(dāng)激活函數(shù)選擇tanh時(shí)測(cè)試集的準(zhǔn)確率最高.
當(dāng)然,為了防止過(guò)擬合,程序中使用了Dropout方法,該方法是在訓(xùn)練過(guò)程中隨機(jī)選出一定比例隱藏層的神經(jīng)元,將其刪除,被刪除的神經(jīng)元不再進(jìn)行信號(hào)的傳遞,輸出的神經(jīng)元要乘上訓(xùn)練時(shí)的刪除比例然后再輸出.經(jīng)過(guò)多次實(shí)驗(yàn)證明,dropout=0.2時(shí),效果最好.
本次實(shí)驗(yàn)的硬件環(huán)境為:CPU為i7-6700HQ@2.60 GHz,內(nèi)存為8 GB,顯卡為GTX965M;軟件環(huán)境為:Eclipse作為開(kāi)發(fā)工具,使用anaconda自帶的Python解釋器作為PyDev的Intepreter,使用keras框架來(lái)實(shí)現(xiàn)LSTM神經(jīng)網(wǎng)絡(luò)模型,使用Python的工具包gensim來(lái)訓(xùn)練Word2Vec模型,使用matplotlib庫(kù)來(lái)繪制本實(shí)驗(yàn)中相關(guān)的圖形.
經(jīng)過(guò)反復(fù)實(shí)驗(yàn)測(cè)試,當(dāng)數(shù)據(jù)沒(méi)有歸一化、使用He初始化權(quán)重、學(xué)習(xí)率為0.001、損失函數(shù)為Mean Square Error(簡(jiǎn)稱MSE)、優(yōu)化器選擇RMSProp、激活函數(shù)選擇tanh、訓(xùn)練輪數(shù)達(dá)到30輪時(shí),模型總體測(cè)試集的準(zhǔn)確率最高,這些參數(shù)組合到一起時(shí)訓(xùn)練的效果最好.這里采用準(zhǔn)確率召回率和f1值進(jìn)行評(píng)估[11].此時(shí),模型訓(xùn)練的準(zhǔn)確率同SVM多分類方法比較如表4所示.
表4 不同方法性能對(duì)照表
其中,SVM方法先通過(guò)PCA方法將高維的特征向量降低到100維,對(duì)于三個(gè)類別,先將其轉(zhuǎn)換成兩個(gè)類別的分類問(wèn)題,然后采取投票的方式,確定最終的類別.算法大致如下:
1)將正類中性類負(fù)類的測(cè)試集票數(shù)都設(shè)置為0.
2)構(gòu)造正類-負(fù)類分類器如果當(dāng)前測(cè)試集數(shù)據(jù)判定的類別為正類,則正類票數(shù)加1,否則負(fù)類票數(shù)加1.
3)接著構(gòu)造正類-中性類分類器、中性類-負(fù)類分類器,按類似方式對(duì)測(cè)試的數(shù)據(jù)集進(jìn)行投票.
4)最終正類、中性類和負(fù)類中票數(shù)最多的那一類就是當(dāng)前測(cè)試數(shù)據(jù)所屬的類別.
驗(yàn)證集與測(cè)試集各自的損失函數(shù)值隨訓(xùn)練輪數(shù)變化的曲線圖如圖6所示.
圖6 驗(yàn)證集與測(cè)試集損失函數(shù)值隨訓(xùn)練輪數(shù)變化圖
隨著訓(xùn)練輪數(shù)的增加,驗(yàn)證集與測(cè)試集的準(zhǔn)確率不斷接近,沒(méi)有過(guò)擬合現(xiàn)象發(fā)生,驗(yàn)證集和測(cè)試集的準(zhǔn)確率隨著輪數(shù)的變化曲線圖如圖7所示.
圖7 驗(yàn)證集和測(cè)試集準(zhǔn)確率隨訓(xùn)練輪數(shù)變化圖
將model.compile()函數(shù)中的metrics參數(shù)的值分別修改為recall和f1,再分別定義出召回率recall、精確率precision及f1三個(gè)函數(shù),通過(guò)30個(gè)epoch的迭代計(jì)算,就可以得到驗(yàn)證集與測(cè)試集在每一輪中的召回率與f1值隨訓(xùn)練輪數(shù)的變化結(jié)果.如圖8和圖9所示.
圖8 驗(yàn)證集和測(cè)試集召回率隨訓(xùn)練輪數(shù)變化圖
圖9 驗(yàn)證集和測(cè)試集f1值隨訓(xùn)練輪數(shù)變化圖
情感分類問(wèn)題是一個(gè)在很多領(lǐng)域都很常見(jiàn)的問(wèn)題,除本文用到的評(píng)論數(shù)據(jù)外,網(wǎng)上隨處可見(jiàn)的一些新聞評(píng)論、微博評(píng)論、貼吧評(píng)論、qq空間評(píng)論,還有歌曲評(píng)論、網(wǎng)絡(luò)電影評(píng)論等,使用傳統(tǒng)的方法,比如SVM、KNN來(lái)分類,不但準(zhǔn)確率提升的幅度有限,而且需要人工提取特征向量,效率很低.
本文使用深度學(xué)習(xí)中的LSTM模型,同時(shí)結(jié)合Word2Vec工具創(chuàng)建出當(dāng)前領(lǐng)域范圍的情感詞典,然后將語(yǔ)料中的詞語(yǔ)用高維的詞向量表示,接著用一個(gè)Embedding層將詞向量嵌入到LSTM模型的隱層中,最后連上一個(gè)Softmax輸出層,這樣就建立了一個(gè)多分類的情感分類器.影響神經(jīng)網(wǎng)絡(luò)模型精度的參數(shù)非常多,本文選取了學(xué)習(xí)率、損失函數(shù)、優(yōu)化器、激活函數(shù)等為主要評(píng)價(jià)指標(biāo),分析了它們對(duì)當(dāng)前模型準(zhǔn)確率的影響,最終確定了一組最優(yōu)的參數(shù).實(shí)驗(yàn)證明,該方法能夠在一定規(guī)模的數(shù)據(jù)集上有效地解決多類別情感分類問(wèn)題!