A Joint Model for Document Segmentation and Segment Labeling

tacorico·2021년 7월 11일
1

논문 링크

Introduction

Text Segmentation

Text segmentation task는 NLP의 다른 여러 task에서 선행 task로 많이 사용된다. 인접한 부분으로 텍스트를 나눔으로써 잠재된 문서의 구조를 파악할 수 있다. Segmentation task와 함께 많이 수행되는 task로는 Topic Modeling(or classification)을 생각해 볼 수 있는데, 두 개의 task는 서로 상호보완적이다. 잘 생각해보면, 주제를 뽑아내는 task(topic modeling)와 주제별로 문단을 나누는 task(Text segmentation)가 선행 관계를 나누기 어렵다는 것을 쉽게 생각해 볼 수 있다. 이 논문의 저자들도 같은 관점에서 두 개의 task를 나누는 것이 아니라 하나의 model에서 수행하는 것이 장점이 많다고 한다. 이 논문에서는, Document Segmentation과 Segment Labeling을 함께 수행할 수 있는 Segment Pooling LSTM을 제안한다.

Structure

Segment Pooling LSTM(under S-LSTM)은 segment bound를 예측하고 모으고 segment를 분류하도록 학습된 supervised model이다. 모델은 크게 세 부분으로 나눠진다.
  1. Sentence Encoder
  2. Segment Predictor LSTM
  3. Segment Pooling Network

Sentence Encoder

S-LSTM은 어떤 Sentence Encoder를 사용해도 상관없지만, 이 논문에서는 concat pooled bi-directional LSTM을 Sentence Encoder로 사용한다. 그림에서 보는 것과 같이, 문장 sis_i를 구성하고 있는 각각의 word들이 LSTM model을 통과하면서 embedding되고 모든 hidden state의 최댓값과 평균이 final hidden state에 concat되고 이것을 sentence sis_i에 대한 embedding으로 사용한다.

Segment Predictor LSTM

Segment boundary를 예측하기 위해서 각각의 문장을 넣고 indicator variable을 예측한다. Beginning 또는 Inside로 예측하는 binary classification task로 학습하여 Segment Boundary를 예측한다.

Segment Pooling

이렇게 각각의 sentence vector와 segment에 대한 정보가 주어지면 segment 별로 pooling을 해서 하나의 embedding vector를 생성한다. 이 때, sequence to vector 알고리즘은 많지만, 실험적으로 단순 averaging에 비해서 concat pooling LSTM가 더 좋은 segment label을 만들어 낸다고 한다. 그리고 마지막으로 segment pooler의 output에 classifier를 달아서 각각의 segment에 대한 분포를 label을 통하여 제공할 수 있다. Segment Prediction과 Pooling은 이전의 계층적 LSTM 모델과 차이가 나는 점이다. 이 모델은 segment를 동적으로 예측하고 label하고 predicted segment에 대해서 single vector를 생성한다.

Segment Alignment

Segment는 학습 시간에 동적인 것으로 간주되기 때문에, predicted segment와 ground truth segment를 aligning 함으로써, 잠재적으로 올바르지 않은 segments에 label을 assigning 하는 방법을 제안한다. 이 label assignment는 segment-labeling loss가 end-to-end model을 통해서 전파되도록 한다.

Teacher Forcing

Teacher Forcing이란 수렴을 돕기 위해서 ground truth를 model prediction의 결과에 사용하는 것을 말한다. S-LSTM의 경우에는, training time에 ground truth를 segment pooler에 feeding한다.
사실 무슨 말인지 잘 모르겠다.

Exploration

당연하게도 단순히 ground truth를 segment pooler에 집어넣는 것으로는 segment labeler가 segmentation의 error에서 복구하는 법을 가르칠 수 없을 것이다. 처음에는 아무것도 학습이 되어 있지 않기 때문에 ground truth segment bounds만 넣고, 학습이 진행되고 segmentation 정확도가 수렴하기 시작하면, predicted와 ground truth의 aligning으로 변경한다. 이렇게 하면 segment pooler가 segmentation error에 robust하다고 한다.
이건 또 무슨 말이야

Joint Training

Joint Training을 수행하려면 multi-task loss를 사용하여 학습한다.
L(X,y;θ)=αLseg(X,yseg;θseg)+(1α)Lcls(X,ycls;θcls,aligner)L(X,y;\theta)=\alpha \cdot L_{seg}(X,y_{seg};\theta_{seg})+(1-\alpha)\cdot L_{cls}(X,y_{cls};\theta_{cls},aligner)

Datasets & Evaluations

WikiSection 데이터를 사용한다.

Evaluation Mesure

Segmentation: Pk
Classification: F1, MAP, Prec@1

Conclusion

S-LSTM 모델은 4개의 데이터셋에 걸쳐서 평균적으로 30% 가량의 segmentation error를 감소했으며 segment labeling 성능도 증가시켰다.

profile
우당탕탕 자연어 일기

0개의 댓글