【情感分析】基於Aspect的情感分析模型總結(二)
- 2020 年 3 月 5 日
- 筆記
轉載自:NewBeeNLP
繼續之前的ABSA之旅

Interactive Attention Networks for Aspect-Level Sentiment Classification(IJCAI2017)[1]
這篇文章作者的思路也是將target和context進行交互獲取句子的準確表達,利用的模型是attention。與上面幾個模型不同的在於,這裡考慮了target可能存在好幾個word組成的短語,另外添加了一層對於target的attention操作用於計算權重。提出了Interactive Attention Networks(IAN), 整體模型框架如下:

1.1 IAN
- 輸入包括n個單詞的「context」: 和m個單詞的「target」 :
- 對輸入進行embedding層後輸入到LSTM網路中得到各個隱狀態表示;
- 對所有隱狀態求平均分別得到target和context的隱狀態表示,以此作為後續attention兩者的交互:
- 分別計算attention權重得分:
- 根據單詞權重計算target和context的最終表示:
- 將 和 拼接起來作為整個輸入句子的向量表示,並送入softmax計算類別概率
1.2 試驗分析
同樣數據集選用的也是SemEval 2014 Task 4,

Multi-grained Attention Network for Aspect-Level Sentiment Classification[2]
EMNLP 2018的一篇論文,作者分析了先前提出的ABSA任務模型的不足:
- 使用的attention mechanism都是屬於粗粒度的(簡單地求和操作),如果對於target word和context都很長的話會引入額外的損失;
- 另外,先前的工作都是將aspect和context視作是單獨的instance進行訓練,沒有考慮到具有相同上下文的instance之間的關聯,而這些關聯很有可能會帶有額外的資訊。
於是提出了一種解決ABSA問題的多粒度注意力網路(Multi-grained Attention Network, MGAN),主要的改進有:
- 「細粒度注意力機制(fine-grained attention mechanism):」 單詞級別(word-level)的target和context之間的交互,可以減少粗粒度attention的損失;
- 「多粒度注意力機制 (multi-grained attention network):」 粗粒度attention和細粒度attention結合;
- 「aspect alignment loss:」 在目標函數中加入aspect alignment loss,以增強context相同而情感極性不同的aspect對context權重學習的差異性。
模型如下,可以分為四個部分:
- Input embedding layer
- contextual layer
- multi-grained attention layer
- output layer

2.1 Input Embedding Layer
輸入embedding層,使用的是預訓練好的Glove,獲得定長的aspect和context向量表示。
2.2 Contextual Layer
將上一步獲得的aspect和context向量矩陣送入雙向LSTM網路來捕獲輸入中詞與詞之間的關聯,得到一個sentence contextual output
和aspect contextual output
。然後這裡就可以把這兩個矩陣進行交互了,但是作者又另外考慮了在上下文中與aspect word距離不同的word應該有不同的權重,引入了「position encoding mechanism」:context中與aspect相距為l的單詞的權重 為:
「注意,aspect中的詞的權重設置為0。」 於是最終得到的優化後的sentence contextual output
為
2.3 Multi-grained Attention Layer
前面的部分可以說跟之前的工作大同小異,重點在於接下來的「多粒度注意力層」。
「(1)Coarse-grained Attention」
粗粒度attention的話跟之前的attention是一樣的,
- C-Aspect2Context:對aspect矩陣Q進行求平均pool得到一個向量表示,將其與context矩陣H交互做attention,
- C-Context2Aspect:這一步是跟C-Aspect2Context對稱的
「(2)Fine-grained Attention」
細粒度attention的目的是刻畫aspect對context或者context對aspect詞與詞之間的影響關係。首先定義H和Q元素之間的相似矩陣U,注意U的形狀為[N * M],U中每個元素 表示context中的第i個單詞和aspect中的第j個單詞之間的相似度,
- F-Aspect2Context刻畫的是對於每一個aspect word,context對其的影響程度。首先求出矩陣U中每一行最大的值,然後對其歸一化操作得到和為一的權重分布後加權求和得到新的H表示
- F-Context2Aspect刻畫的是對於每一個context word,aspect對其的影響程度。首先對U中每一行做歸一化操作,得到N個和為1 的權重表示,然後用N個長為M的向量去和矩陣M逐元素加權求和,最後將這N個新的表示相加取平均,得到aspect最後的細粒度表示。
24 Output Layer
在這一層將上述步驟得到的attention表示拼接起來,作為最終輸入句子的向量表示並送入softmax層分析情感得分。
2.5 Loss Function
模型選用的損失函數為:
其中第一項為交叉熵損失,第二項為單獨設計的aspect alignment loss,第三項為正則化項。這裡需要重點說一下aspect alignment loss。該損失作用於C-Aspect2Context attention部分,C-Aspect2Context attention是用於確定與特定的aspect相關性最高context中的單詞。加上了這個損失,在訓練過程中模型就會通過與其他aspect比較而更加關注對自己更重要的context word。
舉個栗子,在句子I like coming back to Mac OS but this laptop is lacking in speaker quality compared to my $400 old HP laptop
中,通過與不同的aspect Mac OS
相比,speaker quality
應該更關注詞語lacking
,而更少關注like
。
對於aspect列表中的任一對aspect 和 ,首先求出它們對context中某一特定單詞的attention權重差的平方,然後乘上 和 之間的距離 :
2.6 試驗分析

Aspect Level Sentiment Classification with Attention-over-Attention Neural Networks[3]
這篇文章的思路好像跟上一篇很像,模型可以分為四個部分:
- word embedding
- Bi-LSTM
- Attention-over-Attention
- Final Classification

3.1 Attention-over-Attention(AOA)
定義長度為n的句子 和長度為m的target
- 經過雙向LSTM得到的隱狀態表示為矩陣 , ,
- 接著計算兩者的交互矩陣 ;
- 通過對交互矩陣做基於列的softmax和基於行的softmax可以得到target-to-sentence attention 和sentence-to-target attention
- 對beta向量求平均,也就獲得target-level attention:
- 最後再做一次sentence層面的attention:
3.2 試驗分析

Over~PART III馬上達到戰場

本文參考資料
[1]
Interactive Attention Networks for Aspect-Level Sentiment Classification(Ma/IJCAI2017): https://arxiv.org/pdf/1709.00893.pdf
[2]
Multi-grained Attention Network for Aspect-Level Sentiment Classification: https://www.aclweb.org/anthology/D18-1380
[3]
Aspect Level Sentiment Classification with Attention-over-Attention Neural Networks: https://arxiv.org/abs/1804.06536
– END –