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

樊惠†，杉本徹 $!$
}

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

\{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 閲覧.
 樊惠†，杉本徹 $!$ }  †芝浦工業大学大学院 理工学研究科, †芝浦工業大学 工学部  \{ma20079, sugimoto\}@shibaura-it.ac.jp 