您的位置:首頁 >聚焦 > 關(guān)注 >

焦點日報:經(jīng)典情感分析模型總結(jié)(上)

2023-06-23 14:08:53 來源:機(jī)器之心

機(jī)器之心專欄

本專欄由機(jī)器之心SOTA!模型資源站出品,每周日于機(jī)器之心公眾號持續(xù)更新。
本專欄將逐一盤點自然語言處理、計算機(jī)視覺等領(lǐng)域下的常見任務(wù),并對在這些任務(wù)上取得過 SOTA 的經(jīng)典模型逐一詳解。前往 SOTA!模型資源站()即可獲取本文中包含的模型實現(xiàn)代碼、預(yù)訓(xùn)練模型及 API 等資源。

本文將分 3 期進(jìn)行連載,共介紹 18推薦系統(tǒng)任務(wù)上曾取得 SOTA 的經(jīng)典模型。


【資料圖】

第 1 期:CNN、GRNN、CLSTM、TD-LSTM/TC-LSTM

第 2 期:MemNet、AT-LSTM、IAN、AF-LSTM

第 3 期:Bert on ABSA、ASGCN、GAN、Sentic GCN

您正在閱讀的是其中的第 1 期。前往 SOTA!模型資源站()即可獲取本文中包含的模型實現(xiàn)代碼、預(yù)訓(xùn)練模型及 API 等資源。

本期收錄模型速覽
模型SOTA!模型資源站收錄情況模型來源論文
CNN/project/textcnn收錄實現(xiàn)數(shù)量:6支持框架:PyTorch,TensorFlow等Convolutional Neural Networks for Sentence Classification
GRNN/project/grnn-2Document modeling with gated recurrent neural network for sentiment classification
CLSTM/project/clstmCached Long Short-Term Memory Neural Networks for Document-Level Sentiment Classification
TD-LSTM/TC-LSTM/project/td-lstm-2收錄實現(xiàn)數(shù)量:11支持框架:PyTorch,TensorFlow等Effective LSTMs for Target-Dependent Sentiment Classification

情感分析(sentiment analysis)是指利用計算機(jī)技術(shù)對文本、圖像、音頻、視頻甚至跨模態(tài)的數(shù)據(jù)進(jìn)行情緒挖掘與分析。廣義上講,情感分析還包括對觀點、態(tài)度、傾向的分析等。情感分析是自然語言處理的一個重要的研究領(lǐng)域。情感分析主要涉及兩個對象,即評價的對象(包括商品、服務(wù)、組織、個體、話題、問題、事件等)和對該對象的態(tài)度、情感等。情感分析在社會的輿情管理、商業(yè)決策、精準(zhǔn)營銷等領(lǐng)域有著廣泛的應(yīng)用。從情感分析的數(shù)據(jù)來源角度看,可分為人臉情感分析、語音情感分析、肢體語言情感分析、文本情感分析和生理模式情感分析等,本文聚焦于文本的情感分析,這也是目前網(wǎng)絡(luò)內(nèi)容理解中使用的重要技術(shù)(如無特別說明,下文中提到的情感分析均為文本情感分析)。在自然語言處理中,情感分析屬于典型的文本分類問題,即把需要進(jìn)行情感分析的文本劃分為其所屬類別。主流的情感分析方法有兩種:基于詞典的方法和基于機(jī)器學(xué)習(xí)算法的方法。基于詞典的方法主要通過制定一系列的情感詞典和規(guī)則,拆解文本、提取關(guān)鍵詞、計算情感值,最后通過情感值來作為文本的情感傾向判斷依據(jù)。這種方法往往會忽略其詞順序、語法和句法,將這段文本僅僅看做是一個詞集合,因此不能充分的表達(dá)文本語義信息。而引入深度學(xué)習(xí)技術(shù)的機(jī)器學(xué)習(xí)方法,利用詞嵌入技術(shù)可以避免文字長短不均帶來的處理困難;使用深度學(xué)習(xí)抽象特征,可以避免大量人工提取特征的工作;模擬詞與詞之間的聯(lián)系,有局部特征抽象化和記憶功能,因此,深度學(xué)習(xí)技術(shù)在情感分析中發(fā)揮了越來越重要的作用。目前情感分析用到的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)有多層神經(jīng)網(wǎng)絡(luò)(MLP)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)和長短期記憶模型(LSTM),具體不同的模型通過交叉驗證技術(shù)選取最優(yōu)參數(shù)(比如,幾層模型、每層節(jié)點數(shù)、Dropout 概率等)。情感分析的模型主要分為三個層面,分別為:Document level、Sentence level和Aspect level。其中,Document level是將整個文本作為分析單元并假設(shè)該文本討論的對象為單一實體且情感、觀點都是鮮明、清晰的,即neural、positive or negative 。Sentence level則是以每個句子作為單獨的分析對象,由于句子與句子間可能存在某些關(guān)聯(lián),因此我們不能將其認(rèn)為是觀點明確的。而對于Aspect level其分類粒度更細(xì),即我們需要抽取出targets不同層面相互獨立的評價,并進(jìn)行總結(jié)綜合得到最后的情感。本文回顧情感分析中必備的TOP模型。一些經(jīng)典的自然語言處理領(lǐng)域的模型,例如XLNet、Bert及各種變體,適用于NLU、文本生成、情感分析等多個領(lǐng)域,本文均不涉及。本文只專注于專門的sentiment analysis模型。

一、Document level/Sentence level

1、 CNN

這篇文章引入卷積神經(jīng)網(wǎng)絡(luò)(CNN),將層與卷積濾波器應(yīng)用于局部特征。最初發(fā)明用于計算機(jī)視覺的CNN模型后被證明對NLP有效,并在語義分析、搜索查詢檢索、句子建模和其他傳統(tǒng)NLP任務(wù)中取得了優(yōu)異的結(jié)果。本文訓(xùn)練了一個簡單的CNN,在一個無監(jiān)督的神經(jīng)語言模型得到的單詞向量的基礎(chǔ)上再加上一層卷積,最初保持單詞向量靜態(tài),只學(xué)習(xí)模型的其他參數(shù)。這個簡單的模型在多個基準(zhǔn)上取得了很好的結(jié)果,這表明預(yù)先訓(xùn)練的向量是“通用”的特征提取器,可以用于各種分類任務(wù)。通過微調(diào)學(xué)習(xí)特定于任務(wù)的向量,可以得到進(jìn)一步的改進(jìn)。最后,作者描述了對網(wǎng)絡(luò)結(jié)構(gòu)的一個簡單修改,通過擁有多個通道,允許使用預(yù)先訓(xùn)練的和任務(wù)特定的向量。

圖1有兩個通道的例句的模型結(jié)構(gòu)

設(shè)xi ∈ Rk 為對應(yīng)于句子中的第i個單詞的k維詞向量,句子長度為n,圖1左側(cè)是一個n*k的矩陣,表示一句話的n個詞語,每個詞語是一個k維向量,假設(shè)文本中最長的句子中的詞個數(shù)為n,則 小于n 的句子填充為m。最終得到的詞向量矩陣為 n * k。表示為:

其中,⊕是串聯(lián)運(yùn)算符。X_i:n為單詞xi的串聯(lián)(從第i個單詞到第n個單詞,把它們串聯(lián)起來),卷積運(yùn)算包含一個濾波器w∈R^hk,它被應(yīng)用于單詞h的窗口以生成一個新的特征。例如,特征c_i由單詞x_i:i+h?1的窗口生成:

其中,b∈R是一個偏置項,w是權(quán)重,f是一個非線性函數(shù)。這個過濾器應(yīng)用于句子{X_1:h, X_2:h+1, …, X_n-h+1:n}生成特征圖:

然后在特征映射上應(yīng)用max超時池化操作,并將最大值?c=max{c}作為與此對應(yīng)的特征特殊過濾器。其思想是為每個特征映射捕獲最重要的特征,即具有最高值的特征。這種池化方案可以處理可變的句子長度。此外,本文在倒數(shù)第二層使用了dropout以解決過擬合問題,當(dāng)模型參數(shù)太多而訓(xùn)練樣本少的時候容易出現(xiàn)過擬合問題。

項目SOTA!平臺項目詳情頁
CNN前往 SOTA!模型平臺獲取實現(xiàn)資源:/project/textcnn

2、GRNN

這篇文章引入了一個神經(jīng)網(wǎng)絡(luò),以統(tǒng)一的、自底向上的方式來學(xué)習(xí)基于向量的文本表示方法。該模型首次使用CNN/LSTM來學(xué)習(xí)句子表示,利用Gated RNN自適應(yīng)地對句子的語義及其之間關(guān)系進(jìn)行編碼。

圖2 文本級情感分類的神經(jīng)網(wǎng)絡(luò)模型。(w_i)^n代表第n個句子中的第i個詞,l_n是句子長度

詞向量表示詞向量表示有兩種實現(xiàn)方式:隨機(jī)初始化或者預(yù)訓(xùn)練的方式。作者參考的是word2vec實現(xiàn)方案,并且用預(yù)訓(xùn)練詞向量的方式以保留更多的語義信息。句子表示CNN和LSTM模型都可以用于句子編碼。兩種模型可以將非固定長度的句子表示成定長的向量,且不需依賴依存句法分析或者成分句法分析就能保留句子的詞序等信息。作者在本文中使用CNN with multiple conventional filters of different widths的方式實現(xiàn)句子編碼。作者在文章中分別使用寬度為1,2,3的卷積核去獲取unigrams,bigrams和trigrams。為了得到句子的全局語義信息,作者隨后接入一個average pooling layer,再接入tanh激活函數(shù)(作用是引入非線性),最后將整個句子的不同寬度卷積核的向量表示接入一個Average層,從而得到該句平均向量表示。整個過程如圖3所示。

圖3使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行句子合成

篇章表示一個最簡單的實現(xiàn)策略是:忽略句間順序,直接使用句向量的平均值作為該文本向量表示。先不考慮計算效率問題,這種方式并不能有效的保留句子之間復(fù)雜的語言關(guān)系(比如:原因結(jié)構(gòu),反義結(jié)構(gòu)等)。CNN模型可以用來表示篇章,這種模型通過其線性層儲存句間關(guān)系。RNN也可以實現(xiàn),但基本的RNN模型存在缺陷:梯度消失或者梯度爆炸。在長句中問題就會凸顯出來:梯度可能會呈指數(shù)級上升或者衰減,這就使得長距離依賴問題變得棘手。為了解決這個問題,作者將基本RNN改造成一種帶有門控結(jié)構(gòu)的RNN,這種方式類似于LSTM或者GNN,區(qū)別見下列轉(zhuǎn)換函數(shù):

該模型可以被看作是一個LSTM,它的輸出門永遠(yuǎn)是打開的,因為我們更傾向于不拋棄句子的任何部分語義來獲得更好的文本表示。圖4(a)顯示了一個標(biāo)準(zhǔn)的順序方式,其中最后一個隱藏向量被視為情感分類的文本表示。我們可以做進(jìn)一步的擴(kuò)展,比如將隱性向量的平均值作為文本表示,這需要考慮具有不同顆粒度的歷史語義的層次結(jié)構(gòu)。該方法如圖4(b)所示。進(jìn)一步,可以以同樣的方式使用前面的歷史和后面的證據(jù),并利用雙向門控RNN作為計算工具。

圖4 用門控遞歸神經(jīng)網(wǎng)絡(luò)進(jìn)行文本文建模。GNN代表了門控遞歸神經(jīng)網(wǎng)絡(luò)的基本計算單元

組合的文本表示可以自然地被視為文本特征,用于情感分類而不需要特征工程。具體來說,首先添加一個線性層,將文本向量轉(zhuǎn)化為實值向量,其長度為類號C。之后,添加一個softmax層,將實值轉(zhuǎn)化為條件概率,其計算方式如下:

對于模型訓(xùn)練,作者使用黃金情感分布P^g(d)和預(yù)測的情感分布P(d)之間的交叉熵誤差作為損失函數(shù):

然后通過反向傳播對整個參數(shù)集求損失函數(shù)的導(dǎo)數(shù),使用隨機(jī)梯度下降算法更新參數(shù):

項目SOTA!平臺項目詳情頁
GRNN前往 SOTA!模型平臺獲取實現(xiàn)資源:/project/grnn-2

3、 CLSTM

神經(jīng)網(wǎng)絡(luò)在情感分類任務(wù)中取得了巨大的成功,因為它們能夠減輕特征工程的任務(wù)壓力。然而,由于存儲單元的缺陷,如何在遞歸架構(gòu)下對文檔級情感分類的長文本進(jìn)行建模仍有待研究。為了解決這個問題,本文提出了一個緩存的長短期記憶神經(jīng)網(wǎng)絡(luò)(Cached Long Short-Term Memory Neural Networks ,CLSTM)來捕捉長文本中的整體語義信息。CLSTM引入了一個緩存機(jī)制,它將內(nèi)存分為具有不同遺忘率的幾組,從而使網(wǎng)絡(luò)能夠在一個循環(huán)單元中更好地保持情感信息。由于標(biāo)準(zhǔn)的LSTM不可避免地會丟失有價值的特征,本文提出了一種緩存的長短期記憶神經(jīng)網(wǎng)絡(luò)(cached long short-term memory neural networks,CLSTM),通過引入緩存機(jī)制,在較長的步驟中捕捉信息。此外,為了更好地控制和平衡歷史信息和傳入信息,采用了LSTM的一個特殊變體,耦合輸入和遺忘門LSTM(Coupled Input and Forget Gate LSTM,CIFG-LSTM)。在CIFG-LSTM中,輸入門和遺忘門被耦合為一個統(tǒng)一的門,即i(t)=1-f(t)。用f(t)來表示耦合門: CLSTM旨在通過緩存機(jī)制捕捉長距離信息,該機(jī)制將記憶分為若干組,不同的遺忘率被視為過濾器,分配給不同的組。不同的組別通過 squashing 遺忘率的尺度來捕捉不同尺度的依賴性。遺忘率高的組是短期記憶,而遺忘率低的組是長期記憶。特別是,把存儲單元分為K組{G_1, - -, G_K}。每組包括一個內(nèi)部存儲器c_k、輸出門o_k和遺忘率r_k。不同組的遺忘率被壓制在不同的范圍內(nèi)。LSTM修改如下:

為了更好地區(qū)分每組的不同作用,其遺忘率被squash到一個明顯的區(qū)域。squash函數(shù)ψ_k(z)可以被形式化為:

圖5 模型架構(gòu)。不同風(fēng)格的箭頭表示不同的遺忘率。將帶有星星的組送入全連接層進(jìn)行softmax分類。下面是一個B-CLSTM的實例,文本長度等于4,記憶組的數(shù)量是3

雙向CLSTM(B-LSTM)模型利用了額外的后向信息,從而增強(qiáng)了記憶能力。作者繼續(xù)向CLSTM上引入雙向機(jī)制,文本中的單詞能夠從上下文中獲得信息。形式上,第k組的前向LSTM的輸出為:

第k組的后向LSTM的輸出為:

因此,將給定文本w_1:T中的每個詞wt編碼為(h_k()^t):

至此,用于文檔級情感分類的特定任務(wù)輸出層具有了對長文本進(jìn)行建模的能力,可以使用本文提出的模型來分析文檔中的情感。

項目SOTA!平臺項目詳情頁

CLSTM

前往 SOTA!模型平臺獲取實現(xiàn)資源:/project/clstm

二、Aspect level

4、 TD-LSTM/TC-LSTM

本文首先提出了一種基本的長短期記憶(LSTM)方法,建模一個句子的語義表示,而不考慮被評價的目標(biāo)詞。然后,考慮目標(biāo)詞對LSTM進(jìn)行擴(kuò)展,得到目標(biāo)依賴的長短期記憶模型(TD-LSTM)。TD-LSTM是對目標(biāo)詞與其上下文詞的相關(guān)度進(jìn)行建模,并選擇上下文的相關(guān)部分來推斷指向目標(biāo)詞的情感極性。該模型采用標(biāo)準(zhǔn)的反向傳播方法進(jìn)行端到端的訓(xùn)練,其損失函數(shù)為監(jiān)督情感分類的交叉熵誤差。最后,對目標(biāo)連接的TD-LSTM進(jìn)行了擴(kuò)展,其中,合并目標(biāo)與上下文詞的語義關(guān)聯(lián)。

圖6 基本長短期記憶(LSTM)方法及其用于目標(biāo)相關(guān)情感分類的目標(biāo)相關(guān)擴(kuò)展TD-LSTM。其中,w代表長度為n的句子中的詞,{w_l+1, w_l+2, …, w_r-1} 為目標(biāo)單詞,{w_1, w_2, …, w_l}是前面的上下文單詞,{w_r, …, w_n?1, w_n}是上下文詞

如圖6,TD-LSTM是以目標(biāo)詞為分界點利用兩個LSTM,從目標(biāo)詞的左右向目標(biāo)詞方向進(jìn)行上下文信息融合。具體來說,使用兩個LSTM神經(jīng)網(wǎng)絡(luò),一個左LSTM L和一個右LSTM R,分別對前面和后面的上下文進(jìn)行建模。LSTM L的輸入是前面的上下文加上目標(biāo)字符串,LSTM R的輸入是后面的上下文加上目標(biāo)字符串。從左到右運(yùn)行l(wèi)stm l,從右到左運(yùn)行l(wèi)stm r,因為作者認(rèn)為將目標(biāo)字符串作為最后一個單元可以更好地利用目標(biāo)字符串的語義。然后,將LSTM L和 LSTM R的最后一個隱藏向量連接到一個softmax層,對情感極性標(biāo)簽進(jìn)行分類。還可以嘗試對LSTM L和LSTM R的最后隱藏向量進(jìn)行平均或求和。TD-LSTM相較于LSTM可以更好的結(jié)合上下文的信息,但是人在閱讀時除了會考慮到上下文信息,還會考慮到語境,就是目標(biāo)詞與上下文之間的交互關(guān)系。由此本文提出了TC-LSTM,TC-LSTM就是簡單粗暴的在輸入上concat一個目標(biāo)詞的向量表示。該組件在構(gòu)成句子時明確地利用目標(biāo)詞與上下文詞之間的連接。目標(biāo)字符串t,將目標(biāo)t表示為{w_l+1, w_l+2…, W_r?1},因為目標(biāo)可以是可變長度的單詞序列,通過對t所包含單詞的向量進(jìn)行平均,得到目標(biāo)向量v_target。TC-LSTM與TD-LSTM模型的區(qū)別是在TC-LSTM中,每個位置的輸入是單詞嵌入和目標(biāo)向量v_target的連接。TC-LSTM可以更好地利用目標(biāo)詞和上下文詞之間的聯(lián)系來構(gòu)建句子的表征。

圖7目標(biāo)連接長短期記憶(TC-LSTM)模型用于目標(biāo)依賴的情感分類,其中w代表長度為n的句子中的詞,{w_l+1, w_l+2, ..., w_r-1}是目標(biāo)詞,v_target是目標(biāo)表示,{w_1, w_2, ..., w_l}是前面的上下文詞,{w_r, ..., w_n-1, w_n}是后面的上下文詞

最后,模型訓(xùn)練交叉熵?fù)p失函數(shù):

其中,S為訓(xùn)練數(shù)據(jù),C為情感類別數(shù),s為一句話,Pc(s)是通過softmax層給出的預(yù)測s為C類的概率,(P_c)^g (s)表示C類是否是正確的情感類別,其值為1或0。通過反向傳播對損失函數(shù)對所有參數(shù)求導(dǎo),并用隨機(jī)梯度下降法更新參數(shù)。

項目SOTA!平臺項目詳情頁

TD-LSTM

前往 SOTA!模型平臺獲取實現(xiàn)資源:/project/td-lstm-2

前往 SOTA!模型資源站()即可獲取本文中包含的模型實現(xiàn)代碼、預(yù)訓(xùn)練模型及API等資源。

網(wǎng)頁端訪問:在瀏覽器地址欄輸入新版站點地址,即可前往「SOTA!模型」平臺,查看關(guān)注的模型是否有新資源收錄。

移動端訪問:在微信移動端中搜索服務(wù)號名稱「機(jī)器之心SOTA模型」或 ID「sotaai」,關(guān)注 SOTA!模型服務(wù)號,即可通過服務(wù)號底部菜單欄使用平臺功能,更有最新AI技術(shù)、開發(fā)資源及社區(qū)動態(tài)定期推送。