劉文遠(yuǎn) 郭智存 郭丁丁
(燕山大學(xué)信息科學(xué)與工程學(xué)院網(wǎng)絡(luò)感知與大數(shù)據(jù)智能研究室 秦皇島 066004)
隨著社會(huì)的發(fā)展和人們經(jīng)濟(jì)水平的提高,人們往往從互聯(lián)網(wǎng)上獲取到各種旅游景點(diǎn)的信息?;ヂ?lián)網(wǎng)的出現(xiàn)不僅使得信息的傳播更為便捷,更激發(fā)起人們分享信息的欲望,尤其是當(dāng)今的年輕人更愿意在各種旅游網(wǎng)站上發(fā)表自己的言論以此表達(dá)自己的情感。挖掘這種大量的含有個(gè)人情感的評(píng)論,不僅能夠全面了解景點(diǎn)各個(gè)屬性,同時(shí)也能夠?yàn)槠渌谋緫?yīng)用領(lǐng)域帶來(lái)輔助作用,因此,進(jìn)行文本的方面級(jí)情感分析是很有必要的。
在文本的方面級(jí)細(xì)粒度情感分類研究中,最常見的問(wèn)題有兩個(gè):一個(gè)是在數(shù)據(jù)處理過(guò)程中,獲取到的數(shù)據(jù)類別不平衡的問(wèn)題;另一個(gè)是在文本情感預(yù)測(cè)過(guò)程中,設(shè)計(jì)的模型架構(gòu)的問(wèn)題。在解決數(shù)據(jù)不平衡的問(wèn)題中,常見的采樣方式并不能對(duì)方面級(jí)文本進(jìn)行類別平衡[1]。針對(duì)文本的情感分類問(wèn)題所采用的模型,目前最為有效的辦法是搭建深度學(xué)習(xí)網(wǎng)絡(luò)。深度學(xué)習(xí)模型的建立降低了特征工程,無(wú)需人為提取特征,同時(shí)海量的數(shù)據(jù)也能夠支持大規(guī)模網(wǎng)絡(luò)中權(quán)重的訓(xùn)練。在文本情感分類領(lǐng)域,文獻(xiàn)[2]在卷積神經(jīng)網(wǎng)絡(luò)(convolution neural network,CNN)的基礎(chǔ)上引入詞上下文信息來(lái)進(jìn)行文本情感分類。文獻(xiàn)[3]采用多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)解決文本中情感分布問(wèn)題。文獻(xiàn)[4]提出循環(huán)卷積神經(jīng)網(wǎng)絡(luò)(recurrent convolution neural network,RCNN)對(duì)文本進(jìn)行分類。文獻(xiàn)[5]利用多尺度注意力機(jī)制關(guān)注文本不同部分來(lái)解決文本情感分類問(wèn)題。文獻(xiàn)[6]采用關(guān)注不同粒度詞語(yǔ)進(jìn)行方面級(jí)情感分類。文獻(xiàn)[7]采用在高維空間生成樣本來(lái)解決樣本類別不平衡的問(wèn)題。文獻(xiàn)[8]采用循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)關(guān)注文本不同方面的情感傾向。文獻(xiàn)[9]采用分層使用注意力機(jī)制的方式計(jì)算文本情感傾向。盡管每個(gè)模型都采取不同的方式來(lái)提取句子中的情感特征,但模型的最終結(jié)果仍是單一情感向量,只能預(yù)測(cè)某一方面的情感,不能同時(shí)預(yù)測(cè)所有方面的情感,導(dǎo)致模型在應(yīng)用時(shí)耗費(fèi)大量計(jì)算時(shí)間。
針對(duì)方面級(jí)細(xì)粒度文本的數(shù)據(jù)不平衡問(wèn)題,本文設(shè)計(jì)了一種全新的平衡方式——批處理平衡(batch balance,BB),對(duì)數(shù)據(jù)進(jìn)行平衡化處理。針對(duì)傳統(tǒng)模型預(yù)測(cè)效率過(guò)低問(wèn)題,本文在批處理平衡數(shù)據(jù)的基礎(chǔ)上,提出了一種新型的深度模型結(jié)構(gòu)——雙向循環(huán)卷積注意力網(wǎng)絡(luò)(bidirectional convolutional recurrent attention network,Attn-Bi-LCNN)模型。Attn-Bi-LCNN 模型利用注意力機(jī)制能夠同時(shí)關(guān)注句子中涉及到不同情感,生成情感語(yǔ)義矩陣,利用情感語(yǔ)義矩陣達(dá)到同時(shí)預(yù)測(cè)所有方面情感極性、提高模型實(shí)用性的目的。
本文主要貢獻(xiàn)如下。
(1) 針對(duì)獲取到的方面級(jí)細(xì)粒度文本數(shù)據(jù)類別不平衡問(wèn)題設(shè)計(jì)了一種新的批處理平衡算法,用以解決上采樣和下采樣兩種傳統(tǒng)平衡算法不能平衡方面級(jí)細(xì)粒度文本數(shù)據(jù)問(wèn)題。
(2) 探討了神經(jīng)網(wǎng)絡(luò)權(quán)重初始化對(duì)模型學(xué)習(xí)能力的影響,將正態(tài)分布與Kaiming 分布結(jié)合在一起共同作用于神經(jīng)網(wǎng)絡(luò)權(quán)重的初始化,避免了由于神經(jīng)網(wǎng)絡(luò)過(guò)深而出現(xiàn)的輸出結(jié)果消失或爆炸等問(wèn)題。
(3) 針對(duì)傳統(tǒng)神經(jīng)網(wǎng)絡(luò)生成單一語(yǔ)義向量,導(dǎo)致模型在方面級(jí)情感分類問(wèn)題上預(yù)測(cè)效率較低的問(wèn)題,設(shè)計(jì)了一種新的雙向循環(huán)卷積注意力網(wǎng)絡(luò)模型,用來(lái)提高預(yù)測(cè)效率。
本文將在第1 節(jié)介紹情感分類領(lǐng)域內(nèi)的相關(guān)工作;在第2 節(jié)介紹針對(duì)多方面文本數(shù)據(jù)不平衡問(wèn)題,采用全新的文本數(shù)據(jù)處理流程;在第3 節(jié)對(duì)模型進(jìn)行具體介紹;在第4 節(jié)中介紹模型的實(shí)際學(xué)習(xí)能力;在第5 節(jié)中作出結(jié)論。
隨著數(shù)據(jù)量的激增和硬件計(jì)算水平的大幅度提高,深度學(xué)習(xí)逐漸成為解決問(wèn)題的主要的手段,同樣在文本的方面級(jí)細(xì)粒度情感分類任務(wù)中,如何利用神經(jīng)網(wǎng)絡(luò)提取文本中各個(gè)方面的情感信息,成為研究人員研究的重點(diǎn)。
文獻(xiàn)[10]基于循環(huán)神經(jīng)網(wǎng)絡(luò)提出了目標(biāo)依賴長(zhǎng)短期記憶網(wǎng)絡(luò)(target-dependent long short term memory,TD-LSTM)模型,分別將文本的正序和倒序輸入到模型中,取得了很好的效果。文獻(xiàn)[11]基于長(zhǎng)短期記憶網(wǎng)絡(luò)(long short term memory,LSTM)的基礎(chǔ)上引入了詞語(yǔ)的位置信息,利用詞語(yǔ)的不同位置賦予不同的權(quán)重來(lái)關(guān)注句子中不同方面詞語(yǔ)對(duì)情感的影響。文獻(xiàn)[12]將文本的方面級(jí)情感分類問(wèn)題由直接分類問(wèn)題轉(zhuǎn)換為文本的序列標(biāo)注問(wèn)題,利用循環(huán)神經(jīng)網(wǎng)絡(luò)時(shí)序性對(duì)預(yù)測(cè)結(jié)果進(jìn)行時(shí)序性輸出,取得了較好的效果。文獻(xiàn)[13]利用深度記憶網(wǎng)絡(luò)的記憶功能提高模型的長(zhǎng)期記憶能力,從而提高模型的學(xué)習(xí)能力。
文獻(xiàn)[14]將卷積神經(jīng)網(wǎng)絡(luò)與注意力機(jī)制結(jié)合起來(lái),提出了一種卷積記憶網(wǎng)絡(luò),用來(lái)捕捉句子中詞與詞之間的關(guān)系,取得較好的效果。文獻(xiàn)[15]在采用注意機(jī)制的基礎(chǔ)上,對(duì)文本中各個(gè)詞語(yǔ)的位置信息進(jìn)行了重新編碼,將每個(gè)詞語(yǔ)獨(dú)特的位置特征進(jìn)行編碼表示,并用于文本的方面級(jí)情感分類。
文獻(xiàn)[16]在初始記憶網(wǎng)絡(luò)的基礎(chǔ)上構(gòu)建了一種情感記憶網(wǎng)絡(luò),利用情感記憶網(wǎng)絡(luò)強(qiáng)化模型對(duì)情感極性的敏感度,對(duì)于文本的情感分類起到了較好的效果。文獻(xiàn)[17]將方面詞與文本中不同的方面對(duì)應(yīng)的情感標(biāo)簽聯(lián)系起來(lái)進(jìn)行聯(lián)合學(xué)習(xí)。
盡管以上模型都取得了較好的效果,但是其特定的模型結(jié)構(gòu)只會(huì)針對(duì)特定方面輸出單一語(yǔ)義向量。在實(shí)際應(yīng)用時(shí),由于文本內(nèi)蘊(yùn)含多個(gè)方面,單一語(yǔ)義向量會(huì)耗費(fèi)大量時(shí)間,為解決這一問(wèn)題,本文提出了Attn-Bi-LCNN 模型,能夠進(jìn)一步提高模型預(yù)測(cè)效率。
利用深度學(xué)習(xí)解決自然語(yǔ)言處理領(lǐng)域內(nèi)的問(wèn)題時(shí),首先針對(duì)于文本的特點(diǎn),需要進(jìn)行文本的預(yù)處理。傳統(tǒng)文本的處理流程包括文本的分詞、去除停用詞、文本可變長(zhǎng)度處理和詞語(yǔ)的向量化。針對(duì)數(shù)據(jù)不平衡的問(wèn)題,本文在數(shù)據(jù)處理階段加入了批處理平衡算法進(jìn)行數(shù)據(jù)平衡。針對(duì)神經(jīng)網(wǎng)絡(luò)過(guò)深可能導(dǎo)致前向傳播輸出消失或爆炸問(wèn)題,本文加入了神經(jīng)網(wǎng)絡(luò)權(quán)重預(yù)處理。數(shù)據(jù)處理流程如圖1 所示。
圖1 數(shù)據(jù)處理流程圖
文本的分詞是指將完整的中文文本語(yǔ)句分割成詞組。例如對(duì)于“這個(gè)酒店衛(wèi)生不錯(cuò),就是價(jià)格貴了一些”這一評(píng)論文本進(jìn)行分詞得到“這個(gè)酒店衛(wèi)生不錯(cuò),就是 價(jià)格貴了一些”分詞結(jié)果,詞與詞之間用空格隔開。隨后,為了進(jìn)一步降低數(shù)據(jù)噪聲,本文將去除對(duì)于情感分類無(wú)意義的詞語(yǔ)。
文本的去除停用詞是指將分好詞之后的語(yǔ)句去除不必要的詞語(yǔ)。在去除停用詞階段,根據(jù)數(shù)據(jù)特點(diǎn),本文在采用哈工大停用詞典的同時(shí)加入了自己收集的停用詞集合。哈工大停用詞詞典是針對(duì)中文詞的,但是在評(píng)論中可能會(huì)涉及到許多英文單詞,但并不是所有的英文單詞都具有意義,例如:“烤鴨味道很好,不比北京的烤鴨差,ps:面皮非常多也好吃,還有蔥花,都搭配得很good”評(píng)論中,單詞“ps”并不能代表實(shí)際意義。可以通過(guò)去除英文無(wú)用詞來(lái)達(dá)到削減噪聲的作用,同時(shí)也節(jié)約了計(jì)算成本。
在自然語(yǔ)言處理領(lǐng)域,與圖像處理不同的是,圖像處理問(wèn)題往往可以獲得大小相同的圖像矩陣,但是由于文本數(shù)據(jù)的特殊性,獲取到的文本往往是長(zhǎng)短不一的,這時(shí)為了方便模型訓(xùn)練,需要進(jìn)行文本的可變長(zhǎng)度處理。
由于循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的特殊性,網(wǎng)絡(luò)權(quán)重是在時(shí)間上共享的,所以循環(huán)神經(jīng)網(wǎng)絡(luò)能夠處理任意長(zhǎng)度的文本數(shù)據(jù)。
在批處理訓(xùn)練方式中,每次只向模型輸入原始數(shù)據(jù)集的一小部分,但是每批數(shù)據(jù)里面評(píng)論文本的長(zhǎng)度是長(zhǎng)短不一的,需對(duì)較短文本進(jìn)行填充處理,即對(duì)較短評(píng)論數(shù)據(jù)進(jìn)行填0 操作,使填充之后的長(zhǎng)度與同批數(shù)據(jù)內(nèi)最大長(zhǎng)度相同。填充結(jié)果如表1 所示。
表1 文本填充示例
詞語(yǔ)向量化是指將中文詞語(yǔ)轉(zhuǎn)化為稠密詞向量。稠密向量化表示有兩點(diǎn):一是克服了文本的維度災(zāi)難,可以人為規(guī)定詞向量維度大小。另一點(diǎn)是稠密詞向量可以表示詞與詞之間的聯(lián)系。本文采用Word2vec 進(jìn)行詞語(yǔ)的向量化。
為了探索不同詞向量維度對(duì)模型學(xué)習(xí)結(jié)果的影響,本文針對(duì)不同詞向量維度進(jìn)行了對(duì)比實(shí)驗(yàn)。在對(duì)比實(shí)驗(yàn)中,主要采取了4 個(gè)不同大小的維度,分別是50、100、150、200。詞向量不同維度的大小代表了同義詞在不同空間維度的向量表示,即同一詞語(yǔ)在線性空間中的位置,用于以后的線性映射。
從圖2 中可以看出,詞向量大小為50 表達(dá)最好,但是各個(gè)維度之間的差異并不是很大。Word2vec 等詞向量訓(xùn)練工具訓(xùn)練出的詞向量,與one-hot 形式詞向量相比,不僅能夠克服詞向量維度災(zāi)難,能夠靈活規(guī)定詞向量維度大小,同時(shí)具有更深層次的語(yǔ)義聯(lián)系。但是從圖中可以看出,詞向量維度過(guò)大,可能并不表示蘊(yùn)含的信息越豐富,這是因?yàn)?詞向量的維度越大,可能包含的噪音就越多。同時(shí)由于詞向量的維度過(guò)大,也會(huì)導(dǎo)致后續(xù)計(jì)算量過(guò)大的問(wèn)題。稠密詞向量相比于one-hot 型詞向量而言,克服了向量的稀疏性,并且稠密詞向量能夠蘊(yùn)含更多的語(yǔ)義信息。但是,并不是稠密詞向量的維度越大蘊(yùn)含信息就越豐富,需要結(jié)合特定語(yǔ)境,來(lái)確定詞向量維度大小。
圖2 詞向量維度對(duì)比
本文所采用的數(shù)據(jù)為評(píng)論文本數(shù)據(jù),訓(xùn)練數(shù)據(jù)共計(jì)105 000 條,共包括“交通是否便利”、“服務(wù)人員態(tài)度”、“上菜速度”等20 個(gè)小方面,而對(duì)于每條評(píng)論而言,可能會(huì)涉及到20 個(gè)方面中的其中幾種,對(duì)于涉及到的方面又存在“好”、“中”、“差”3種情感傾向。
由于文本數(shù)據(jù)本身涉及了多個(gè)方面,每個(gè)方面涉及到不同的情感,部分方面數(shù)量統(tǒng)計(jì)數(shù)據(jù)如表2所示。
表2 部分方面數(shù)量統(tǒng)計(jì)表
根據(jù)表2 可以看出,訓(xùn)練數(shù)據(jù)的各個(gè)類別數(shù)量嚴(yán)重不平衡,例如在“交通是否便利”方面,存在81 382條訓(xùn)練文本沒有提及該方面,同時(shí)在提及到此方面的文本中,“差”類別和“中”類別的情感傾向又遠(yuǎn)小于情感傾向?yàn)椤昂谩钡念悇e數(shù)量。
為解決數(shù)據(jù)不平衡問(wèn)題,本文提出了獨(dú)特的平衡數(shù)據(jù)算法——BB 算法。BB 算法流程如算法1 所示。
在BB 算法中,算法會(huì)循環(huán)遍歷每一次進(jìn)行訓(xùn)練的樣本,針對(duì)每一條數(shù)據(jù)生成一條對(duì)應(yīng)的平衡數(shù)據(jù),所以算法的時(shí)間復(fù)雜度是O(n)。由于每次訓(xùn)練都會(huì)生成等量的平衡數(shù)據(jù),需要額外的內(nèi)存空間,所以空間復(fù)雜度也是O(n)。
為了探索批處理平衡是否能夠有效避免由于數(shù)據(jù)不平衡導(dǎo)致的學(xué)習(xí)器具有傾向性的問(wèn)題,本文設(shè)置了對(duì)比實(shí)驗(yàn)進(jìn)行驗(yàn)證。
從圖3 可以看出,進(jìn)行數(shù)據(jù)平衡對(duì)比能夠有效促進(jìn)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí),獲得更高的F1 值,模型具有更好的學(xué)習(xí)能力。
圖3 數(shù)據(jù)是否平衡對(duì)比
在神經(jīng)網(wǎng)絡(luò)計(jì)算過(guò)程中,其前向傳播的本質(zhì)即為矩陣乘法。在神經(jīng)網(wǎng)絡(luò)的前向計(jì)算中,如果初始化的初始權(quán)重隨意設(shè)置,可能會(huì)引起前向傳播計(jì)算爆炸或計(jì)算消失等問(wèn)題。例如在圖4 中,如果初始化矩陣數(shù)值過(guò)大,并且神經(jīng)網(wǎng)絡(luò)層數(shù)較深,那么數(shù)據(jù)每經(jīng)過(guò)一層神經(jīng)網(wǎng)絡(luò),輸出值就會(huì)快速增長(zhǎng)。輸出結(jié)果過(guò)大則會(huì)導(dǎo)致神經(jīng)網(wǎng)絡(luò)在反向傳播過(guò)程中更新緩慢,從而導(dǎo)致學(xué)習(xí)緩慢,甚至使神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)器無(wú)法學(xué)習(xí)。同理,如果神經(jīng)網(wǎng)絡(luò)初始權(quán)重過(guò)小,則會(huì)導(dǎo)致最終輸出結(jié)果過(guò)小,從而導(dǎo)致輸出結(jié)果計(jì)算的損失收斂緩慢或無(wú)法收斂,導(dǎo)致神經(jīng)網(wǎng)絡(luò)無(wú)法進(jìn)行學(xué)習(xí)。
圖4 未進(jìn)行權(quán)重預(yù)處理
為避免前向傳播中出現(xiàn)結(jié)果爆炸或者消失現(xiàn)象,本文采用正態(tài)分布和Kaiming 初始化相結(jié)合的方式對(duì)神經(jīng)網(wǎng)絡(luò)的隱藏層進(jìn)行權(quán)重初始化,其中全連接層采用正態(tài)分布初始化,模型中的卷積層采用Kaiming 初始化,通過(guò)兩種初始化結(jié)合的方式對(duì)網(wǎng)絡(luò)模型各個(gè)代表層進(jìn)行權(quán)重初始化。
根據(jù)圖5可以看出,模型的輸出值圍繞1上下波動(dòng),盡管經(jīng)過(guò)較深的神經(jīng)網(wǎng)絡(luò)前向計(jì)算,模型的輸出值也沒有出現(xiàn)爆炸或者消失的情況,所以進(jìn)行神經(jīng)網(wǎng)絡(luò)的權(quán)重預(yù)處理能夠有效避免前向計(jì)算中的輸出爆炸或消失的問(wèn)題,有效促進(jìn)神經(jīng)網(wǎng)絡(luò)的收斂并進(jìn)行學(xué)習(xí)。
圖5 進(jìn)行權(quán)重預(yù)處理
假定訓(xùn)練句子S=(w1,…wi,…wn),其中wi代表句子中第i 個(gè)詞,句子共有n 個(gè)詞。那么,模型的輸入即為訓(xùn)練句子s 的詞向量矩陣V,其中V∈Rn×d,d 為詞語(yǔ)向量化維度。句子矩陣的第i 行即為句子中wi的詞向量表示。
方面級(jí)別細(xì)粒度情感分類就是將訓(xùn)練數(shù)據(jù)輸入到模型中,并由模型判斷各方面情感極性。例如句子“這個(gè)酒店環(huán)境很好,就是有些貴”,需要將句子分詞之后去除停用詞得到的結(jié)果進(jìn)行向量化,并將向量化之后的句子矩陣輸入到模型中。當(dāng)判斷“環(huán)境”方面時(shí),模型輸出應(yīng)為積極;當(dāng)判斷“價(jià)格”方面時(shí),模型輸入結(jié)果為消極。
本文采用批處理隨機(jī)梯度下降,即每次輸入模型中的數(shù)據(jù)為若干條待訓(xùn)練文本。因?yàn)檠h(huán)神經(jīng)網(wǎng)絡(luò)能夠處理任意長(zhǎng)度的文本序列,所以在輸入數(shù)據(jù)中需要對(duì)數(shù)據(jù)進(jìn)行可變長(zhǎng)度處理——對(duì)較短長(zhǎng)度的句子進(jìn)行填充。最終輸入到模型中的數(shù)據(jù)大小為RB×L×d,其中B 為批處理數(shù)據(jù)量,L 為批處理數(shù)據(jù)中句子最大長(zhǎng)度,d 為詞向量維度。
為了避免模型在訓(xùn)練過(guò)程中出現(xiàn)過(guò)擬合的現(xiàn)象,本文采用正則化(regularization)與Dropout 相結(jié)合的方式來(lái)避免模型的過(guò)擬合。正則化是在機(jī)器學(xué)習(xí)或者深度學(xué)習(xí)中用來(lái)優(yōu)化模型參數(shù)的一種重要手段,其基本表達(dá)形式為在損失函數(shù)之后添加額外約束項(xiàng),如式(1)所示。
在使用Dropout 的神經(jīng)網(wǎng)絡(luò)中,神經(jīng)網(wǎng)絡(luò)會(huì)在特定層隨機(jī)丟棄掉一些神經(jīng)元來(lái)降低參數(shù)的數(shù)量,與此同時(shí),也降低了模型過(guò)擬合的風(fēng)險(xiǎn)。應(yīng)用Dropout 另一個(gè)好處就是增加了模型的泛化能力。由于在應(yīng)用Dropout 的過(guò)程中,神經(jīng)網(wǎng)絡(luò)每一次迭代都會(huì)隨機(jī)丟棄掉一些神經(jīng)元,而這些神經(jīng)元并不是被固定的,而是隨機(jī)丟棄的,這就造成每一次訓(xùn)練都是在原有網(wǎng)絡(luò)基礎(chǔ)上進(jìn)行微改的神經(jīng)網(wǎng)絡(luò),相當(dāng)于進(jìn)行了集成訓(xùn)練。
Attn-Bi-LCNN 主要由Embedding 層、Bi-LSTM層、CNN 層、Attention 層及輸出層組成。Attn-Bi-LCNN 模型示意圖如圖6 所示。
圖6 Attn-Bi-LCNN 模型結(jié)構(gòu)圖
3.2.1 Embedding 層
模型中的Embedding 層的作用是將詞語(yǔ)映射為詞向量,Embedding 層的本質(zhì)即為一層全連接層,其內(nèi)部權(quán)重即為詞向量。通過(guò)Embedding 層之后,將訓(xùn)練文本轉(zhuǎn)換為文本矩陣,矩陣的第i 行即為句子中第i 個(gè)詞的詞向量。
如式(2)所示,文本矩陣S 大小為L(zhǎng) ×d,其中L為矩陣行數(shù),同時(shí)也是句子詞語(yǔ)數(shù),d 為詞語(yǔ)向量化維度。
3.2.2 Bi-LSTM 層
Bi-LSTM 層的作用是為了提取句子中單詞之間的順序特征,并對(duì)句子表示進(jìn)行記憶存儲(chǔ)。Bi-LSTM 表示雙向LSTM,當(dāng)文本矩陣中的詞語(yǔ)按照時(shí)間順序輸入到雙向LSTM 中,會(huì)獲取當(dāng)前詞的前向語(yǔ)義表示ht和反向語(yǔ)義表示,將二者拼湊起來(lái)得到當(dāng)前詞的完整語(yǔ)義表示。
同樣,文本向量矩陣經(jīng)過(guò)Bi-LSTM 層的輸出為文本的高維語(yǔ)義表示,輸出結(jié)果為
其中,SLSTM代表文本高維語(yǔ)義表示矩陣,l 代表句子長(zhǎng)度,dLSTM代表Bi-LSTM 隱藏層維度大小,矩陣的每一行即為對(duì)應(yīng)詞的完整語(yǔ)義表示。
3.2.3 CNN 層
CNN 層的作用是為了提取高維語(yǔ)義表示中的詞與詞之間的關(guān)系。循環(huán)神經(jīng)網(wǎng)絡(luò)的第i 個(gè)詞會(huì)受到前i-1 個(gè)詞的記憶影響。與循環(huán)神經(jīng)網(wǎng)絡(luò)不同,此處CNN 的作用是為了提取相鄰若干個(gè)詞之間的關(guān)系,對(duì)窗口之外的詞并無(wú)任何影響。
本處CNN 層采用的是前文介紹的CNN 的一維卷積,其卷積結(jié)果由卷積核大小和卷積核步數(shù)決定。
其中,SCNN為卷積之后的句子向量,C 代表卷積操作,dCNN代表SCNN的維度大小,具體值由設(shè)置的超參數(shù)決定。
3.2.4 隱藏層
隱藏層等同于前面介紹的全連接神經(jīng)網(wǎng)絡(luò),起到特征融合和降維的作用。對(duì)于特征向量,可以通過(guò)設(shè)置隱藏層大小,進(jìn)行升維或降維。
3.2.5 輸出層
本文研究的問(wèn)題為分類問(wèn)題,所以選擇Softmax函數(shù)作為輸出層激活函數(shù),其計(jì)算結(jié)果即為模型預(yù)測(cè)結(jié)果。Softmax 層計(jì)算公式如式(5)所示。
其中,ei代表向量中第i 個(gè)元素的值,代表向量中所有元素的和。
模型中計(jì)算得出的情感語(yǔ)義矩陣的每一行即為每一方面的情感向量。不同方面的情感極性不同,同時(shí)也意味著不同方面對(duì)于句子的關(guān)注點(diǎn)是不同的,本模型采用注意力機(jī)制解決這一問(wèn)題。矩陣的每一行情感語(yǔ)義向量都是通過(guò)Attention 層與CNN層得出的語(yǔ)義向量進(jìn)行計(jì)算,并賦予不同的關(guān)注權(quán)重,實(shí)現(xiàn)對(duì)不同方面的情感更好的預(yù)測(cè)。
本文采用的是自我注意力機(jī)制,其注意力權(quán)重計(jì)算公式如式(6)所示。Attention 層網(wǎng)絡(luò)結(jié)構(gòu)圖如圖7 所示。
其中,A 為注意力權(quán)重矩陣,矩陣的每一列代表一個(gè)方面的注意力權(quán)重;DT代表卷積神經(jīng)網(wǎng)絡(luò)卷積核得出的語(yǔ)義向量所組成的矩陣,矩陣的每一行為圖7中的,代表不同卷積核卷積得到的特征向量;Wm代表DT的權(quán)重矩陣,相當(dāng)于一層全連接神經(jīng)網(wǎng)絡(luò),其神經(jīng)元數(shù)目為m 個(gè),為超參數(shù);Va與偽隨機(jī)初始向量不同,此處的Va為方面詞詞向量矩陣,矩陣的每一行代表訓(xùn)練數(shù)據(jù)的各個(gè)方面詞向量化得到的詞向量,此處在實(shí)驗(yàn)中可以進(jìn)行微調(diào)更新或者不參與更新。最后通過(guò)Softmax 激活函數(shù)對(duì)結(jié)果進(jìn)行激活得到注意力權(quán)重矩陣A。
圖7 Attention 結(jié)構(gòu)示意圖
得到不同方面的注意力權(quán)重之后,將權(quán)重矩陣A 與卷積層得到的語(yǔ)義向量進(jìn)行相乘,得到不同方面的情感語(yǔ)義矩陣S。
本文針對(duì)評(píng)論文本的方面級(jí)細(xì)粒度情感問(wèn)題在同一數(shù)據(jù)集上對(duì)不同模型進(jìn)行了評(píng)估。
本文采用的數(shù)據(jù)集為2018 年AI Challenger 全球AI 挑戰(zhàn)賽中細(xì)粒度用戶評(píng)論情感分析賽道數(shù)據(jù)。該數(shù)據(jù)集是專門用來(lái)判斷文本各方面情感傾向的數(shù)據(jù)集,主要內(nèi)容為用戶對(duì)用餐地點(diǎn)的各個(gè)方面的評(píng)價(jià),包括距離商圈遠(yuǎn)近、服務(wù)人員態(tài)度、價(jià)格水平、食物口感等20 個(gè)方面的評(píng)價(jià),共有105 000 條用于訓(xùn)練的帶標(biāo)注數(shù)據(jù),15 000 條驗(yàn)證數(shù)據(jù)。數(shù)據(jù)中的每條文本并不會(huì)涉及到所有的20 個(gè)方面,所以模型的任務(wù)是判斷方面是否被提及同時(shí)對(duì)提及到的方面進(jìn)行情感預(yù)測(cè)。
對(duì)數(shù)據(jù)的預(yù)處理主要為前文所介紹的文本分詞和去除停用詞。本文采用jieba 分詞作為分詞工具,因?yàn)橛脩粼谠u(píng)價(jià)菜品或表明位置時(shí)可能會(huì)涉及到很多專有名詞,例如“五香杏仁”、“紫菜蛋花湯”、“老吳酒館”等,如果直接進(jìn)行分詞可能會(huì)出現(xiàn)把菜名或者地名分開等情況,造成分詞不準(zhǔn)確。所以,本文加入了在網(wǎng)上搜集的地名及菜名的詞語(yǔ)作為自定義詞典加入到j(luò)ieba 分詞中,使其分詞更加準(zhǔn)確,避免造成歧義。
在去除停用詞階段,本文采用了哈工大停用詞詞表。同時(shí),因?yàn)閿?shù)據(jù)文本為用戶評(píng)論,所以還包括很多人為噪聲,例如“#”、“:)”、“^ ^”等人為構(gòu)建的網(wǎng)絡(luò)表情符號(hào),本文采用正則表達(dá)式過(guò)濾符號(hào)噪聲。經(jīng)過(guò)分詞及去除停用詞處理之后的文本,短則幾十詞,長(zhǎng)則上百詞,所以在進(jìn)行模型訓(xùn)練時(shí)還需進(jìn)行數(shù)據(jù)的可變長(zhǎng)度處理。數(shù)據(jù)案例及標(biāo)注如表3 所示。
表3 數(shù)據(jù)實(shí)例及標(biāo)注
本文提出的Attn-Bi-LCNN 模型與其他傳統(tǒng)情感分類模型相比,在解決多標(biāo)簽細(xì)粒度情感分類問(wèn)題上更具有實(shí)用性,能夠在驗(yàn)證數(shù)據(jù)集上更快地得出結(jié)果。這是因?yàn)閭鹘y(tǒng)的情感分類神經(jīng)網(wǎng)絡(luò)往往是將一句待預(yù)測(cè)樣本轉(zhuǎn)化為單一語(yǔ)義向量,并將此向量用于情感分類。但是由于在多標(biāo)簽犀利去情感分類問(wèn)題上,一句樣本往往蘊(yùn)含著不同方面的不同情感,通過(guò)單一語(yǔ)義情感并無(wú)法準(zhǔn)確判斷各方面的情感傾向。同時(shí),由于其模型只會(huì)生成單一語(yǔ)義向量,在進(jìn)行預(yù)測(cè)時(shí),每次運(yùn)算只會(huì)預(yù)測(cè)一個(gè)方面。如果需要將樣本內(nèi)所涉及的20 個(gè)方面全部進(jìn)行預(yù)測(cè),則需要將樣本循環(huán)輸入神經(jīng)網(wǎng)絡(luò)進(jìn)行20 次運(yùn)算,這樣會(huì)導(dǎo)致模型在實(shí)際應(yīng)用時(shí)耗費(fèi)大量計(jì)算時(shí)間。
為了解決上述問(wèn)題,本文提出的Attn-Bi-LCNN模型創(chuàng)新性地提出了在原有神經(jīng)網(wǎng)絡(luò)層上加入注意力機(jī)制并生成情感語(yǔ)義矩陣。情感語(yǔ)義矩陣與傳統(tǒng)單一情感語(yǔ)義向量不同的是,情感矩陣的每一行向量都代表了不同方面的情感傾向。而情感矩陣內(nèi)部的各個(gè)向量之間,通過(guò)引入注意力機(jī)制關(guān)注句子中不同部位,得出關(guān)注不同類別的情感傾向。為了驗(yàn)證Attn-Bi-LCNN 模型的有效性,本節(jié)將從模型在驗(yàn)證集上的運(yùn)算時(shí)間和預(yù)測(cè)準(zhǔn)確程度兩方面來(lái)對(duì)比Attn-Bi-LCNN 模型的有效性。
4.2.1 模型準(zhǔn)確度對(duì)比
為了探索Attn-Bi-LCNN 模型準(zhǔn)確度,涉及對(duì)比的傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型有RCNN、CNN、CNN+Attention、Bi-LSTM+Attention。實(shí)驗(yàn)驗(yàn)證集數(shù)據(jù)為15 000條點(diǎn)評(píng)數(shù)據(jù),涉及20 個(gè)方面,每個(gè)方面分為4 個(gè)類別:積極、中性、消極、未提及。評(píng)價(jià)指標(biāo)依然采取F1 值,F1 值越大,模型表現(xiàn)越好。對(duì)比模型如表4所示。
表4 對(duì)比模型示例
RCNN 模型是應(yīng)用在文本領(lǐng)域內(nèi)的經(jīng)典模型,由文獻(xiàn)[4]在2015 年AAAI 會(huì)議上提出,在文本分類領(lǐng)域具有很好的適用性。RCNN 創(chuàng)新性的將卷積神經(jīng)網(wǎng)絡(luò)中的最大池化引入到循環(huán)神經(jīng)網(wǎng)絡(luò)中,解決了樣本不等長(zhǎng)的問(wèn)題,實(shí)現(xiàn)了文本對(duì)齊。CNN 采用的是前文介紹的一維卷積,通過(guò)卷積核依次掃描樣本,來(lái)模擬實(shí)現(xiàn)N-gram 提取特征的過(guò)程,并通過(guò)反向傳播來(lái)實(shí)現(xiàn)端到端訓(xùn)練。CNN +Attention 代表的是將注意力機(jī)制引入卷積神經(jīng)網(wǎng)絡(luò),通過(guò)應(yīng)用CNN 提取相鄰詞語(yǔ)特征進(jìn)行預(yù)測(cè),是文本領(lǐng)域內(nèi)經(jīng)典的神經(jīng)網(wǎng)絡(luò)算法。Bi-LSTM +Attention 在原有雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上引入注意力機(jī)制,通過(guò)注意力機(jī)制來(lái)實(shí)現(xiàn)對(duì)句子各個(gè)部位之間的關(guān)注。
根據(jù)圖8 可以看出,本文提出的Attn-Bi-LCNN模型取得了最好預(yù)測(cè)效果,其次是RCNN 模型,表現(xiàn)最差的是CNN+Attention模型。出乎意料的是,采用一維卷積的CNN 模型取得了不錯(cuò)效果,而其相對(duì)應(yīng)加上注意力機(jī)制模型卻表現(xiàn)不佳。原因是單純的CNN 模型結(jié)構(gòu)相對(duì)簡(jiǎn)單,而且一維卷積所提取的特征是相鄰詞組之間的特征,所以無(wú)需增添注意力機(jī)制進(jìn)行補(bǔ)充。
圖8 模型準(zhǔn)確度對(duì)比
Bi-LSTM+Attention 模型也取得了不錯(cuò)的結(jié)果。LSTM 能夠有效地提取文本的時(shí)序性特征,使得前面的詞語(yǔ)能夠?qū)罄m(xù)的文本產(chǎn)生影響,同時(shí)由于LSTM 具有長(zhǎng)期記憶,在一定程度上避免了梯度消失現(xiàn)象。加入的注意力機(jī)制能夠?qū)渥又胁煌牟糠之a(chǎn)生關(guān)注,增添了對(duì)特征部位的選擇,提高了模型的學(xué)習(xí)能力。RCNN 與其他模型相比雖然沒有引入注意力機(jī)制,但是模型創(chuàng)新性地引入了卷積神經(jīng)網(wǎng)絡(luò)中的最大池化,這不僅解決了文本對(duì)齊問(wèn)題,同時(shí)最大池化也起到了提取重要特征的作用,提升了模型的學(xué)習(xí)能力。
相比而言,Attn-Bi-LCNN 模型取得了最好的預(yù)測(cè)效果。首先Attn-Bi-LCNN 模型主要由CNN、LSTM、注意力層組成,其中CNN 用以提取文本數(shù)據(jù)的相鄰詞組之間的抽象聯(lián)系,將相鄰詞語(yǔ)聯(lián)系起來(lái)。隨后采用LSTM 提取詞與詞之間的時(shí)序聯(lián)系,將詞語(yǔ)轉(zhuǎn)換為高維語(yǔ)義向量。最后采用注意力機(jī)制關(guān)注句子中不同部位對(duì)情感判斷的影響,將重要部位賦予相對(duì)大的權(quán)重。Attn-Bi-LCNN 模型結(jié)合了CNN、LSTM、注意力層等網(wǎng)絡(luò)層優(yōu)點(diǎn),取得了較好的學(xué)習(xí)能力,同時(shí)也證明了本文提出的Attn-Bi-LCNN 模型的有效性。
4.2.2 模型預(yù)測(cè)時(shí)間對(duì)比
本文另一創(chuàng)新點(diǎn)是將用于預(yù)測(cè)的情感語(yǔ)義向量提升為情感語(yǔ)義矩陣,使得情感語(yǔ)義矩陣能夠同時(shí)預(yù)測(cè)不同方面的情感,提高了模型的應(yīng)用性。為了驗(yàn)證Attn-Bi-LCNN 模型在實(shí)際應(yīng)用中的高效性,本文將與RCNN 模型進(jìn)行對(duì)比。RCNN 模型結(jié)構(gòu)的特點(diǎn)是將訓(xùn)練文本轉(zhuǎn)換為單一語(yǔ)義向量,利用語(yǔ)義向量進(jìn)行情感預(yù)測(cè)。為此,本文將統(tǒng)計(jì)RCNN 模型預(yù)測(cè)單一方面時(shí)間,同時(shí)和Attn-Bi-LCNN 模型預(yù)測(cè)的20 個(gè)方面計(jì)算時(shí)間進(jìn)行對(duì)比。
根據(jù)圖9 可以看出,Attn-Bi-LCNN 模型運(yùn)算時(shí)間要明顯低于RCNN 模型運(yùn)算時(shí)間。同時(shí)RCNN模型還只是預(yù)測(cè)一個(gè)方面,其模型預(yù)測(cè)時(shí)間就要比Attn-Bi-LCNN 模型預(yù)測(cè)時(shí)間多近3 倍。本文提出的Attn-Bi-LCNN 模型運(yùn)算時(shí)間略高于前面3 個(gè)模型,這是因?yàn)橄鄬?duì)于前面3 個(gè)模型,Attn-Bi-LCNN 模型結(jié)構(gòu)更為復(fù)雜,參數(shù)較多。所以,Attn-Bi-LCNN 模型其情感語(yǔ)義矩陣結(jié)構(gòu)是完全高效的,具有較高的實(shí)用價(jià)值。
圖9 模型預(yù)測(cè)時(shí)間對(duì)比
針對(duì)CNN 與LSTM 提取特征的特點(diǎn),將二者結(jié)合起來(lái)進(jìn)行特征提取。利用LSTM 能夠提取序列數(shù)據(jù)的時(shí)序特征,將文本數(shù)據(jù)提取成高維語(yǔ)義特征向量。再利用CNN 能夠提取局部特征的特點(diǎn),提取高維語(yǔ)義向量之間的局部聯(lián)系,形成情感向量。
為了關(guān)注文本中的不同方面的不同情感,將注意力機(jī)制引入模型,利用注意力機(jī)制關(guān)注句子不同部位的特點(diǎn)生成情感語(yǔ)義矩陣。與傳統(tǒng)模型生成情感向量不同,語(yǔ)義矩陣包含的情感更為豐富,能夠同時(shí)預(yù)測(cè)不同方面的不同情感。
針對(duì)不同參數(shù)對(duì)算法的影響進(jìn)行了測(cè)試,選取出最優(yōu)參數(shù)集。對(duì)不同算法模型進(jìn)行了實(shí)驗(yàn)對(duì)比,驗(yàn)證了模型學(xué)習(xí)能力。同時(shí)對(duì)算法運(yùn)算時(shí)間進(jìn)行了對(duì)比,驗(yàn)證了模型的高效性。
綜上所述,本文對(duì)評(píng)論文本的方面級(jí)細(xì)粒度情感分類進(jìn)行了研究,研究成果還可以進(jìn)行擴(kuò)展。本文所采用的詞向量預(yù)訓(xùn)練工具所處語(yǔ)境較為單一,后續(xù)可能采用更為優(yōu)秀的詞向量預(yù)訓(xùn)練工具進(jìn)行訓(xùn)練。此外,在該數(shù)據(jù)集中,所有的方面是事先人為標(biāo)注好的,但是當(dāng)今每天會(huì)產(chǎn)生海量數(shù)據(jù),人為標(biāo)注不現(xiàn)實(shí)。為此,對(duì)自動(dòng)提取方面模型的探索仍是有必要的。