# グラフニューラルネットワークによるアスペクトベースの感情分析

樊惠†，杉本徹 $!$
}

†芝浦工業大学大学院 理工学研究科, †芝浦工業大学 工学部

\{ma20079, sugimoto\}@shibaura-it.ac.jp
## 1 はじめに

アスペクトに基づく感情分析（Aspect Based Sentiment Analysis 以下 ABSA）は感情分析タスクの一つであり，テキストを文レベルではなく単語レベルにタグ付けをする感情分析である．例えば「The food is delicious, but the service is too bad.」というレビユーを考える．文レベルの感情分析手法はこのようなポジティブとネガティブの両方を含むレビューを分析しにくい. 一方, ABSA は単語による分析を行う手法なので，このレビューに対し「food」と「service」 を抽出し，タグを付けることができる。

ABSAのタグはアスペクト「B(はじめ), I(中間),

$\mathrm{E}($ 終わり), S (シングル), O (無感情)」と感情「pos (ポジティブ), neu (中立的), neg (ネガティブ)」 から構成される.従来の研究は, 図 1 に示すように, タグを aspect と polarityに分けてそれぞれに予測する. あるいは, 2 種類のタグをまとめ (unified), 同時に予測する手法もある[1]. Li ら [2]は BERT モデルを使ってまとめたタグを予測し,「SemEval-2014 Task 4 Laptop」[3]において micro-f1 61.12\%を得た.

図 1 ABSAのタグ付け

しかし，ABSAに使用されるデータは短いテキストが多いので，夕グの予測に使える情報量が少ないという問題が存在している.

本研究は, 分析対象テキストにおける依存関係などの単語間の関係の情報を導入することで, 情報量を増やすことを試みる．単語間の関係は通常グラフ構造なので, 一般的なニューラルネットワークに適用できない. そのため, 近年複数の分野でうまく機能することが示されているグラフニューラルネットワーク（以下 GNN）を用いる. この方法で, ABSA における情報量不足の問題を解決できる.

## 2 提案手法

本研究で提案するモデルの構造を図 2 に示す.まず，レビュー文をグラフ化し，モデルに入力する. そしてタグを予測する。最後に，従来手法により構築したモデルと比較して，結果を評価する。

$\hat{v}$

図 2 モデルの構造

## 2.1 テキストのグラフ化

GNN に入力するデータはグラフのノード特徴量とノードの隣接情報である。本研究は，文を単位としてグラフを構築する．各文の単語をグラフのノー ドとして扱う．そして，BERT モデルが出力したべクトルをノード特徴量とする. ノードの隣接情報を単語間の依存関係または self-attention により作る。

## 2.2 Graph Convolutional Network

Graph Convolutional Network[4]（以下 GCN）の原理は各ノードが隣接ノードから特徵量を集約 (aggregate）し，自身の特徴量を更新することである. これで，ニューラルネットワークの順伝搬を行う時に，更新された各ノードの特徴量に隣接ノードの特徴量も含まれ，計算に関連する情報が増えている. GCN の更新式を以下に示す.

$
h_{i}^{(l+1)}=\sigma\left(\sum_{j \in N_{i}} \widehat{D}^{-\frac{1}{2}} \hat{A} \widehat{D}^{-\frac{1}{2}} h_{j}^{(l)} W^{(l)}+b^{(l)}\right)
$

$h_{i}^{(l+1)}$ は第 $1+1$ 層目のノード $\mathrm{i}$ の特徴量

$\sigma$ は非線形活性化関数

$N_{i}$ はノード $\mathrm{i}$ 自身を含めた全ての隣接ノード

$\hat{A}$ はグラフの隣接行列+単位行列 $\widehat{D}$ は $\hat{A}$ 次数行列

$h_{j}^{(l)}$ は第 1 層目のノード $\mathrm{i}$ 自身を含めた全ての隣接ノードの特徴量

$W^{(l)}$ は第 1 層目の重み $b^{(l)}$ は第 1 層目のバイアス

$\widehat{D}^{-\frac{1}{2}} \hat{A} \widehat{D}^{-\frac{1}{2}}$ は隣接ノードの特徴量を集約するための正則化ラプラシアン行列である

## 2.3 Graph Attention Network

Graph Attention Network[5]（以下 GAT）は attention メカニズムを用い，特徴量を集約する。この際，集約するのは隣接ノードからの特徴量だけではなく, グラフの全ノードに対して attention をし, attention 係数を計算する. さらに, BERT モデルの self-attention のように multi-head を用い, よりロバストなモデルになるようにする. GAT の attention 係数の計算式を以下に示す.

$
a_{i j}=\frac{\exp \left(\operatorname{LeakyReLU}\left(a\left[W h_{i} \| W h_{j}\right]\right)\right)}{\sum_{k \in N_{i}} \exp \left(\operatorname{LeakyReLU}\left(a\left[W h_{i} \| W h_{k}\right]\right)\right)}
$

$h_{i}$ はノード $\mathrm{i}$ の特徴量

$h_{j}$ はノード $\mathrm{i}$ と attention 係数を求めるノード $\mathrm{j}$ の特徴量

$[\cdot \| \cdot]$ はノード $\mathrm{i}$ と $\mathrm{j}$ の特徴量を feature transformation を行い，そして二つの新たな特徴量を concat する

$\mathrm{a}(\cdot)$ は concat された特徴量を実数にマッピングする

LeakyReLu は非線形活性化関数

の attention 係数を取得できる。全ノードと attention する必要があるので, softmax を用い, 各 attention 係数を正規化する. そして GAT の更新式を以下に示于.

$
h_{i}^{(l+1)}=\sigma\left(\sum_{j \in N_{i}} a_{i j} W^{(l)} h_{j}^{(l)}\right)
$

$h_{i}^{(l+1)}$ は第 $1+1$ 層目のノード $\mathrm{i}$ の特徴量

$\sigma$ は非線形活性化関数

$N_{i}$ はすべてのノード

$h_{j}^{(l)}$ は第 1 層目のすべてのノードの特敀量

$W^{(l)}$ は第 1 層目の重み

## 3 評価実験

## 3.1 使用するデータとタグ

本研究は「SemEval-2014 Task 4 Laptop」データセノト[3]を用いる.データセットの割合を表 1 に示す.

表 1 データセットの割合

レビュー文とタグのフォーマットを表 2 に示す.

表 2 レビュー文とタグの例

表 3 に示すように，タグの種類は感情タグ「pos, neu,neg」と位置タグ「BIES」の組み合わせ 12 種類と「O」と「eq」である.「O」は無感情単語を表す. BERT モデルは単語辞書による，長い単語を複数のトークンに分割する場合がある。分割された単語の中に「\#\#」を含むトークンは「eq」を付ける.

表 3 タグの全 14 種類

## 3.2 BERT モデルの fine-tuning と埋め込み

本研究のデータセットによりふさわしい埋め込みを取得するために，事前学習済みの BERT モデル[6] を微調整する. エポック数は最大 10 として, 訓練セット全体を 1 回訓練するごとに，検証セットでモデルを評価し，精度を計算する。また，毎回の精度を比較し，最良モデルを保存する． 10 回の訓練を終えた後, 保存したモデルが最適なモデルになる.

レビュー文を微調整した BERT モデルに入力し，

「単語数 $+2,768$ 」次元のベクトルを取得する. BERT モデルの特性により, 出力するベクトルには「CLS」

と「SEP」というトークンがある.この 2 つのトー クンを除くとベクトルは「単語数, 768 」次元になる.

このベクトルをノード特徴量として用いる.

## 3.3 単語間の関係の構築

## 3.3.1 依存関係

「スタンフォード大学 NLP ライブラリ」[7]を用い，依存関係をノードの隣接情報とする，単語と単語の間に依存関係があれば，エッジを作る。

## 3.3.2 self-attention

テキストを BERT モデルに入力した時, selfattention 行列が生成される. self-attention 行列は単語と単語の関連性を示す. 例文「The cat sat on the mat」 に対する self-attention 行列の 1 つを図 3 に示す.

図 3 self-attention 行列

12 層 12 ヘッドの BERT モデルに文を入力すると， このような行列が全部で 144 個生成される. selfattention の非線形活性化関数は softmax なので, 行毎の合計は 1 である. 各行で関連性の値が最大の成分 （図 3 の赤字の所）に対応して, 図 4 の統計行列の対応する位置にある成分に 1 を足す. これを 144 個の self-attention 行列すべてに対して行う.

図 4 最大関連性の統計行列

統計行列において,「CLS」,「SEP」はBERT モデルのトークンであるので，無視する。また，GCN と GAT を計算する時に自己ループを追加するので，自身との関連性（対角成分）も無視する. 残りの成分の中で各行で数値が最大の成分（図 4 の赤字の所） が単語間の強い関連性を表すと考え，対応する行と列の単語間にエッジを作る。

## 3.4 全結合層

特徴量を集約することによって，異なるノードの特徴量が同じ内容になる可能性がある。そのため, GCN/GAT 層とは別に全結合層を用意して concat することにする。これにより，埋め込みの情報をモデルの計算中に維持できる.

## 3.5 GCN と GAT の訓練

## 3.5.1 共通の部分

Batch-size は full-batch を設定する. 学習率と過学習抑制「Weight Decay」は 0.001 と 0.0005 を設定する. Optimizer は Adam を選択する. エポック数は 500 を設定する.クロスエントロピーで損失を計算する.訓練セット全体を 1 回訓練するごとに，検証セットでモデルを評価し， micro-f1 が向上した場合にパラメータを保存する．最後に，保存したモデルをテストセットで評価する.

## 3.5.2 GCN

第 1 層目と第 2 層目は $\mathrm{GCN}$ 層である. 第 3 層目は GCN 層と全結合層の concat である. 第 4 層目はタグを予測する全結合層である.

## 3.5.3 GAT

第 1 層目は 4 ヘッド GAT 層である. 第 2 層目は 1 ヘッド GAT 層と全結合層の concat である. 第 3 層目はタグを予測する全結合層である。

## 3.6 ABSA の評価指標

本研究の評価指標は適合率, 再現率と micro-f1 とする. 出力されたタグの次元は「単語数，タグの種類数」である。活性化関数 log-softmax を適用して， タグを予測する．出力されたタグと正解のタグの中で，感情を持つ 12 種類のタグのみに着目して感情「pos,neu,neg」ごとに集計する[2]. 評価指標を計算する数式を以下に示す.

$
\begin{gathered}
\text { precision }=\frac{\sum_{d} T P_{d}}{\sum_{d}(T P+F P)_{d}} d \epsilon\{\text { pos, neu,neg }\} \\
\text { recall }=\frac{\sum_{d} T P_{d}}{\sum_{d}(T P+F N)_{d}} d \epsilon\{\text { pos, neu,neg }\} \\
\text { micro }-f 1=\frac{2 * \text { precision } * \text { recall }}{\text { precision }+ \text { recall }}
\end{gathered}
$

## 4 実験結果

実験結果を表 4 に示す. 参照モデル 3 種と提案モデル 4 種に対して，テストデータで各モデルを 5 回ずつ評価し，得られた結果の平均を記録した。

参照モデル[2]は，「BERT only」「BERT + Linear（全結合層)」と「BERT + GRU」である. Linear 層と GRU 層はそれぞれに BERT モデルと直接連結し, End-toEnd モデルになる.

提案手法は，単語間の関係として依存関係（SD） と self-attention (SA), GNN として GCN と GAT の組み合わせ計 4 種類のモデルを試した。

図 5 は各モデルの訓練ステップと損失の関係を示す. 図 6 は $\mathrm{GCN}$ と GAT の ROC 曲線を示す.
表 4 実験結果

図 5 ステップと損失の関係

図 $6 \mathrm{ROC}$ 曲線

## 5 考察

表 4 を見ると，「BERT+GAT+依存関係」の組合せが最も高い micro-fl の値を得た. GCN/GAT を用いたモデルの micro-f1 が「BERT only」より高いということは，ABSA タスクにおける GCN/GAT の有効性を示している。 また，BERT モデルと他のニューラルネットワークの組合せよりも高いので, GCN/GAT を用いたモデルは ABSAタスクによりふさわしいと判断できる. ノードの隣接情報を生成する 2 つの手法（依存関係と self-attention）を比較すると, 結果に
ほとんど差が無かった。レビューの単語数は多くないので，単語間の関係はあまり複雑ではない。そのため,ノードの隣接情報を生成する手法を変えても，結果にあまり影響がなかったと考えられる。

次に図 5 を見ると， $\mathrm{GCN} / \mathrm{GAT}$ を用いたモデルの收束が最も速い。GCN/GAT は固定された BERT モデルの埋め込みを使ったので，モデルの計算中に埋め込みを更新しない。一方，linear または GRU を使う場合は BERT モデルと直接に連結するので， batch ごとに BERT モデルのパラメータも更新する．そのため，毎回埋め込みを改めて計算する必要があるため, GCN/GAT よりも計算に時間がかかり収束も遅くなる.

最後に, 図 6 の ROC 曲線が示すように, ABSA 夕スクに対して GAT モデルは $\mathrm{GCN}$ より良い結果が得られた. 本研究は inductive learning であるので，訓練セットはテストデータを含まない。そのため，テストセットをモデルに入力する時に, グラフの構造の変化が生じた. GCN モデルのパラメータを更新する時に，すべてのノード特徴量を更新する必要があるため, GCN モデルはグラフの構造に影響される.一方, GAT モデルは単にノード間の attention 係数の計算を行うため，グラフの構造の影響を受けないので本研究により適している。

## 6 おわりに

本研究は, グラフニューラルネットワークによるアスペクトベースの感情分析手法を提案した。 GCN/GAT を用いることで, BERT を用いる既存手法よりも良い結果が得られた. グラフニューラルネットワークモデルはグラフ構造のデータを処理できるので，単語間の依存関係などの情報をモデルに入力できる。そのため, モデルの学習における情報量が増えたので，精度が向上したと考えられる。

グラフニューラルネットワークによるアスペクトベースの感情分析は複数のグラフで構成されたノー ド分類タスクである. しかし，レビューの単語数が異なるので，各グラフのノード数も異なる. 今後， グラフのノード数が一致するかどうかが結果にどのくらい影響を及ぼすかを研究する。また，エッジの重みを含むグラフニューラルネットワークもあるので，エッジの重みを付ける手法を考えつつ，このようなグラフニューラルネットワークを研究することも今後の課題である。

## 参考文献

1. Knowing What, How and Why: A Near Complete Solution for Aspect-based Sentiment Analysis. Haiyun Peng, Lu Xu, Lidong Bing, Fei Huang, Wei Lu, Luo Si .AAAI 2020, 2019 年.

2. Exploiting BERT for End-to-End Aspect-based Sentiment Analysis. Xin Li, Lidong Bing, Wenxuan Zhang, Wai Lam. Association for Computational Linguistics, 2019 年.

## 3. SemEval-2014 Task 4.

https://alt.qcri.org/semeval2014/task4/data/uploads/lapto ps-trial.xml, 2020-8 閲覧.

4. Semi-Supervised Classification with Graph Convolutional Networks. Thomas N. Kipf, Max Welling. ICLR 2017, 2017 年.

5. Graph Attention Networks. Petar Veličković, Guillem Cucurull, Arantxa Casanova, Adriana Romero, Pietro Liò, Yoshua Bengio. ICLR 2018, 2018 年.

6. BERT-base-uncased. 12-layer, 768-hidden, 12-heads, 110M parameters.

https://pytorch.org/hub/huggingface_pytorch-transform ers, 2020-4 閲覧

7. Stanza: A Python NLP Library for Many Human Languages.

https://github.com/stanfordnlp/stanza/, 2020-9 閲覧.