本發(fā)明涉及自然語言處理技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)評論文本的情感傾向的識別方法及卷積神經(jīng)網(wǎng)絡(luò)模型。
背景技術(shù):
隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)用戶在各種網(wǎng)絡(luò)平臺上發(fā)布了豐富的文本信息,如服務(wù)評價(jià)和商品評論等。挖掘網(wǎng)絡(luò)用戶評論性文本中的情感特征,識別這些文本的情感傾向,在市場分析、輿情分析和信息預(yù)測等方面具有重要的應(yīng)用意義。文本情感傾向識別又稱為文本情感分析,是指對帶有情感特征的主觀性文本進(jìn)行分析、處理、歸納和推理的過程,其主要目的是將評論文本劃分為“肯定”和“否定”兩類。目前的文本情感傾向識別主要存在以下三類方法:
第一類是基于規(guī)則和詞典的方法。此類方法借助人工構(gòu)建的情感詞典,以及語言學(xué)專家提取的規(guī)則來識別文本的情感傾向。常用的情感詞典有framenet、sentiwordnet、主觀性線索詞典、褒貶義詞典等。基于規(guī)則和詞典的方法過于依賴所使用情感詞典的質(zhì)量,對于網(wǎng)絡(luò)新詞和表情符號的識別度不高。
第二類是基于機(jī)器學(xué)習(xí)的方法。此類方法需要使用機(jī)器學(xué)習(xí)分類器,通過人工選擇的語言學(xué)特征在訓(xùn)練集上進(jìn)行訓(xùn)練,然后將訓(xùn)練好的分類器用來識別文本的情感傾向。常用的分類器有樸素貝葉斯算法、最大熵模型、支持向量機(jī),常用的語言學(xué)特征有詞袋模型、詞性特征、否定詞特征等。基于機(jī)器學(xué)習(xí)的方法需要人工提取的語言學(xué)特征,需要相關(guān)語言學(xué)專家的領(lǐng)域內(nèi)知識,人工成本較高。
以上第一類和第二類方法對于網(wǎng)絡(luò)評論文本的情感傾向識別準(zhǔn)確度較低,而且系統(tǒng)的泛化性不高,遷移性較差。
第三類是基于深度學(xué)習(xí)的方法。此類方法需要使用一個多層的神經(jīng)網(wǎng)絡(luò)模型,通過在訓(xùn)練集上的訓(xùn)練自動學(xué)習(xí)出用于分類的情感特征,然后將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型用來識別文本的情感傾向。常用的神經(jīng)網(wǎng)絡(luò)模型有卷積神經(jīng)網(wǎng)絡(luò)、遞歸神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、長短時(shí)記憶網(wǎng)絡(luò)等。基于深度學(xué)習(xí)的方法識別準(zhǔn)確度較高,但受到神經(jīng)網(wǎng)絡(luò)性質(zhì)的影響,對于對抗樣本會造成錯誤分類,而且由于使用詞向量作為輸入,最終的分類效果受到詞向量質(zhì)量的影響。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的在于提供一種網(wǎng)絡(luò)評論文本的情感傾向的識別方法及卷積神經(jīng)網(wǎng)絡(luò)模型,以解決現(xiàn)有方法中對對抗樣本誤分類的技術(shù)問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種網(wǎng)絡(luò)評論文本的情感傾向的識別方法,包括以下步驟:
s1:將抓取的網(wǎng)絡(luò)評論文本中的一星評價(jià)和二星評價(jià)標(biāo)注為“否定”傾向樣本,四星評價(jià)和五星評價(jià)標(biāo)注為“肯定”傾向樣本;“否定”傾向樣本和“肯定”傾向樣本構(gòu)成數(shù)據(jù)集;
s2:使用分詞工具對數(shù)據(jù)集中的所有網(wǎng)絡(luò)評論文本進(jìn)行分詞,并進(jìn)行文本預(yù)處理;
s3:對文本預(yù)處理后的所有詞語進(jìn)行訓(xùn)練,得到所有詞語的詞向量表示;
s4:構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型在取自數(shù)據(jù)集的訓(xùn)練集上進(jìn)行訓(xùn)練,通過后向傳播算法更新網(wǎng)絡(luò)參數(shù);網(wǎng)絡(luò)參數(shù)為神經(jīng)網(wǎng)絡(luò)模型中每個神經(jīng)元的權(quán)值向量和偏置項(xiàng);
s5:在訓(xùn)練的每一步,在輸入層的詞向量上添加噪聲構(gòu)建對抗樣本,進(jìn)行對抗式訓(xùn)練,通過隨機(jī)梯度下降算法更新網(wǎng)絡(luò)參數(shù);
s6:經(jīng)過多次迭代步驟s4-s5,得到分類模型;使用分類模型識別網(wǎng)絡(luò)評論文本的情感傾向。
優(yōu)選地,步驟s1中,舍棄三星評價(jià)。
優(yōu)選地,文本預(yù)處理為:分詞、去停用詞、去低頻詞和\或糾正拼寫錯誤。
優(yōu)選地,在步驟s4中,訓(xùn)練集的選取方法包括:將數(shù)據(jù)集隨機(jī)洗牌,從中選取70%作為訓(xùn)練集;其余30%作為測試集。
優(yōu)選地,在步驟s6中,得到分類模型后,用測試集驗(yàn)證模型的分類效果。
作為一個總的發(fā)明構(gòu)思,本發(fā)明還提供了一種卷積神經(jīng)網(wǎng)絡(luò)模型,包括輸入層、卷積層、池化層和分類層:
輸入層被設(shè)置為:
給定一段文本s,其長度為|s|,
其中,
卷積層被設(shè)置為:
將輸入的多個詞向量進(jìn)行卷積,一個卷積操作可以理解為一個
cj=f(ftvj-m+1:j+b)
其中m為卷積濾波器的滑動窗口大小,vj-m+1:j表示文本中第j-m+1個詞到第j個詞所對應(yīng)的詞向量,b為偏置項(xiàng),f為修正線性單元函數(shù)(rectifiedlinearunit,relu函數(shù));
池化層用于進(jìn)行降采樣;
分類層被設(shè)置為:
將池化層得到的特征輸入,按如下公式預(yù)測分類結(jié)果:
優(yōu)選地,卷積神經(jīng)網(wǎng)絡(luò)模型,降采樣采用分段最大池化法進(jìn)行:按照每3個一段的方式把從卷積層提取的特征向量分為k段,分別取這k段中的最大值組合為最終的特征向量。
本發(fā)明具有以下有益效果:
1、本發(fā)明的網(wǎng)絡(luò)評論文本的情感傾向的識別方法,將對抗式訓(xùn)練應(yīng)用到文本處理領(lǐng)域,結(jié)合卷積神經(jīng)網(wǎng)絡(luò),通過給詞向量加噪聲的方式進(jìn)行對抗式訓(xùn)練,在更新神經(jīng)網(wǎng)絡(luò)參數(shù)的同時(shí)更新詞向量,不僅能夠正確分類訓(xùn)練集中的正常樣本,而且也提高了在處理對抗樣本時(shí)的魯棒性。同時(shí),在此過程中,詞向量也得到了更新,詞向量的質(zhì)量更好,其表意能力相比于原始詞向量更強(qiáng)。相比于現(xiàn)有的基于深度學(xué)習(xí)的文本情感傾向識別方法,本發(fā)明既提高了詞向量的質(zhì)量,也提升了分類的效果。
2、本發(fā)明的卷積神經(jīng)網(wǎng)絡(luò)模型,在池化層采用了分段取最大值的池化方法,最大程度上保留了原文本的詞序位置等信息,不僅收斂速度更快,而且分類效果更好。
除了上面所描述的目的、特征和優(yōu)點(diǎn)之外,本發(fā)明還有其它的目的、特征和優(yōu)點(diǎn)。下面將參照附圖,對本發(fā)明作進(jìn)一步詳細(xì)的說明。
附圖說明
構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是本發(fā)明優(yōu)選實(shí)施例的網(wǎng)絡(luò)評論文本的情感傾向的識別方法的流程示意圖;
圖2是本發(fā)明優(yōu)選實(shí)施例的卷積神經(jīng)網(wǎng)絡(luò)模型的結(jié)構(gòu)示意圖;
圖3是本發(fā)明優(yōu)選實(shí)施例的卷積神經(jīng)網(wǎng)絡(luò)模型收斂速度示意圖。
具體實(shí)施方式
以下結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明,但是本發(fā)明可以由權(quán)利要求限定和覆蓋的多種不同方式實(shí)施。
以下為本實(shí)施例中使用的部分名詞釋義:
詞向量:
在自然語言處理領(lǐng)域中,傳統(tǒng)的詞匯表示使用的是one-hot表示法,這種方法把每個詞都表示為一個高維稀疏向量,向量維度為整個詞表的大小,其中除了代表該詞匯的元素為1外,其余元素均為0。比如,“計(jì)算機(jī)”和“電腦”兩個詞匯,其表示如下:
計(jì)算機(jī):[0,0,0,1,0,0,…]
電腦:[0,1,0,0,0,0,…]
這種方式的缺點(diǎn)在于,不僅浪費(fèi)了大量的存儲空間,而且存在“詞匯鴻溝”現(xiàn)象,即使“計(jì)算機(jī)”和“電腦”這樣含義如此接近的詞語,從它們的向量表示中也看不出任何關(guān)系。
詞向量是詞匯的分布式表示,解決了one-hot表示法的這兩個問題。它將每個詞匯都表示成固定維度的實(shí)值向量,該維度大小一般為100或200,遠(yuǎn)小于動輒上萬的詞表大小,而且,通過計(jì)算詞向量的余弦相似度就可以近似得出詞匯的語義相近程度。
但是,詞向量也有缺點(diǎn)。由于在訓(xùn)練過程中受到文本句法結(jié)構(gòu)的影響,造成某些含義相反的詞語,因?yàn)樯舷挛牡南嗨菩?,它們的詞向量表示也具有較高的相似度,比如“good(好)”和“bad(壞)”,含義相反,但是它們的詞向量相似度很高,被判定為同義詞。
對抗樣本和對抗式訓(xùn)練:
2014年,google公司的研究人員在研究神經(jīng)網(wǎng)絡(luò)的性質(zhì)時(shí)發(fā)現(xiàn),對于一個已經(jīng)訓(xùn)練好的分類模型,將訓(xùn)練集中的樣本數(shù)據(jù)做一些微小的改變,會導(dǎo)致模型給出一個完全錯誤的分類結(jié)果,即使這些改動小到人眼都無法識別。這種相對于原樣本數(shù)據(jù)改變很小,卻會造成分類器誤分類的樣本稱為對抗樣本(adversarialexamples)。他們利用這些樣本提出了對抗式訓(xùn)練方法,分類器(分類模型)既訓(xùn)練正常的樣本,也訓(xùn)練加入噪聲人工構(gòu)造的對抗樣本,從而提高模型的泛化能力。
對抗式訓(xùn)練可以在圖像處理領(lǐng)域得到應(yīng)用,其中一個重要的原因是,在研究圖片的神經(jīng)網(wǎng)絡(luò)模型中,通常將圖片的顏色值矩陣作為輸入,其中的數(shù)據(jù)都是連續(xù)實(shí)值。而在文本領(lǐng)域,傳統(tǒng)的one-hot向量維度太高且為離散數(shù)據(jù),無法添加隨機(jī)噪聲。
參見圖1,本發(fā)明的一種網(wǎng)絡(luò)評論文本的情感傾向的識別方法,包括以下步驟:
s1:將抓取的網(wǎng)絡(luò)評論文本中的一星評價(jià)和二星評價(jià)標(biāo)注為“否定”傾向樣本,四星評價(jià)和五星評價(jià)標(biāo)注為“肯定”傾向樣本;舍棄三星評價(jià)?!胺穸ā眱A向樣本和“肯定”傾向樣本構(gòu)成數(shù)據(jù)集。
一般在實(shí)驗(yàn)中把數(shù)據(jù)集隨機(jī)洗牌,然后選取70%做訓(xùn)練集,30%做測試集(這里的訓(xùn)練集和測試集都是對卷積神經(jīng)網(wǎng)絡(luò)而言)。劃分測試集的目的是為了驗(yàn)證模型的效果。如果不需要測試集,則可直接把所有數(shù)據(jù)集都作為訓(xùn)練集。
s2:使用分詞工具對數(shù)據(jù)集中的所有網(wǎng)絡(luò)評論文本進(jìn)行分詞,并進(jìn)行文本預(yù)處理。預(yù)處理一般有以下步驟:分詞、去停用詞、去低頻詞和糾正拼寫錯誤等。分別為處理不同問題的預(yù)處理方式。情感分析時(shí)一般無需去低頻詞,而是保留低頻詞。此外,中文數(shù)據(jù)集無需檢查拼寫錯誤,英文數(shù)據(jù)集無需分詞。
s3:對文本預(yù)處理后的所有詞語進(jìn)行訓(xùn)練,得到所有詞語的詞向量表示。
詞向量的訓(xùn)練與神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練,可以使用不同的訓(xùn)練集,詞向量的訓(xùn)練甚至可以放在第一步。如有兩個數(shù)據(jù)集,a為s1中抓取的評論數(shù)據(jù)集,b為任意一個文本數(shù)據(jù)集(如新聞?wù)Z料、twitter語料等)。b一般規(guī)模較大,那么詞向量可以在b上進(jìn)行訓(xùn)練,每個詞語都得到一個詞向量表示,這份詞向量文件記為c。然后在a預(yù)處理之后,從c中查表就可以找到需要詞語所對應(yīng)的詞向量。但詞向量直接在a上訓(xùn)練也可,在情感分析任務(wù)上反而效果更好。故本發(fā)明詞向量預(yù)處理之后直接在a上進(jìn)行訓(xùn)練。
s4:構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型在取自數(shù)據(jù)集的訓(xùn)練集上進(jìn)行訓(xùn)練,通過后向傳播算法更新網(wǎng)絡(luò)參數(shù)。
后向傳播算法是神經(jīng)網(wǎng)絡(luò)模型更新參數(shù)的通用算法。神經(jīng)網(wǎng)絡(luò)模型里包含兩個步驟,前向傳播和后向傳播,前向傳播用于將輸入的x層層處理傳遞到分類層,得到一個預(yù)測標(biāo)簽y’,y’和真正的標(biāo)簽y之間有一個誤差。通過訓(xùn)練,更改網(wǎng)絡(luò)參數(shù)使得這個誤差最小。訓(xùn)練算法常采用梯度下降法,但在神經(jīng)網(wǎng)絡(luò)中,y沒有和x直接相連,中間相隔若干層,后向傳播的目的是為了將梯度往前傳遞到x,并逐層更新網(wǎng)絡(luò)參數(shù)。
網(wǎng)絡(luò)參數(shù)是指神經(jīng)網(wǎng)絡(luò)模型中每個神經(jīng)元的權(quán)值向量和偏置項(xiàng)。例如:若輸入x,輸出y,則一維線性情況下,y=kx+b,其中k為斜率,b為截距。類似的,在神經(jīng)網(wǎng)絡(luò)模型中,x是一個向量,因此這個式子變成了y=wx+b,其中w是這個神經(jīng)元的權(quán)值向量,b是它的偏置項(xiàng)。而在神經(jīng)網(wǎng)絡(luò)模型中,每一層都有多個神經(jīng)元,一般為了計(jì)算上的方便,都是采用矩陣的形式直接更新層與層之間的參數(shù)w和b(此處均為矩陣)。更新網(wǎng)絡(luò)參數(shù)就是以矩陣更新的形式更新w和b。
s5:在訓(xùn)練的每一步,在輸入層的詞向量上添加噪聲構(gòu)建對抗樣本,進(jìn)行對抗式訓(xùn)練,通過隨機(jī)梯度下降算法更新網(wǎng)絡(luò)參數(shù)。
一般地,將訓(xùn)練集中的所有樣本在神經(jīng)網(wǎng)絡(luò)模型上跑一遍叫做一次迭代,即訓(xùn)練的一步。當(dāng)訓(xùn)練集過大時(shí),可選500個或100個一批,也可稱為一次迭代或者一步,批次大小可以根據(jù)實(shí)際情況自由選取。
一步結(jié)束后,按照構(gòu)建對抗樣本的方法,針對當(dāng)前的神經(jīng)網(wǎng)絡(luò)模型構(gòu)造對抗樣本,噪聲直接加到詞向量上,然后按照對抗式訓(xùn)練方式更新網(wǎng)絡(luò)參數(shù)。
對抗樣本的構(gòu)建過程如下:
給定一個分類標(biāo)簽為y,輸入為x,參數(shù)為θ的文本分類器,對其輸入添加噪聲r(shí)adv,進(jìn)行對抗式訓(xùn)練,相當(dāng)于在其代價(jià)函數(shù)中添加下式所示項(xiàng):
-logp(y|x+radv;θ)
其中:
其中r為添加的噪聲,∈為一微小常量,用來保證每次添加的噪聲都是相對于原樣本的微小改動,
由于上式在神經(jīng)網(wǎng)絡(luò)模型上較難求解,因此通過線性近似和l2范數(shù)約束對其進(jìn)行變換,結(jié)果如下:
radv=-∈g/||g||2
這樣,由于加入噪聲,對抗式訓(xùn)練在大小為n的訓(xùn)練集上的代價(jià)函數(shù)如下式所示:
通過隨機(jī)梯度下降(stochasticgradientdescent,sgd)算法進(jìn)行訓(xùn)練,即可提高模型對對抗樣本的分類能力。然而,如果不對此過程加任何限制,在訓(xùn)練過程中,為了達(dá)到加入噪聲之后對分類結(jié)果影響不顯著的訓(xùn)練目的,該模型會把原有詞向量的數(shù)值無限擴(kuò)大,以弱化噪聲帶來的影響,這就失去了對抗樣本的意義。為了防止這一問題的出現(xiàn),在每一步訓(xùn)練之后對詞向量進(jìn)行標(biāo)準(zhǔn)化,如下式所示:
其中,fi為訓(xùn)練集中詞匯vi出現(xiàn)的頻率。
至此,詞向量得到了更新,對抗樣本構(gòu)造完成。
s6:經(jīng)過多次迭代步驟s4-s5,得到分類模型(此時(shí)可以用測試集驗(yàn)證模型的分類效果);然后使用分類模型識別網(wǎng)絡(luò)評論文本的情感傾向。
迭代的終止條件是神經(jīng)網(wǎng)絡(luò)的損失函數(shù)的值小于一定值(這個常數(shù)是人為約定的),理論上說:到達(dá)了局部最小點(diǎn)(收斂)。而對于機(jī)器學(xué)習(xí)或者深度學(xué)習(xí)模型,都有一個函數(shù)來表示預(yù)測結(jié)果與真實(shí)結(jié)果之間的誤差,這個函數(shù)可以叫做代價(jià)函數(shù)、損失函數(shù)或誤差函數(shù),訓(xùn)練的目的就是通過調(diào)整參數(shù)讓這個誤差最小。迭代次數(shù)也并非固定,當(dāng)損失函數(shù)(代價(jià)函數(shù)或誤差函數(shù)等)基本不變了就終止迭代。迭代次數(shù)幾十次到上千次不等。
參見圖2,上述方法中使用的卷積神經(jīng)網(wǎng)絡(luò)模型,包括輸入層、卷積層、池化層和分類層:
輸入層被設(shè)置為:
給定一段文本s,其長度為|s|,
其中,
卷積層被設(shè)置為:
將輸入的多個詞向量進(jìn)行卷積,一個卷積操作可以理解為一個
cj=f(ftvj-m+1:j+b)
其中m為卷積濾波器的滑動窗口大小,vj-m+1:j表示文本中第j-m+1個詞到第j個詞所對應(yīng)的詞向量,b為偏置項(xiàng),f為relu函數(shù)。
池化層用于進(jìn)行降采樣;卷積神經(jīng)網(wǎng)絡(luò)模型,降采樣使用為平均池化法進(jìn)行,如下式:
或者,使用分段最大池化法進(jìn)行降采樣。該方法的思想為,按照每3個一段的方式把從卷積層提取的特征向量分為k段,分別取這k段中的最大值組合為最終的特征向量,這樣可以最大程度保留原文本中詞序位置等信息。實(shí)驗(yàn)發(fā)現(xiàn),使用分段最大池化法可以有效提升最終的分類準(zhǔn)確率。
表1池化法與分類準(zhǔn)確率對照表
分類層被設(shè)置為:
將池化層得到的特征輸入,按如下公式預(yù)測分類結(jié)果:
本發(fā)明采用了對抗式訓(xùn)練及分段最大池化法之后,cnn模型(卷積神經(jīng)網(wǎng)絡(luò)模型)的收斂速度更快了,圖3中sst-1為五分類數(shù)據(jù)集,sst-2為二分類數(shù)據(jù)集,其中加“'”的是原cnn模型收斂曲線圖。原cnn模型在兩個數(shù)據(jù)集上,需要70-80次左右的迭代,而本發(fā)明提出的卷積神經(jīng)網(wǎng)絡(luò)模型只需要進(jìn)行50-60次迭代即可收斂,而且效果更好。
綜上可知,本發(fā)明通過用于文本情感傾向識別的神經(jīng)網(wǎng)絡(luò)模型對于對抗樣本可以正確分類,從而提升了識別的準(zhǔn)確度,解決了現(xiàn)有方法中對對抗樣本誤分類的問題。在訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型時(shí),對詞向量也進(jìn)行了更新,使得詞向量的表意能力更強(qiáng),解決了在現(xiàn)有方法使用的詞向量表示下,某些反義詞被誤判為同義詞的問題。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。