はじめに
本記事はQiita初投稿となります。
自然言語処理(NLP)の研究開発に従事しており、今回は弊団体のアドベントカレンダー向けに執筆しています。
研究内容はまだ発展途上ではありますが、この機会に研究中の知見を共有できれば幸いです。
本記事では、GCNで係り受けを考慮することで、テキスト中の不要な情報を刈り込むメリットについて解説します。 情報を刈り込むメリット」について解説します。
関連研究をまとめたリポジトリも作成したのでそちらも合わせて読んでいただけると幸いです
また,間違ってるところの指摘や質問などあれば気兼ねなくコメントしていただけると非常に助かります(指摘&質問うれしい!!)
目次
まとめ:文法的に刈り込めるうれしさ
GCNのなにがうれしいの?
係り受けのなにがうれしいの?
基本的なモデルアーキテクチャ
主な応用先
まとめ
まとめ:文法的に刈り込めてうれしい
例えば以下のような感情ラベル分類の例を考えます。
The atmosphere is unheralded, the service is impeccable, but the food is terrible.
(雰囲気は気にならん、サービスは文句のつけようがないけど、食事はひどいぜ)
atmosphere → neutral
ここで "atmosphere" に対して "neutral" という感情ラベルを付与する際、"service" や "food" の情報は不要です。
Transformerベースのモデルは全トークン間の関係を考慮するため、不要な単語にも注意を割いてしまう可能性があります。
引用元
S2GSL: Incorporating Segment to Syntactic Enhanced Graph Structure Learning for Aspect-based Sentiment Analysis (Chen et al., ACL 2024)
このような余計な情報を刈り込むことができるのが、係り受けで×GCNを用いることのうれしさです。
GCNのなにがうれしいの?
GCN(Graph Convolutional Network)についてこれを使うことのうれしさについて解説します。
GCNやGNNの基本的な解説は省略します、気になるかたは佐藤竜馬先生の解説記事などにわかりやすく解説されているのでそちらを参照してください、
ひとことで言えば、GCNが扱うグラフ構造をとその畳み込みを行うことで、余計な情報を「明示的に重みを0することによる刈り込む」ことができるのです。
たとえば先ほどの例では、"atmosphere"に関連しない単語へのエッジを0化(接続を切る)することで、モデルが不要な情報に引きずられなくなります。
The | atmosphere | is | unheralded | , | the | service | is_2 | impeccable | ,_2 | but | the_2 | food | is_3 | terrible | . | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
The | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
atmosphere | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
is | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
unheralded | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
, | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
the | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
service | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
is_2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
impeccable | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
,_2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
but | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
the_2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
food | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
is_3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
terrible | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
. | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
このようにtransfomerのようなモデルではできない「明示的に重みを0にすることによる刈り込む」ことができるのがGCNのうれしさです。
係り受けのなにがうれしいの?
係り受けを考慮することでなにがうれしいのかを解説します。
ここで扱う係り受けはUniversal Dependencies(UD)に基づいた係り受けです。
以下に例を示します。
これが基本的な係り受けです。
これを木構造にすると以下のようになります。
ここで係り受けはトークンで分割された文章を有向グラフに変換したものという読み替えができます。
GCNの入力は有向グラフですから係り受けは入力として適していると言えます。
また、係り受けやその周辺の研究や各種ツールは深層学習以前から大量に存在しており、それらをそのまま利用できることは大きなメリットです。
基本的なモデルアーキテクチャ
係り受けを考慮するGCNの基本的なモデルアーキテクチャを解説します。
基本的なモデルアーキテクチャは以下のようになります。
- Transformerなどでトークン表現(埋め込み)を抽出
- 抽出した特徴をGCNに入力し、係り受け構造を反映しながら情報を精選
- 不要情報が刈り込まれた特徴表現を用いて最終的な予測タスク(感情分類、関係抽出など)を行う
多くのモデルが最初にTransformerを用いてトークンの特徴量を抽出し、その後GCNを用いて係り受けを考慮しながら刈り込み、重み更新を行います。
最終的な出力はタスクによって異なります。
主な応用先
係り受けを考慮するGCNは、様々な分野で応用されています。
例えば関係抽出タスク(Reration Extraction)や感情ラベル分類タスク(Sentiment Analysis),少し古いものであれば意味役割ラベリング(Semantic Role Labeling)などがあります。
以下のリポジトリでまとめていますので、気になる方はご覧ください。
https://github.com/shin0729/awesome-dependency-aware-GCN
また、リポジトリへのプルリクエストやissueも歓迎しています!
まとめ
以上が係り受けを考慮するGCNのメリットについての解説でした。
係り受けを考慮するGCNを中間的に適応させるという単純な手法ながらも、性能を向上させることができるのは非常にうれしいメリットだと思います。
また、係り受けは既存研究で多くの知見が蓄積されているため、それを活用することができるのも大きなメリットです。
ご質問・ご指摘などありましたらお気軽にコメントいただけますと幸いです。