亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于并行化遞歸神經(jīng)網(wǎng)絡(luò)的中文短文本情感分類(lèi)

        2017-04-14 00:47:18王修君
        關(guān)鍵詞:情感模型

        謝 鐵 鄭 嘯 張 雷 王修君

        (安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 安徽 馬鞍山 243002)

        基于并行化遞歸神經(jīng)網(wǎng)絡(luò)的中文短文本情感分類(lèi)

        謝 鐵 鄭 嘯 張 雷 王修君

        (安徽工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 安徽 馬鞍山 243002)

        情感分析的一個(gè)重要應(yīng)用是判斷用戶對(duì)于產(chǎn)品評(píng)論的情感傾向,這些用戶評(píng)論一般都是字?jǐn)?shù)較少的短文本。傳統(tǒng)方法多利用詞袋模型獲取單詞的淺層特征來(lái)進(jìn)行情感分析,利用這些簡(jiǎn)單特征訓(xùn)練的模型在短文本,尤其是在復(fù)雜語(yǔ)法問(wèn)題上效果并不理想。通過(guò)利用深度遞歸神經(jīng)網(wǎng)絡(luò)算法來(lái)捕獲句子語(yǔ)義信息,并引入中文“情感訓(xùn)練樹(shù)庫(kù)”作為訓(xùn)練數(shù)據(jù)來(lái)發(fā)現(xiàn)詞語(yǔ)情感信息,在短文本情感五分類(lèi)的問(wèn)題上取得了較高的準(zhǔn)確率。針對(duì)復(fù)雜模型在海量數(shù)據(jù)訓(xùn)練上的時(shí)間效率問(wèn)題,通過(guò)在Spark并行框架下實(shí)現(xiàn)了模型的并行化處理,使得模型的可擴(kuò)展性和時(shí)間效率得到提升。

        深度學(xué)習(xí) 情感分析 文本分類(lèi) Spark

        0 引 言

        在自然語(yǔ)言中,除了反映客觀事實(shí)的信息之外,通常也包含著反映人類(lèi)主觀感情色彩的信息。情感分析的目的就是讓計(jì)算機(jī)通過(guò)規(guī)則或統(tǒng)計(jì)學(xué)習(xí)等手段,來(lái)標(biāo)注出人類(lèi)自然語(yǔ)言文本里表達(dá)的情感、觀點(diǎn)。

        情感分析的對(duì)象最初是篇章級(jí)的文本。隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,互聯(lián)網(wǎng)上出現(xiàn)了更多的短文本數(shù)據(jù),情感分析的研究對(duì)象也開(kāi)始轉(zhuǎn)為短文本。短文本相對(duì)于篇章級(jí)的長(zhǎng)文本而言,其提供的信息量較少,且口語(yǔ)化嚴(yán)重,提升了分析和分類(lèi)難度。在基于機(jī)器學(xué)習(xí)的情感分類(lèi)算法中,傳統(tǒng)方法主要采用了詞袋模型,詞袋模型無(wú)法適應(yīng)短文本中更加復(fù)雜的語(yǔ)言環(huán)境,其容錯(cuò)率大為降低。神經(jīng)概率語(yǔ)言模型出現(xiàn)以后,抽取詞語(yǔ)的特征并進(jìn)行向量化表示的方法得到了較大認(rèn)可。于是在短文本的情感分類(lèi)算法中,特征選取也開(kāi)始從學(xué)習(xí)數(shù)據(jù)集的統(tǒng)計(jì)特征轉(zhuǎn)向每個(gè)詞語(yǔ)的語(yǔ)義特征。Socher[1]使用的遞歸自編碼模型正是利用詞向量自底向上結(jié)合的方式,來(lái)計(jì)算一個(gè)句子的特征向量。這種語(yǔ)義合成的方式在情感分類(lèi)任務(wù)中取得了不錯(cuò)的效果,但無(wú)法準(zhǔn)確地捕獲一個(gè)詞語(yǔ)對(duì)周?chē)~語(yǔ)的影響。同時(shí),隨著以微博、社交評(píng)論為代表的短文本的大量涌現(xiàn),當(dāng)前算法也面臨了短文本大數(shù)據(jù)帶來(lái)的計(jì)算性能下降的挑戰(zhàn)。

        本文使用遞歸張量神經(jīng)網(wǎng)絡(luò)作為模型,該模型用一個(gè)張量參數(shù)捕獲詞語(yǔ)對(duì)其鄰近詞語(yǔ)的語(yǔ)義影響。為了使模型能夠運(yùn)用于中文文本,本文建立了中文情感訓(xùn)練樹(shù)庫(kù)。為了更好滿足算法對(duì)大數(shù)據(jù)處理實(shí)時(shí)性的需求,本文對(duì)該模型在Spark框架下做了并行化處理的優(yōu)化。

        1 相關(guān)工作

        情感分析目前主要有兩類(lèi)方法:基于詞典的方法和基于機(jī)器學(xué)習(xí)的方法。前者需要構(gòu)建情感詞典,通過(guò)統(tǒng)計(jì)文本中情感詞的條目來(lái)計(jì)算情感傾向,其局限性在于無(wú)法解決未登錄詞問(wèn)題。Pang[2]較早運(yùn)用機(jī)器學(xué)習(xí)方法處理情感分類(lèi)任務(wù),通過(guò)n元模型(n-gram)作為特征,再運(yùn)用樸素貝葉斯、最大熵分類(lèi)器、支持向量機(jī)進(jìn)行分類(lèi),取得了較好的效果。隨后研究者開(kāi)始嘗試各種方法進(jìn)行情感分析任務(wù):Mulle[3]把傳統(tǒng)的特征與句法關(guān)系相結(jié)合。之后Kennedy[4]把上下文語(yǔ)境和情感傾向性轉(zhuǎn)移考慮到特征選擇中。但以上方法本質(zhì)上還是基于詞袋模型,詞袋模型其忽視語(yǔ)序的特點(diǎn)導(dǎo)致某些情形下的分類(lèi)效果很差。比如,像這樣兩個(gè)句子:“這部電影優(yōu)點(diǎn)大于缺點(diǎn)”和“這部電影缺點(diǎn)大于優(yōu)點(diǎn)”,對(duì)于詞袋模型來(lái)說(shuō),這兩個(gè)句子具有相同的詞袋模型的向量表示,意味著在詞袋模型中,這兩個(gè)句子處理結(jié)果是一樣的。然而,事實(shí)上,這兩個(gè)句子表達(dá)的觀點(diǎn)截然相反。Nakagawa[5]運(yùn)用加依存樹(shù)的條件隨機(jī)場(chǎng)模型(CRF)對(duì)詞袋模型進(jìn)行改進(jìn),該模型可以適用于一些情感極性轉(zhuǎn)移的情況。但一方面該方法需要大量人工構(gòu)建的語(yǔ)料,另一方面以上方法在建模過(guò)程中使用的函數(shù)簡(jiǎn)單,特征的選取也較為簡(jiǎn)單,導(dǎo)致其對(duì)復(fù)雜語(yǔ)句的表達(dá)能力有限。

        中文文本的情感分析基本沿用英文情感分析的方法。如Zhao[6]等人在CRF的基礎(chǔ)上加入“冗余特征”來(lái)進(jìn)行情感分析。李壽山等人[7]認(rèn)為不同領(lǐng)域需要選擇不同的分類(lèi)方法,因此他采用一種基于Stacking的組合分類(lèi)方法用以組合不同的分類(lèi)。謝麗星[8]等人使用了三種不同的方法,包括表情符號(hào)規(guī)則方法,情感詞典規(guī)則方法,基于SVM的層次結(jié)構(gòu)多策略方法,進(jìn)行情感分析,并指出基于SVM的層次結(jié)構(gòu)多策略方法效果最好。目前針對(duì)中文的情感分析的研究進(jìn)展相對(duì)英文的情感分析有所滯后,主要在于中文情感分析存在以下難題。(1) 中文需要分詞,分詞錯(cuò)誤會(huì)對(duì)情感分析產(chǎn)生影響。(2) 由于中文一詞多義現(xiàn)象繁多,給中文情感詞典的構(gòu)建造成了難度。如“水分”,一般認(rèn)為是物理意義上的水,為中性詞。引申義為夾雜著不真實(shí)的成分,為貶義詞。(3) 中文環(huán)境下,尤其是語(yǔ)言較為隨意的網(wǎng)絡(luò)上,“反諷”的用法較多。這給情感分析造成很大困難。

        上述方法多采用語(yǔ)言的淺層特征,如詞頻,這難以應(yīng)對(duì)短文本復(fù)雜的語(yǔ)法環(huán)境。因此情感分析任務(wù)開(kāi)始從這些淺層特征,轉(zhuǎn)向更加抽象的高層特征,如語(yǔ)義。使用深度學(xué)習(xí)可以通過(guò)一種深層的非線性網(wǎng)絡(luò)結(jié)構(gòu)來(lái)實(shí)現(xiàn)復(fù)雜函數(shù)的逼近,從而捕獲數(shù)據(jù)的本質(zhì)特征。深度學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)本質(zhì)是一個(gè)多層神經(jīng)網(wǎng)絡(luò)[9]。Bengio[10]提出神經(jīng)概率語(yǔ)言模型,使用二元語(yǔ)言模型把單詞映射為一組向量,這種詞向量可以抽象出單詞的語(yǔ)義特征,這為后面深度學(xué)習(xí)算法在自然語(yǔ)言處理領(lǐng)域里的應(yīng)用奠定了基礎(chǔ)。此后,Socher[11]認(rèn)為,文本跟圖像一樣也具有類(lèi)似的樹(shù)形遞歸結(jié)構(gòu),在進(jìn)行單詞的組合時(shí),往往不是按照單詞的順序組合,而是先組合語(yǔ)法或語(yǔ)義相近的單詞或者短語(yǔ)。這樣一個(gè)句子的每個(gè)單詞作為一個(gè)節(jié)點(diǎn)按照相應(yīng)的語(yǔ)法規(guī)則可以自底向上結(jié)合為一個(gè)樹(shù)形結(jié)構(gòu)。由于一個(gè)詞可以映射為一個(gè)詞向量,因此按照這種樹(shù)形結(jié)合以后,樹(shù)的根節(jié)點(diǎn)則代表著整個(gè)文本的向量。隨后,Socher[1]就利用該方法提出遞歸自編碼器模型RAE(RecursiveAutoEncoder) 應(yīng)用于情感分類(lèi)任務(wù)。但是RAE模型無(wú)法完全捕捉復(fù)雜句子結(jié)構(gòu)下長(zhǎng)短語(yǔ)的合成語(yǔ)義[12],于是在矩陣向量神經(jīng)網(wǎng)絡(luò)模型(Matrix-VectorRNN)[12]中,在沿用RAE模型中向量的同時(shí)為每個(gè)節(jié)點(diǎn)賦予一個(gè)矩陣。向量描述的是該詞語(yǔ)本身的含義,矩陣則用于描述該詞語(yǔ)是如何改變其相鄰詞語(yǔ)或短句的含義。但MV-RNN的問(wèn)題在于,參數(shù)太多,而且參數(shù)規(guī)模依賴于詞表大小,這將會(huì)導(dǎo)致計(jì)算量非常大,學(xué)習(xí)也會(huì)不夠充分。遞歸張量神經(jīng)網(wǎng)絡(luò)RNTN(RecursiveNeuralTensorNetwork)[13]解決了這一問(wèn)題,但該模型依賴于特殊的數(shù)據(jù)集——情感樹(shù)庫(kù)。如果要在中文文本分析中運(yùn)用此模型,需要建立一套中文情感訓(xùn)練樹(shù)庫(kù)。

        2 基于遞歸神經(jīng)網(wǎng)絡(luò)的情感分類(lèi)模型

        基于遞歸神經(jīng)網(wǎng)絡(luò)的情感分類(lèi)模型的核心思想是通過(guò)葉子節(jié)點(diǎn)(單詞)自底向上計(jì)算父節(jié)點(diǎn)而得到的句子向量來(lái)進(jìn)行情感分類(lèi)。圖1展示了這一過(guò)程,當(dāng)輸入一個(gè)句子時(shí),它把該句子解析為一棵二叉樹(shù),每個(gè)葉子節(jié)點(diǎn)是一個(gè)詞,并以向量表示。接著自底向上計(jì)算每個(gè)葉子節(jié)點(diǎn)的父節(jié)點(diǎn)的向量。父節(jié)點(diǎn)同樣也將作為下次的輸入接著向上計(jì)算父節(jié)點(diǎn)的向量,直到計(jì)算到頂點(diǎn)為止。

        圖1 節(jié)點(diǎn)利用f函數(shù)來(lái)自底向上的合成父節(jié)點(diǎn)向量,通過(guò)softmax函數(shù)來(lái)預(yù)測(cè)情感

        圖1中每個(gè)單詞是一個(gè)d維的向量,并進(jìn)行隨機(jī)初始化。所有的向量存于一個(gè)矩陣L。其中L∈Rd×|V|, |V|是數(shù)據(jù)集中所有詞語(yǔ)的個(gè)數(shù),即詞表的大小。

        每個(gè)節(jié)點(diǎn)還包含一個(gè)softmax分類(lèi)器:

        ya=softmax(Wsa)

        (1)

        其中,WS∈Rk×d(k是情感標(biāo)簽的數(shù)量)。a表示節(jié)點(diǎn)的向量。

        不同遞歸神經(jīng)網(wǎng)絡(luò)模型最大的區(qū)別在于模型的組合函數(shù)f可以根據(jù)應(yīng)用需求來(lái)定義。正如前面所說(shuō),遞歸張量神經(jīng)網(wǎng)絡(luò)模型(RNTN)既要捕獲單詞組合時(shí)的組合含義,又要保證參數(shù)的數(shù)目不能過(guò)多。因此,在遞歸張量神經(jīng)網(wǎng)絡(luò)模型中,使用張量來(lái)表示組合參數(shù),所有節(jié)點(diǎn)共用一套張量參數(shù)。這樣通過(guò)張量進(jìn)行坐標(biāo)變換使得某些分量可以依照某些規(guī)則作線性變換,來(lái)降低整體的參數(shù)數(shù)量。因此組合函數(shù)為:

        p=f([c1;c2]TV[1:d][c1;c2]+w[c1;c2])

        (2)

        其中,V[1:d]∈R2d×2d×d是張量參數(shù)。

        實(shí)際上RNN模型可視為RNTN模型在張量V為0時(shí)的特例。在這種情況下V不會(huì)對(duì)輸入的詞向量造成任何影響。反過(guò)來(lái),當(dāng)V不為0時(shí),V顯然會(huì)改變?cè)~向量的特征。在充分訓(xùn)練以后,可視為張量V捕獲了語(yǔ)義合成時(shí)的信息。

        模型的任務(wù)是最大化正確預(yù)測(cè)情感標(biāo)簽的概率,也就是最小化每個(gè)節(jié)點(diǎn)的預(yù)測(cè)值yi∈Rc×1與目標(biāo)值ti∈Rc×1的交叉熵(C表示類(lèi)別的數(shù)目)。

        RNTN模型使用如下交叉熵函數(shù):

        (3)

        其中j表示第j個(gè)節(jié)點(diǎn)。θ表示RNTN模型參數(shù),θ=(V,W,WS,L)。

        由于softmax分類(lèi)中對(duì)權(quán)重WS求導(dǎo)具有一般性,僅僅是簡(jiǎn)單地把各個(gè)節(jié)點(diǎn)的誤差相加而得到。因此定義xi作為節(jié)點(diǎn)的一個(gè)向量。忽略權(quán)重WS的微分表達(dá)式。每一個(gè)節(jié)點(diǎn)都是通過(guò)權(quán)重V,W遞歸反向傳導(dǎo)修正其誤差。定義δi,s∈Rd×1為節(jié)點(diǎn)i本身的softmax誤差:

        δi,s=(WS(yi-ti))?f′(xi)

        (4)

        其中?是哈達(dá)姆算子。取tanh(),f′是其導(dǎo)數(shù)。某一節(jié)點(diǎn)的求導(dǎo)必須是通過(guò)樹(shù)的自頂向下的計(jì)算過(guò)程來(lái)完成。參數(shù)W,V的完整求導(dǎo)過(guò)程是各個(gè)非葉子節(jié)點(diǎn)導(dǎo)數(shù)的總和。下面舉例來(lái)說(shuō)明這一問(wèn)題。對(duì)于節(jié)點(diǎn)i,將這個(gè)節(jié)點(diǎn)反饋的誤差定義為δi,com。顯然,對(duì)于頂點(diǎn)p2來(lái)說(shuō),它只接收來(lái)自自己的softmax誤差。因此δp2,com=δp2,s。δp2,com可用于計(jì)算對(duì)V的求導(dǎo):

        (5)

        δp2,down=(WTδp2,com+S)?f′([a;p1])

        (6)

        其中定義:

        (7)

        上述中p1節(jié)點(diǎn)的反饋誤差等于該節(jié)點(diǎn)本身誤差加上p2節(jié)點(diǎn)向下傳給p1節(jié)點(diǎn)的誤差δp2,down。其中δp2,down分為兩個(gè)部分,δp2,down[1:d]和δp2,down[1+d:2d],前者傳給左孩子a,后者傳給右孩子p1,因此p1的誤差為:

        δp2,com=δp1,s+δp2,down[1+d:2d]

        (8)

        V[k]完整的導(dǎo)數(shù)計(jì)算過(guò)程就是每個(gè)非葉子節(jié)點(diǎn)的導(dǎo)數(shù)相加,公式如下:

        (9)

        對(duì)W的求導(dǎo)方式也是類(lèi)似的,不再贅述。

        RNTN模型的訓(xùn)練是通過(guò)最小化交叉熵函數(shù)來(lái)實(shí)現(xiàn)的,通過(guò)對(duì)上述參數(shù)求導(dǎo)不難實(shí)現(xiàn)梯度下降算法尋找函數(shù)的最優(yōu)值。但傳統(tǒng)的隨機(jī)梯度下降(SGD)算法本質(zhì)上是順序性的,這種完全串行都得方式使得參數(shù)更新非常耗時(shí),也因此模型的并行較為困難。

        考慮到模型參數(shù)更新過(guò)程的獨(dú)立性,本文對(duì)RNTN模型做如下修改:(1) 將參數(shù)更新部分從RNTN模型中提出,單獨(dú)置于參數(shù)服務(wù)器上運(yùn)行,參數(shù)服務(wù)器由一個(gè)或多個(gè)節(jié)點(diǎn)組成。(2) 將訓(xùn)練集劃分多個(gè)子集,并對(duì)每個(gè)子集運(yùn)行一個(gè)單獨(dú)的RNTN模型。(3) 每個(gè)模型副本計(jì)算出參數(shù)的最優(yōu)值后,與參數(shù)服務(wù)器交換參數(shù),并獲得參數(shù)服務(wù)器提供的最新參數(shù)進(jìn)行迭代更新,而參數(shù)服務(wù)器對(duì)不同的節(jié)點(diǎn)傳來(lái)的參數(shù)進(jìn)行求平均以更新參數(shù)。

        3 中文情感訓(xùn)練樹(shù)庫(kù)的構(gòu)建

        由于模型非常依賴于情感樹(shù)庫(kù),語(yǔ)言之間的語(yǔ)法差異使得樹(shù)庫(kù)無(wú)法跨語(yǔ)言,因此這也給模型的跨語(yǔ)言問(wèn)題上增加的難度。目前中文環(huán)境下并沒(méi)有標(biāo)注好的情感樹(shù)庫(kù),因此本文為了使RNTN模型能夠適用于中文環(huán)境建立了一套情感訓(xùn)練樹(shù)庫(kù)。

        本文利用python爬蟲(chóng)在大眾點(diǎn)評(píng)網(wǎng)對(duì)某一餐飲業(yè)的評(píng)論數(shù)據(jù)進(jìn)行爬取。共收集了11 256條數(shù)據(jù)。首先需要對(duì)這些數(shù)據(jù)去除HTML標(biāo)簽以及去除標(biāo)點(diǎn)符號(hào),然后人工去除與評(píng)價(jià)內(nèi)容無(wú)關(guān)的評(píng)論數(shù)據(jù)。接下來(lái)使用分詞軟件進(jìn)行分詞處理,本文采用了python下的開(kāi)源分詞工具Jieba分詞。構(gòu)建語(yǔ)法樹(shù)的過(guò)程同樣基于上述的遞歸神經(jīng)網(wǎng)絡(luò)模型,但去掉softmax層。為了增加訓(xùn)練結(jié)果中樹(shù)結(jié)構(gòu)的可靠性,可以在一個(gè)更大規(guī)模的語(yǔ)料中進(jìn)行訓(xùn)練。在得到語(yǔ)法分析樹(shù)后,利用本文建立的標(biāo)注系統(tǒng)對(duì)樹(shù)的每個(gè)節(jié)點(diǎn)人工進(jìn)行情感標(biāo)注,這樣生成一套含有11 256棵標(biāo)注好情感的語(yǔ)法樹(shù)庫(kù),即情感訓(xùn)練樹(shù)庫(kù)。

        考慮到普通兩類(lèi)(褒貶義)或者三類(lèi)(褒貶意加中性)情感劃分無(wú)法準(zhǔn)確把握句子情感,比如“喜歡”和“非常喜歡”的區(qū)別,或“不是特別滿意”和“特別不滿意”的區(qū)別。此外由于非常極端的情感出現(xiàn)率很低,一般情況下五類(lèi)足以覆蓋用戶的情感觀點(diǎn),過(guò)多的情感分類(lèi)也會(huì)提升模型訓(xùn)練的難度。綜合以上,本文選擇五類(lèi)情感劃分——分別為非常消極、消極、中性、積極、非常積極五類(lèi)。

        RNTN模型一方面需要靠情感訓(xùn)練樹(shù)庫(kù)來(lái)決定節(jié)點(diǎn)合成順序,另一方面,通過(guò)節(jié)點(diǎn)標(biāo)簽的變化來(lái)捕獲句子情感極性的轉(zhuǎn)移。如圖2所示,模型的輸入值是一棵每個(gè)節(jié)點(diǎn)都被標(biāo)記了情感標(biāo)簽的句法分析樹(shù)。

        圖2 “味道很好”這個(gè)句子組成的一棵情感訓(xùn)練樹(shù)

        模型首先會(huì)通過(guò)一個(gè)映射層把每個(gè)單詞賦予一個(gè)向量,向量通過(guò)softmax層,自底向上地根據(jù)語(yǔ)法樹(shù)的合成順序來(lái)計(jì)算出情感極性。在圖2中,注意到“好”字被標(biāo)記為積極類(lèi)情感,在與“很”字結(jié)合以后,它們的父節(jié)點(diǎn)被標(biāo)記為非常積極類(lèi)的情感。通過(guò)這種極性的變化,來(lái)對(duì)向量和張量的值進(jìn)行調(diào)優(yōu),使其捕獲到這種類(lèi)型的語(yǔ)義變化。

        4 基于Spark的并行化RNTN模型

        RNTN模型涉及到大量迭代操作,因此本文選擇基于內(nèi)存計(jì)算的Spark云計(jì)算平臺(tái)進(jìn)行并行化處理。如第2節(jié)所述,算法訓(xùn)練的迭代過(guò)程主要集中在梯度下降算法更新參數(shù)部分,通過(guò)對(duì)這種串行方式的改進(jìn),并行化的基本操作主要是將數(shù)據(jù)集劃分為若干分片,并在每個(gè)分片上運(yùn)行一個(gè)單獨(dú)的模型副本,模型副本之間的通信均需要通過(guò)參數(shù)服務(wù)器,該服務(wù)器用于維護(hù)各模型副本的參數(shù)狀態(tài)。但是,傳統(tǒng)的并行方式通常是同步模式,比如Spark的Mllib庫(kù)以及Mahout。這一做法的缺點(diǎn)在于參數(shù)服務(wù)器總要等待所有節(jié)點(diǎn)提交完參數(shù)誤差以后,再統(tǒng)一進(jìn)行參數(shù)的更新。由于不同節(jié)點(diǎn)上的處理時(shí)間不同,這樣會(huì)導(dǎo)致已經(jīng)計(jì)算完畢的節(jié)點(diǎn)需要等待其他未完成本輪計(jì)算的節(jié)點(diǎn)。而本模型由于計(jì)算過(guò)程相對(duì)獨(dú)立,計(jì)算結(jié)果并不依賴于其他模型副本的計(jì)算結(jié)果,因此最佳方式是異步模式,即:在參數(shù)服務(wù)器上一旦有節(jié)點(diǎn)提交參數(shù),立即更新本地參數(shù),并分配新的參數(shù)給該節(jié)點(diǎn),無(wú)需等待其他節(jié)點(diǎn)計(jì)算完畢。在這個(gè)過(guò)程中一個(gè)模型副本產(chǎn)生的最新結(jié)果不會(huì)立刻體現(xiàn)在其他模型副本中,直到他們進(jìn)行下次參數(shù)交換。參數(shù)服務(wù)器也可以是由多個(gè)節(jié)點(diǎn)組成,這時(shí)每個(gè)參數(shù)服務(wù)器只與和自己通信的計(jì)算節(jié)點(diǎn)交換參數(shù)。如圖3所示。

        圖3 異步模式的并行方式

        由于異步模式的一個(gè)特點(diǎn)是計(jì)算節(jié)點(diǎn)與參數(shù)服務(wù)器交換完參數(shù)需要進(jìn)行下一輪迭代,因此必須把數(shù)據(jù)集切分成若干子集,一方面如果參數(shù)服務(wù)器是由多臺(tái)計(jì)算機(jī)組成的,可以分配給不同的參數(shù)服務(wù)器,另一方面把大數(shù)據(jù)集切分成多個(gè)小批量的數(shù)據(jù)集以便在計(jì)算節(jié)點(diǎn)完成計(jì)算后多次迭代。需要指出的是,這里和Spark的parallelize函數(shù)進(jìn)行數(shù)據(jù)切分的目的不同。如果直接使用parallelize函數(shù)把數(shù)據(jù)切分為計(jì)算節(jié)點(diǎn)數(shù)量對(duì)應(yīng)的份數(shù)并分配給計(jì)算節(jié)點(diǎn),這樣整個(gè)模型計(jì)算完成仍然需要等待最后一個(gè)計(jì)算節(jié)點(diǎn)完成計(jì)算,就談不上異步模式了。因此異步模式的一個(gè)前提就是需要把數(shù)據(jù)切分為非常多個(gè)小的子集,然后進(jìn)行多次迭代實(shí)現(xiàn)。

        在Spark環(huán)境下進(jìn)行異步模式的另外一個(gè)難點(diǎn)在于,Spark提供的函數(shù)是基于同步并行模式的,那么參數(shù)服務(wù)器在迭代過(guò)程中,必須等待計(jì)算節(jié)點(diǎn)計(jì)算完成才會(huì)進(jìn)行下一輪迭代。所以為了實(shí)現(xiàn)異步模式,需要一些改進(jìn)。例如:在通常做法中,Spark通過(guò)mappatations方法把某個(gè)計(jì)算過(guò)程廣播到計(jì)算節(jié)點(diǎn),然后對(duì)分配給節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行一系列的計(jì)算,得到結(jié)果后進(jìn)行下一輪迭代,這和同步模式無(wú)異。因此,如果進(jìn)行異步模式,不能直接廣播計(jì)算過(guò)程。本文對(duì)其修改如下:mappatations傳給計(jì)算節(jié)點(diǎn)的函數(shù)作用是用于向參數(shù)服務(wù)器發(fā)出url請(qǐng)求,當(dāng)參數(shù)服務(wù)器接收到請(qǐng)求會(huì)返回給該節(jié)點(diǎn)一個(gè)模型的副本。計(jì)算節(jié)點(diǎn)拿到模型副本完成計(jì)算后再向參數(shù)服務(wù)器post出自己的計(jì)算結(jié)果。這樣,只要mappatations能夠成功把該函數(shù)分配給某一計(jì)算節(jié)點(diǎn)就完成此次迭代,而無(wú)需等待計(jì)算節(jié)點(diǎn)反饋結(jié)果。

        由上分析可知,對(duì)RNTN模型并行化的一般步驟如下:首先在參數(shù)服務(wù)器上需要對(duì)數(shù)據(jù)切分成若干子集。每次迭代分配給計(jì)算節(jié)點(diǎn)一個(gè)子集。同時(shí),參數(shù)服務(wù)器上定義gradient函數(shù)和descent函數(shù)。前者用于運(yùn)行模型的梯度下降過(guò)程,該函數(shù)會(huì)在計(jì)算節(jié)點(diǎn)請(qǐng)求模型副本時(shí)發(fā)送給計(jì)算節(jié)點(diǎn)執(zhí)行。后者運(yùn)行于參數(shù)服務(wù)器用于在計(jì)算節(jié)點(diǎn)返回梯度時(shí)更新參數(shù)。在計(jì)算節(jié)點(diǎn)處理每個(gè)分片之前,都會(huì)向參數(shù)服務(wù)器請(qǐng)求最新的模型副本(包含最新參數(shù)的模型副本),在計(jì)算節(jié)點(diǎn)收到模型副本后會(huì)執(zhí)行descent函數(shù),運(yùn)行梯度下降過(guò)程。該過(guò)程執(zhí)行完畢會(huì)向參數(shù)服務(wù)器發(fā)送梯度,此時(shí)參數(shù)服務(wù)器更新參數(shù),等待計(jì)算節(jié)點(diǎn)發(fā)出下一輪請(qǐng)求。

        下面的算法偽代碼中,getModel()的作用是向參數(shù)服務(wù)器請(qǐng)求一個(gè)模型的副本。sendGradient()的作用是把誤差返回給參數(shù)服務(wù)器。decent()是在參數(shù)服務(wù)器上更新參數(shù)。gradent()主要是在計(jì)算節(jié)點(diǎn)運(yùn)行模型副本,更新參數(shù)。SparkRNTN()是并行化RNTN的主函數(shù)。

        算法1getModel,向服務(wù)器請(qǐng)求最新的模型副本

        input:ParamServerIP

        //參數(shù)服務(wù)器的IP地址

        output:model

        //model為包含了最新參數(shù)的RNTN模型副本

        getModel(ParamserverIP)

        model = getModelFormParamserver(ParamserverIP)

        return model

        算法2 計(jì)算節(jié)點(diǎn)向參數(shù)服務(wù)器返回參數(shù)誤差

        input: ParamserverIP,update

        //update為參數(shù)誤差

        sendGradient(update.ParamserverIP)

        sendGradientToParamserver(update,ParamserverIP)

        算法3 descent,更新參數(shù)服務(wù)器上的參數(shù)

        input:model,update

        descent(model,update)

        model.paramater += update*α

        算法4 在計(jì)算節(jié)點(diǎn)訓(xùn)練模型

        input:model,data

        output:update

        gradient(model,data)

        update = model.train(data)

        return update

        算法5 程序的主函數(shù)

        input:trees

        //輸入數(shù)據(jù)為情感語(yǔ)法樹(shù)的括號(hào)表示形式

        SparkRNTN (trees)

        sc = SparkContext()

        for i=0 to 數(shù)據(jù)集總和 step = minibatch

        data = sc.parallelize(trees[i:i+minibatch])

        //把sendGradient、gradient、getModel發(fā)送到計(jì)算節(jié)點(diǎn)執(zhí)行

        rdd.mapPartitions(sendGradient(gradient(getModel(ParamserverIP), data),ParamserverIP )).collect()

        while true:

        if 有節(jié)點(diǎn)發(fā)出更新參數(shù)的請(qǐng)求:

        update = 獲取計(jì)算節(jié)點(diǎn)post來(lái)的參數(shù)誤差

        descent (model,update)

        //在本地更新模型參數(shù)

        if 有節(jié)點(diǎn)請(qǐng)求模型:

        將最新的model發(fā)送給計(jì)算節(jié)點(diǎn)

        return model

        5 實(shí) 驗(yàn)

        本文設(shè)計(jì)兩套不同的實(shí)驗(yàn)。第一個(gè)實(shí)驗(yàn)是驗(yàn)證模型在中文數(shù)據(jù)下的準(zhǔn)確性。第二個(gè)實(shí)驗(yàn)主要是驗(yàn)證并行RNTN模型的性能。在實(shí)驗(yàn)1中,所用數(shù)據(jù)為11 256條美團(tuán)網(wǎng)上用戶對(duì)新石器燒烤店的評(píng)論數(shù)據(jù)。實(shí)驗(yàn)2在Spark云平臺(tái)環(huán)境中進(jìn)行,所用環(huán)境配置為:4臺(tái)CPU2.8 GHz、8 GB內(nèi)存的臺(tái)式機(jī)作為計(jì)算節(jié)點(diǎn),1臺(tái)CPU2.2 GHz,內(nèi)存8 GB的臺(tái)式機(jī)作為參數(shù)服務(wù)器,Spark版本為2.4.1,python版本2.7.3。

        5.1 RNTN模型在中文語(yǔ)言環(huán)境下的應(yīng)用

        首先對(duì)每條數(shù)據(jù)經(jīng)過(guò)如下處理:去重,去標(biāo)點(diǎn),分詞,構(gòu)建語(yǔ)法樹(shù)。其中語(yǔ)法樹(shù)結(jié)構(gòu)用樹(shù)的括號(hào)形式表示,并對(duì)每個(gè)節(jié)點(diǎn)從非常消極到非常積極用1到5之間的數(shù)字進(jìn)行標(biāo)記。整理后的數(shù)據(jù)如表1所示。

        表1 情感樹(shù)的括號(hào)表示形式

        為驗(yàn)證RNTN模型在中文環(huán)境各類(lèi)復(fù)雜句式下的情感分類(lèi)準(zhǔn)確率,本文針對(duì)轉(zhuǎn)折句式、否定句式和一般句式幾種不同句式分別做了實(shí)驗(yàn)。其中采用的典型轉(zhuǎn)折句式251條,否定句式198條,一般句式11 256條。

        從表2可以看出:首先,單純的word2vec模型能夠捕獲語(yǔ)義信息但無(wú)法捕獲情感信息,因此在三類(lèi)測(cè)試中的準(zhǔn)確率均較低。其次,由于詞袋模型忽略語(yǔ)序,無(wú)法分辨哪個(gè)情感詞在轉(zhuǎn)折之前哪個(gè)之后,也就無(wú)法區(qū)分情感往哪一方偏移,在否定句式中也只是記錄否定詞出現(xiàn)的次數(shù),因此誤差也較大。RAE在使用語(yǔ)義做特征的基礎(chǔ)上捕獲情感信息,相對(duì)其他模型有一定的優(yōu)勢(shì)。而RNTN模型由于加入情感樹(shù)庫(kù)作為訓(xùn)練集,節(jié)點(diǎn)上的標(biāo)簽?zāi)軌蚍浅G宄刂甘厩楦修D(zhuǎn)移或否定現(xiàn)象,加之張量對(duì)某些修飾詞語(yǔ)的捕獲,因此獲得了最高的準(zhǔn)確率。同時(shí)也驗(yàn)證了引入了中文情感樹(shù)庫(kù)的RNTN模型能夠很好地應(yīng)用于中文語(yǔ)言環(huán)境。

        表2 情感5分類(lèi)的準(zhǔn)確率

        5.2 RNTN模型在Spark云平臺(tái)的并行效果

        為了衡量RNTN模型在并行優(yōu)化后的性能,使用如下指標(biāo)[17]:

        (1) Scaleup:度量不同處理器規(guī)模下,處理不同規(guī)模數(shù)據(jù)的性能。該指標(biāo)計(jì)算式為:

        (10)

        其中runTime(n×Data,m)表示模型在m個(gè)計(jì)算節(jié)點(diǎn)上處理n份數(shù)據(jù)的時(shí)間,下同。

        (2)Sizeup:度量了在平臺(tái)固定的情況下,依次增加數(shù)據(jù)量時(shí)算法的性能。該指標(biāo)計(jì)算式為:

        (11)

        (3)Speedup:度量了在數(shù)據(jù)規(guī)模相同下,并行計(jì)算比串行計(jì)算運(yùn)算速度加快的程度。該指標(biāo)計(jì)算式為:

        (12)

        首先是Scaleup,分別在1臺(tái)至4臺(tái)機(jī)器上處理一份完整的數(shù)據(jù),所得到的Scaleup性能如4圖所示。

        圖4 Scaleup的性能展示

        從圖4中可以看出,隨著節(jié)點(diǎn)的規(guī)模增大,所得到的Scaleup曲線趨于穩(wěn)定,顯示出了很好的擴(kuò)展性。此外數(shù)據(jù)量規(guī)模變大,節(jié)點(diǎn)擴(kuò)展性變高,這是因?yàn)閿?shù)據(jù)量越大越能較好利用節(jié)點(diǎn)的計(jì)算能力。

        為驗(yàn)證Sizeup的性能,本文分別考慮1至4臺(tái)計(jì)算節(jié)點(diǎn)分別在10倍、20倍和40倍的原始數(shù)據(jù)集上運(yùn)行的結(jié)果。

        從圖5可以看出,除了增加節(jié)點(diǎn)性能會(huì)得到提升外。數(shù)據(jù)規(guī)模的增大,也會(huì)導(dǎo)致性能的明顯增大,這是因?yàn)殡S著數(shù)據(jù)規(guī)模增大,節(jié)點(diǎn)通信的時(shí)間在整個(gè)算法的運(yùn)行時(shí)間的比例會(huì)減小。因此獲得了較好的Sizeup性能。

        圖5 Sizeup的性能展示

        在驗(yàn)證Speedup性能的實(shí)驗(yàn)中,使用與驗(yàn)證Sizeup性能一樣的實(shí)驗(yàn)環(huán)境。如圖6所示。

        圖6 Speedup的性能展示

        可以發(fā)現(xiàn)圖6中隨著節(jié)點(diǎn)數(shù)目變多,線性加速比下降。原因在于節(jié)點(diǎn)數(shù)增加會(huì)增加節(jié)點(diǎn)的通信時(shí)間。另外在規(guī)模越大的數(shù)據(jù)集上,模型的線性加速比效果越好。因此并行算法可以有效地應(yīng)對(duì)大數(shù)據(jù)集。

        6 結(jié) 語(yǔ)

        本文主要工作一是通過(guò)構(gòu)建一套中文情感訓(xùn)練樹(shù)庫(kù)并引入遞歸張量神經(jīng)網(wǎng)絡(luò)模型進(jìn)行了中文環(huán)境下的5分類(lèi)短文本情感識(shí)別,取得了較好的效果。二是對(duì)遞歸張量神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)了并行化處理,通過(guò)實(shí)驗(yàn)證明,該并行化的模型有良好的并行性能。

        但是并行化的RNTN模型依然有很多問(wèn)題需要解決。主要在:(1) 在較長(zhǎng)文本中,句子的樹(shù)形結(jié)構(gòu)會(huì)非常壯大,導(dǎo)致性能下降,而且節(jié)點(diǎn)越多,實(shí)際上干擾信息也就越多。因此下一步工作解決句子節(jié)點(diǎn)過(guò)多對(duì)模型產(chǎn)生的負(fù)影響。(2) 在并行化過(guò)程中,本文對(duì)Spark異步模式改進(jìn)只是通過(guò)建立一個(gè)Web服務(wù)器在計(jì)算節(jié)點(diǎn)完成任務(wù)之后以Http通信方式來(lái)代替Spark內(nèi)部的通信,更好的方式顯然是針對(duì)Spark的內(nèi)部通信機(jī)制加以改進(jìn),未來(lái)將會(huì)在這方面進(jìn)行研究。

        [1]SocherR,PenningtonJ,HuangEH,etal.Semi-SupervisedRecursiveAutoencodersforPredictingSentimentDistributions[C]//ProceedingsoftheConferenceonEmpiricalMethodsinNaturalLanguageProcessing.AssociationforComputationalLinguistics,2011:151-161.

        [2]PangB,LeeL,VaithyanathanS.Thumbsup?SentimentClassificationusingMachineLearningTechniques[C]//ProceedingsofEMNLP-2002,2002:79-86.

        [3]Mullen,Tony,NigelCollier.Sentimentanalysisusingsupportvectormachineswithdiverseinformationsources[C]//ProceedingsofEMNLP-2004,2004:412-418.

        [4]Kennedy,Alistair,DianaInkpen.Sentimentclassificationofmoviereviewsusingcontextualvalenceshifters[J].ComputationalIntelligence,2006,22(2):110-125.

        [5]NakagawaT,InuiK,KurohashiS.DependencyTree-basedSentimentClassificationusingCRFswithHiddenVariables[C]//HumanLanguageTechnologies:The2010AnnualConferenceoftheNorthAmericanChapteroftheAssociationforComputationalLinguistics.AssociationforComputationalLinguistics,2010:786-794.

        [6]ZhaoJun,LiuKang,WangGen.AddingRedundantFeaturesforCRFs-basedSentenceSentimentClasification[C]//ProceedingsofEMNLP-2008,2008:117-126.

        [7] 李壽山,黃居仁.基于Stacking組合分類(lèi)方法的中文情感分類(lèi)研究[J].中文信息學(xué)報(bào),2010,24(5):56-61.

        [8] 謝麗星,周明,孫茂松.基于層次結(jié)構(gòu)的多策略中文微博情感分析和特征抽取[J].中文信息學(xué)報(bào),2012,26(1):73-83.

        [9]HintonGE,OsinderoS,YwT.Afastlearningalgorithmfordeepbeliefnets[J].NeuralComputation,2006,18(7):1527-54.

        [10]BengioY,SchwenkH,SenécalJS,etal.Aneuralprobabilisticlanguagemodel[J].JournalofMachineLearningResearch,2003,3(6):1137-1155.

        [11]SocherR,LinCY,NgAY,etal.ParsingNaturalScenesandNaturalLanguagewithRecursiveNeuralNetworks[C]//ICML.2011:129-136.

        [12]SocherR,HuvalB,ManningCD,etal.Semanticcompositionalitythroughrecursivematrix-vectorspaces[C]//Proceedingsofthe2012JointConferenceonEmpiricalMethodsinNaturalLanguageProcessingandComputationalNaturalLanguageLearning.AssociationforComputationalLinguistics,2012:1201-1211.

        [13]SocherR,PerelyginA,WuJY,etal.Recursivedeepmodelsforsemanticcompositionalityoverasentimenttreebank[C]//ProceedingsoftheConferenceonEmpiricalMethodsinNaturalLanguageProcessing(EMNLP),2013:1631-1642.

        [14] 梁軍,柴玉梅,原慧斌,等.基于深度學(xué)習(xí)的微博情感分析[J].中文信息學(xué)報(bào),2014,28(5):155-161.

        [15] 李寧,羅文娟,莊福振,等.基于MapReduce的并行PLSA算法及在文本挖掘中的應(yīng)用[J].中文信息學(xué)報(bào),2015,29(2):79-86.

        [16]DeanJ,CorradoGS,MongaR,etal.LargeScaleDistributedDeepNetworks[J].AdvancesinNeuralInformationProcessingSystems,2012:1232-1240.

        [17]XuX,J?gerJ,KriegelHP.AFastParallelClusteringAlgorithmforLargeSpatialDatabases[J].DataMining&KnowledgeDiscovery,1999,3(3):263-290.

        [18] 孫志軍,薛磊,許陽(yáng)明,等.深度學(xué)習(xí)研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2012,29(8):2806-2810.

        [19] 陳釗,徐睿峰,桂林,等.結(jié)合卷積神經(jīng)網(wǎng)絡(luò)和詞語(yǔ)情感序列特征的中文情感分析[J].中文信息學(xué)報(bào),2015,29(6):172-178.

        SENTIMENT CLASSIFICATION OF CHINESE SHORT TEXT BASED ONPARALLELIZED RECURSIVE NEURAL NETWORK

        Xie Tie Zheng Xiao Zhang Lei Wang Xiujun

        (SchoolofComputerScienceandTechnology,AnhuiUniversityofTechnology,Maanshan243002,Anhui,China)

        A significant application of sentiment analysis is to determine the user’s semantic orientation in product reviews which are generally short texts. Traditional methods often acquire the shallow characteristics of words for sentiment analysis through bag-of-words model. However, the model trained through these simple characteristics doesn’t have a good performance in short text, especially complex syntax context. Through using deep recursive neural network to capture the semantic information and introducing a Chinese sentiment training treebank as the training set to find the sentiment information, a relatively higher accuracy on five-class short text sentiment analysis is achieved. Aiming at the problem of training time efficiency in large scale data, the parallelization is implemented through Spark, which can enhance the scalability and time efficiency of the model.

        Deep learning Sentiment analysis Text classification Spark

        2016-03-28。國(guó)家自然科學(xué)

        61402008,61402009);安徽省科技重大專(zhuān)項(xiàng)(16030901060);安徽高校省級(jí)自然科學(xué)研究重大項(xiàng)目(KJ2014ZD 05);安徽省高校優(yōu)秀青年人才支持計(jì)劃。謝鐵,碩士生,主研領(lǐng)域:自然語(yǔ)言處理。鄭嘯,教授。張雷,教授。王修君,講師。

        TP3

        A

        10.3969/j.issn.1000-386x.2017.03.037

        猜你喜歡
        情感模型
        一半模型
        如何在情感中自我成長(zhǎng),保持獨(dú)立
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        被情感操縱的人有多可悲
        失落的情感
        北極光(2019年12期)2020-01-18 06:22:10
        情感
        如何在情感中自我成長(zhǎng),保持獨(dú)立
        3D打印中的模型分割與打包
        情感移植
        欧美成人国产精品高潮| 亚洲一区二区三区在线| 亚洲中文字幕视频第一二区| 第一次处破女18分钟高清| 精品深夜av无码一区二区| 亚洲精品有码在线观看| 青青草免费在线手机视频| 亚洲av一区二区三区色多多| 欧美一区二区三区视频在线观看| 成在人线av无码免费| 91精品在线免费| 日本精品一级二区三级| 大学生高潮无套内谢视频| 国产白嫩美女在线观看| 亚洲无码观看a| 日韩av天堂一区二区| 免费无码a片一区二三区| 奇米狠狠色| 手机av在线观看视频| 人妻精品在线手机观看| 少妇无码一区二区三区免费| 日韩成人无码v清免费| 视频一区二区三区国产| 香港三级午夜理论三级| 又黄又爽又色的视频| 极品av在线播放| 亚洲中文字幕九色日本| 岳毛多又紧做起爽| 麻豆AV免费网站| 看大陆男女真人草逼视频| 无套熟女av呻吟在线观看| 日韩精品无码av中文无码版| 精品一区二区三区影片| 亚洲乱妇熟女爽到高潮视频高清| 亚洲最大av网站在线观看| 国产精品无码精品久久久| 国产一区二区三区经典| 日本孕妇潮喷高潮视频 | 性饥渴艳妇性色生活片在线播放| 激情五月婷婷久久综合| 激情在线一区二区三区视频|