Position-Aware Tagging for Aspect Sentiment Triplet Extractionを読む
概要
レビューの様な自然文からtarget, opinion, sentimentのtriplet( 例=(“salmon”, “fresh”, positive))をEnd-to-Endで抽出する手法を提案。BERTで各TokenをEmbeddingした後に、Tokenの単語ベクトルとToken間の単語ベクトルの差分を特徴量としてCRFによってタギングを行う。SemEvalのデータセットをもとに構築したデータセットで評価を実施し、既存手法より高い精度が得られた。
accepted by EMNLP 2020
著者
- Lu Xu (StatNLP Research Group, Singapore University of Technology and Design; DAMO Academy, Alibaba Group)
- Hao Li (StatNLP Research Group, Singapore University of Technology and Design; ByteDance)
- Wei Lu (StatNLP Research Group, Singapore University of Technology and Design)
- Lidong Bing (DAMO Academy, Alibaba Group)
問題設定
target、opinion、sentiment(polarity)のtripletを抽出するタスク。
Figure 1の例だと以下になる。
- target: food, vegan options
- opinion: so so, excited
- sentiment(polarity): 0 = neutral, + = positive, - = negative
target、opinionのspan、targetとopinionの組み合わせ、polarityの全てが合っている時のみ正解。
ASTE = Aspect Sentiment Triplet Extraction
提案手法
JET(= Jointly Extract the Triplets)を提案。
JETはEnd-to-Endでtripletの抽出を行う。JETには との2種類がある。上付き文字のtとoはそれぞれtargetとopinion。
先に を説明する。の出力はFigure 2の○で囲まれたSやOやBの文字の部分。これをtoken毎に出力する。
JETはNERの様なタグ付けを行っており、BIOESを使っている(common tagging schemeらしい)。B=Begin, I=Inside, O=Outside, E=End, S=Single。Entityが1tokenの場合、Bを1つではなくSを使う(そのためfoodがSで、vegan optionsはBとE)。
ではtargetのentityにBIESでspanが表現される。その際、BとSのみ上付き文字と下付き文字があるが、下付き文字はopinionの開始位置と終了位置のtargetからのoffset、上付き文字はopinionに基づくpolarityを示している(0 = neutral, + = positive, - = negative)。
はBIESを付けるentityをtargetではなくopinionにしたもの。offsetで指す先もopinionではなくtargetになる。それ以外は全て同じ。を表すFigure 2とを表すFigure 4を見比べるとわかりやすい。
既存手法では"The salad is cheap with fresh salmon"という文で (“salad”, “cheap with fresh salmon”, positive)と (“salmon”, “fresh”, positive)という重複するtripletが存在する時に対応できないが、提案手法では対応できる(このケースは なら可能だがでは無理。しかし、"salmon is cheap and fresh"みたいな文では逆にでは可能だが、 では無理ということになると思われる)。
余談
複数のtargetやopinionが考慮されているのは良いが、"サラダの値段も味も良い"(英語だと"Good prices and taste for salads."になる?)から("サラダの値段", "良い", +)、("サラダの味", "良い", +)の2つのtripletを抽出することは難しそう。恐らくこの手法では("サラダの味と値段", "良い", +)が正解になると思われる。2つのtripletにしたい場合は、("サラダの味と値段", "良い", +)を後から分割した方が良いのかもしれない。
Architecture
以下のFigure 3に示すネットワークで、Token毎にVectorを出力する。出力したVectorを入力としてCRFとSemi-Markov CRFでタギングする。
はi番目のTokenをEmbeddingして得られたVector。
はBiLSTMの隠れ層のVector(後の実験ではBERTに置き換えて最終層のVectorを使ったパターンもある)。
]で表され、ベクトルの差分のconcatnateになっている。
これらを入力に、まずはが5つのベクトルを出力するので、これを用いてBIOESのタギングを行う。
このタグがBかSの時は更に追加で (offsetがj,kの時の極性用に3つのベクトルを出力)、とがそれぞれ1つずつベクトルを出力するのでopinion spanのoffsetを決定する(と思われる)。はopinion spanに該当するsegmentの特徴量で、はoffsetのposition embeddingのようなもの。
最終的にToken毎にを出力することになる(は極性、はoffset)。
はCRFとSemi-CRFで一気に出すようだがよく分からない。
Mがoffsetを最大幾つまでするかを表している。
Mは[2,6]でしか動かしておらず、計算オーダーはToken毎に、文のToken数がnの時は全体の計算オーダーがと書いてある。従って、例えばM=2の時はToken毎に] みたいなマルチクラス分類のタスクをCRFで解いていると思われる。
実験
データセット
Rest=Restaurant, Lap=Laptop
学習時にtripletのoffsetがMを超えるデータは削除する。
既存手法との比較
精度の傾向としては 既存手法 < < 。
論文中には書いていないが、 の方が精度が高いのは「サーモンは安くて新鮮」といったtarget(サーモン)が複数のopinion(安い, 新鮮)を持つデータセットが多いのではないかと思われる。
とはBiLSTMを使っているが、BERTに置き換えると精度が上がっている。ただし、上がり幅はデータセットによってまちまち(のF1で14Lapだと9.7ポイントも上がるが、16Restだと0.6ポイントしか上がらない)
ロバストネスの評価
Figure 5はtarget, opinion span, offsetが長さに応じてF値がどう変化するかを表している。特定のパターンだけ当たっているのかどうかの評価?
offset(targetとopinionの間隔)は広がるほどF値が下がる。
targetはentityの数が増えるほどF値が下がるが、の時だけentity数=6で一気に上る(理由の記載なし。長さ6のtargetがデータセットに多いだけ?)
opinion spanもentity数が増えるほどF値が下がるが、entity数=4で一度上がる(理由の記載なし。長さ4のopinionがデータセットに多いだけ?)
Figure 5を見てentityの境界を当てるのが難しいのでは?ということで、targetとopinion spanの境界の先端か終端のどちらかがあっていれば正解として評価したのがFigure 6。
T=target, O=opinion, S=Sentiment。先端か終端のどちらかが合っていれば正解としたものはと。
はややopinionの部分一致が多く、はtargetの部分一致が多い。即ち、offsetで抽出しにいく対象が正しくspanを当てることが難しいと思われる。
予測結果のサンプル
Ablation Study
offset feature()が最も効いている。
character embeddingを追加すると、ノイズになり逆に精度が下がるケースが多い。
アンサンブルの効果検証
、単体だとそれぞれ抽出できないパターンがあるので結果をマージして評価する。
はをベースにを足す。はその逆。
Recallは上がっているのでマージする効果は出ているが、Precisionは下がってしまうのでF値は微増という状況。