[NAACL21] [Graph Convolutional Networks for Event Causality Identification with Rich Document-level Structures]
생애 첫 논문 세미나라서 기록!
https://aclanthology.org/2021.naacl-main.273/
Graph Convolutional Networks for Event Causality Identification with Rich Document-level Structures
Minh Tran Phu, Thien Huu Nguyen. Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2021.
aclanthology.org
1. Introduction
Event Causality Identification (ECI)이란?
텍스트에서 event mention의 pair에 대해서 인과관계 (Causal Relation)이 있는지 알아내는 것
기존의 Feature-based/Deep Learning methods는 인과관계 존재 유무를 알고 싶은 event mention pair가 한 문장에 있다고 가정하고 ECI를 수행했다. 하지만 이러한 가정은 문제가 몇가지 있는데,
1. event mention이 한 문장에 있는 것이 아니라 여러 문장에 있는 경우 (inter-sentence scenario) 성능이 떨어진다.
2. 문서의 전체적인 정보 (Document-level informaiton)를 사용하지 못한다.
그래서 이 논문에서는 여러 문장에 event mention pair가 걸쳐 있는 경우에도 잘 작동하고, 문서 전체적인 정보를 사용하는 Document-level ECI (DECI)를 위한 방법을 제안한다.
큰 구조를 보자면 문서의 다양한 정보를 조합하여 interaction graph를 만들고 만든 그래프를 graph convolutional network에 학습시켜서 인과관계 추론을 할 수 있도록 한다.
2. Structure generation
Document Encoder
먼저 문서의 있는 모든 단어를 BERT에 통과시켜 문맥 정보를 가지고 있는 임베딩을 얻는다. 한 단어가 여러개의 word piece로 나눠질 경우, BERT를 통과한 word piece들의 평균 벡터를 단어의 임베딩으로 한다.
Structure Generation
Graph Convolutional Network에 사용될 interaction graph를 만든다.
interaction graph를 구성하는 node는 문서 안의 단어 D, event mention E, event entity M 집합으로 이루어진다.
interaction graph는 인접 행렬 방식으로 표현하고, 인접 행렬에서 i번째 행, j번째 열의 값은 node i의 정보를 표현하기 위해 node j가 얼마나 많은 영향을 끼쳤는지를 보여준다.
interaction graph의 edge는 크게 3가지 종류의 edge로 이루어지고 세부적으로는 6개의 edge로 이루어진다.
1. Discourse-based edges
여러 문장 간의 정보를 담기 위한 edge
1-1 Sentence Boundary
node에 존재하는 event mention/event entity에 대하여 두 node가 한 문장에 있으면 1, 다른 문장에 있으면 0을 할당한다.
1-2 Coreference Structure
node에 존재하는 event mention/event entity에 대하여 두 node가 같은 것을 가르키고 있다면 (correfence) 1, 아니라면 0을 할당한다.
1-3 mention span
앞에서 언급한 두개의 edge는 event mention/event entity에 대해서 계산하지만, mention span은 문서의 모든 단어 D에 대해서 계산한다. 문서의 단어가 event mention/event entity에 포함된다면 1, 아니라면 0을 할당한다. (event mention/event entity가 하나의 명사가 아니라 구로 이루어진 경우도 있어서 span이라는 표현을 쓴 것 같다.)
2. Syntax-based edges
문장을 문장의 구조를 보여주는 dependency tree로 파싱하여 node가 dependency tree에서 연결되있다면 1, 아니라면 0을 할당한다.
3. Semantic-based edges
3-1 Context-based semantic
문서의 모든 단어 D에 대해서는 document encoder에서 얻었던 BERT를 통해 얻은 임베딩을 사용한다.
event mention/event entity에 대해서는 event mention/event entity의 span에 있는 모든 단어의 임베딩에서 max-pooling을 적용시켜 임베딩을 얻는다.
각 node에 대해 얻은 임베딩을 v라고 할때, attention과 비슷하게 key, query 벡터를 만들고, 점수를 얻는다. (kq)
그리고 각 점수를 정규화 해준다.
3-2 Knowledge-based semantic
각 node를 WordNet의 synset에 할당하고 각 synset의 similiarity를 Lin similarity를 통해서 계산한다.
Structure Combination
앞에서 얻은 6개의 점수로 벡터 d를 만든다.
각 점수의 가중치에 해당한다고 볼 수 있는 벡터 q를 통해 점수를 얻고 이를 정규화하여 최종 interaction graph의 한 원소를 얻는다.
만들어진 interaction gragh G와 그것을 표현하는 인접행렬 A, 그리고 각 노드를 표현하는 초기 벡터는 context-based semantic에서 얻는 벡터로 해서 graph convolutional network를 구성한다.
Representation Regularization
하지만 생성된 interaction graph의 edge 중에 값이 작은 edge는 오히려 필요없는 정보를 줄 수 있다. 그래서 이 논문에서는 좀 더 sparse한 행렬을 만들어 graph convolutional network를 통과시켜 학습 시킬 필요가 있다고 한다.
Loss
학습 시 Loss는 2가지로 구성되는데,
1. 처음 만들었던 interaction graph로 graph convolution network를 통과 시켜 얻은 node representation vector와 같은 원리로 sparse graph를 통해 얻은 node representation vector의 mean squared error
2. 우리가 인과관계가 있다고 생각하는 event mention/event entity의 representation vector를 가지고 feed-forward-network를 통과시켜 인과관계가 있을 확률을 예측하게 하는데, (binary classification) 이 확률에서 얻은 negative log-likelihood function
2가지의 loss를 합쳐서 최종 loss는
3. Experiments
이 논문에서 제안한 모델은 RichGCM으로 명명하고 있다.
3-1. EventStoryLine Dataset에 대해서 얻은 예측 결과의 precision, recall, f1-score는 다음과 같다.
3-2. Causal-TimeBank Dataset에 대해서 얻은 예측 결과의 precision, recall, f1-score는 다음과 같다. Causal-TimeBank에는 event mention이 여러 문장에 걸쳐 있는 intra-sentence에 해당하는 경우가 많지 않아 inter-sentence에 대해서만 측정했다.
3.3. Abalation Study
RichGCN - "구성 요소" 는 RichGCN에서 구성요소를 제외한 모델을 의미한다. EventStoryLine에 대한 결과이다.
3.4 Cross-Topic Evaluation
source topic에 대해 학습시키고, target topic에 대한 텍스트가 주어졌을 때 성능을 나타낸다. source topic과 target topic간의 유사성을 측정하여 유사성이 low, medium, high일 때 결과를 보여준다.