您的位置:首頁 >聚焦 > 關注 >

焦點日報:經典情感分析模型總結(上)

2023-06-23 14:08:53 來源:機器之心

機器之心專欄

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

本文將分 3 期進行連載,共介紹 18推薦系統任務上曾取得 SOTA 的經典模型。


【資料圖】

第 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!模型資源站()即可獲取本文中包含的模型實現代碼、預訓練模型及 API 等資源。

本期收錄模型速覽
模型SOTA!模型資源站收錄情況模型來源論文
CNN/project/textcnn收錄實現數量: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收錄實現數量:11支持框架:PyTorch,TensorFlow等Effective LSTMs for Target-Dependent Sentiment Classification

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

一、Document level/Sentence level

1、 CNN

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

圖1有兩個通道的例句的模型結構

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

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

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

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

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

2、GRNN

這篇文章引入了一個神經網絡,以統一的、自底向上的方式來學習基于向量的文本表示方法。該模型首次使用CNN/LSTM來學習句子表示,利用Gated RNN自適應地對句子的語義及其之間關系進行編碼。

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

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

圖3使用卷積神經網絡進行句子合成

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

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

圖4 用門控遞歸神經網絡進行文本文建模。GNN代表了門控遞歸神經網絡的基本計算單元

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

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

然后通過反向傳播對整個參數集求損失函數的導數,使用隨機梯度下降算法更新參數:

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

3、 CLSTM

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

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

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

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

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

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

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

項目SOTA!平臺項目詳情頁

CLSTM

前往 SOTA!模型平臺獲取實現資源:/project/clstm

二、Aspect level

4、 TD-LSTM/TC-LSTM

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

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

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

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

最后,模型訓練交叉熵損失函數:

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

項目SOTA!平臺項目詳情頁

TD-LSTM

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

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

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

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