elevne's Study Note

Text Summarization 시작해보기 본문

Machine Learning/NLP

Text Summarization 시작해보기

elevne 2022. 11. 11. 21:02

문서요약이란, 1개 혹은 2개 이상의 텍스트로부터 상대적으로 중요한 정보만을 가져와서 간결한 텍스트를 만들어내는 것이다. 

 

 

문서요약은 문서에 Type에 따라 Single-Document, Multi-Document, 그리고 Output Type은 Extractive, Abstractive 형식으로 나뉜다. 

 

 

Single-Document는 input으로 하나의 문서가 들어가는 것, Multi-Document는 여러개가 들어가는 것이다. Extractive와 Abstractive는 다음과 같이 설명할 수 있다.

 

 

Extractive: 원문의 글을 그대로 가져다 사용하는 것. 현재 문서에서 중요한 파트가 어디인지 Highlighting 하는 것이라고 보면 되겠다. 과거부터 지금까지 Abstractive보다는 Extractive 모델이 더욱 많이 사용되었다고 한다. 또 Extractive는 단어 단위보다는 문장을 단위로 중요한 순서대로 선택하는 방법이 있기도 하다.

 

Abstractive: 최근에 들어서 Abstractive Type이 더욱 많이 연구되고 있다. 직접적으로 존재하는 단어가 아니라고 하더라도, 요약 내용이 전달이 더욱 잘 될 수 있도록 다른 단어들을 사용하여 요약을 진행할 수 있다. Abstractive Model은 Large Pre-trained model의 발전에 따라서 성능이 급격하게 증가했다고 한다.

 

 

또한, 문서요약은 Supervised, Unsupervised 두 방식으로 모두 진행이 가능하다. Supervised Learning에는 원문에 사람이 직접 만든 요약문이 달린 데이터셋이 필요할 것이다. 이를 위해서는 매우 많은 양의, 질 좋은 데이터가 필요하다. Unsupervised의 경우에는 주어진 문장에 대해서 중요한 파트가 무엇인지 파악하고, Significance Score를 산출해낸다. 이를 위해서 보통은 문서를 그래프로 표현하고 Sentence가 Node로, Node 간의 관계가 Weight of Edge로 표현된다. 

 

 

 

 

 

 

모델이 생성한 요약문에 대한 Evaluation은 ROUGE Score를 사용하여 진행할 수 있다.

 

Recall-Oriented Understudy for Gisting Evaluation: n-gram recall between a candidate summary and a set of reference summaries. 즉, n-gram이 Reference Summary에 몇 개가 들어있는지; 그 값이 분모가 되고, 분자에는 n-gram의 겹친 갯수가 들어가게 된다. 정확하게는 ROUGE-N이라고 불리고 이는 recall-oriented metric이다. (참고로 BLEU(machine translation에서 자주 사용되는 metric) 은 precision-oriented metric이다). ROUGE-N 외에도 ROUGE-1, 2가 있는데 그 둘은 각각 n-gram이 아닌 unigram, bigram을 단위로 하여 계산을 진행한다. 

 

 

이 Metric이 내용 자체를 파악해서 평가하는 것이 아니기에 Metric이 아직 완벽하지 않다는 것을 알 수 있다. (문법적 오류가 발생해도 알 수 없고, Abstract Type의 요약을 할 때 전혀 다른 언어만으로도 적절한 요약이 가능하다) 2018년에 이런 한계점을 극복하고자 ROUGE-2.0이 제안되었다고 한다. 이 Metric에는 유의어, Topic에 대한 반영이 되었다고 한다.

 

 

 

 

이제 분석방법에 대해서 알아볼 건데 Graph based Model에 대해서 먼저 알아보았다. 이를 알아보기 위해서는 우선 Graph-Base Rank라는 것을 알아야 한다. Graph라는 것은 Node, Edge로 이루어져 있는 하나의 구조체이다. 여기서 Node는 실질적인 객체를 의미하고, Edge는 Node와 Node 사이의 관계를 표현하는 것이다. 

 

 

그래프 안에서 Node의 중요성을 판단할 때는 전역적인 정보 활용, 전체 그래프의 구조를 보고 재귀적으로 결과값을 산출한다. 이 때, Voting과 Recommendation의 개념이 사용된다.

 

 

하나의 Node가 다른 Node에 대해서 Link를 가지고 있으면 이는 Voting이 된 것이라고 한다. 이 때, Voting을 하는 Node의 Importance가 Vote 자체의 Importance를 결정한다. 그래서 어떠한 노드가 중요하다고 판단되기 위해서는 보팅을 많이 받아야 하고, 또 단순히 많은 보팅을 받는 것이 아니라 중요한 노드들로부터 보팅을 받는 것이 중요하다. 대표적인 것이 Page Rank Algorithm이다. (참고로 Page Rank Algorithm을 바탕으로 창업한 것이 Google이라고 한다.) 

 

 

이를 활용해 Summarization을 진행하려면 우선 Text 를 Graph로 만들어야할 것이다. 문장단위로 생각해보자면, 그래프의 하나의 노드를 문장으로 정의하는 것이다. 여기서 Vertex는 Sentence인데 Edge는 그럼 어떻게 연결할 것인가? 여기서 TextRank가 사용된다.

 

TextRank는 i번째 Sentence와 j번째의 Sentence의 Smiliarity를 계산할 때 다음과 같은 공식을 사용한다. 

 

 

 

 

 

 

분자: 두 문장이 함께 포함하는 단어의 수

분모: 로그(단어수i)+로그(단어수j)

 

 

TextRank는 얼마나 두 문장 사이에 같은 단어를 공유하고 있느냐를 알아보는 것이다. 위 TextRank를 사용해서 Vertex가 연결이 되긴 하지만 Undirected(둘 다 동시에 서로에게 투표하는 것)이고, Weighted라고 볼 수 있다. 그래서 Text-Summarization에서는 모든 문장에 대해 Text Rank를 구한 뒤 상위 n개의 문장을 사용하는 것이다. 

 

 

Text Rank 외에도 LexRank라는 것을 사용할 수도 있긴하다. 이 또한 Page Rank Algorithm에 기반하여 Text Summarization을 진행하는 것이다. 이는 TF-IDF Score를 사용한다. 최근에는 Word Embedding을 활용하기 때문에 단순히 위 식을 사용하기보다는 단어 벡터들간의 유사도를 측정하여 진행할 수 있다고 한다. 

 

 

한 단계 더 알아보자면 Div Rank 것이 있는데, Page Rank에서 한 곳에 몰리는 현상을 방지하기 위해 몰려있는 곳에 있는 Node들의 중요도를 다 올리기보다는, 떨어져 있는 곳의 Node들의 중요성을 (다양성을 위해) 올려주기 위해서 Node 중요도를 조정해준다. 

 

 

 

이처럼 Unsupervised 형식으로도 진행할 수 있지만, Neural Network 기반의 Supervised Learning이 최근 많이 연구되었다고 한다. 몇가지 모델들에 대해 알아보았다.

 

 

 

SummaRuNNer

 

문장 내에서는 BiRNN으로 단어 간 연결되어 있으나 문장 간에는 BiRNN으로 연결되어 있지 않음. 문장 수준에서의 Vector들을 추출하여 다시 전체 문서 수준에서의 벡터를 만들어낸다. 

 

 

Sentece Embedding을 할 때 해당 Sentence 벡터는 순방향, 역방향 벡터를 Concat 하여 만들게된다. 그 후 Average Pooling을 진행한다. 이렇게 만든 Sentence Embedding도 Word level에서와 마찬가지로 BiGRU를 해서 문서 벡터를 만든다. 이 Representation이 만들어지면 다시 문장을 지나면서 각 문장이 요약문에 포함될지 아닐지, 그 확률을 만들어낸다. 

이 확률은 문장 정보를 활용하여, 문장의 중요도, 지금까지 만든 요약문과 겹치는지 그 여부, 위치 정보를 사용하여 학습을 진행해서 추출하게 되는 것이라고 한다. 또한, 이 모델에서 목적 함수는 Negative Log-likehood를 최소화 시키는 것.

 

 

 

Seq2Seq RNN-based Abstractive Summarization

 

 

말 그대로 Seq2Seq based Model이다. 입력을 받을 때 단어 벡터만 받는 것이 아니라 품사 정보, TF, IDF 정보도 같이 받는 특징이 있고, Attention Mechanism을 사용하여 Decoder의 단어 생성에 도움을 준다. Encoder, Decoder로 구성되어 있는데 Encoder에는 BiGRU, Decoder은 GRU을 사용한다. 

 

 

여기서 Large Vocabulary Trick(LVT)라는 것이 사용되는데 이는 요약문을 생성할 때 사용하는 단어 사전의 풀은 해당하는 미니 배치에서 사용한 적이 있는 단어들로만 제한하는 기법이다. 한글에서 존재하는 모든 단어를 사용하는게 아니라, 미니 배치 안에서 한 번이라도 사용된 적이 있는 단어만 후보가 된다. 추가적으로 전체 학습을 하고자 하는 Dictionary의 단어들 중, 빈번하게 사용되는 상위 단어들을 추가시켜서 사용할 수 있게끔 한다. 이렇게 함으로써 디코더가 갖는 Softmax-layer의 Size를 줄여줄 수 있다고 한다. Softmax가 사실 가장 병목이 되는 부분인데 이런 과정을 통해 모델 전체의 효율성을 올릴 수 있다. 일반 대화가 아니라 요약문이기에, (요약의 대부분의 단어는 원문에서 가져오니까) 이 방법을 적용해도 문제가 없는 듯 하다.

 

 

또 Switching Generator-Pointer라는 기법을 사용하는데 디코더에서 Generator 대신에 Pointer가 켜지면 단어를 생성하는 것이 아니라 원문에서 중요하다고 생각되지만 보유하고 있는 단어사전에는 없는 단어를 출력으로 직접 가져올 수 있게끔 한다. 이에 대한 후속 연구로 Pointer Generator Networks라는 것이 있다. 이는 위 모델의 Advanced Version이다. Pointer 기능이 있으며 Converage Mechanism이라는 것을 사용했는데 이전 연구에서 특정 단어가 계속 재활용되는 문제를 해결하기 위해서 Converage vector라는 것을 사용하여 Penalty Term을 Loss에 반영하였다. 현재까지 사용되었던 단어의 주목 분포의 누적값을 Converage Vector라고 정의, 이를 covLos에 반영하여 요약 단계에서 같은 위치에 반복적으로 등장하는 것을 방지하는 역할을 하는 것이다. 

 

 

 

Summarization with Pointer-Generator Networks

 

 

 

 

다음 시간에는 KoBART를 활용하여 직접 문서요약을 코드로 진행해볼 예정이다.

 

 

 

 

출처:

https://brunch.co.kr/@kakao-it/139

https://www.youtube.com/channel/UCPq01cgCcEwhXl7BvcwIQyg

 

'Machine Learning > NLP' 카테고리의 다른 글

BERT - KorQuAD (1)  (0) 2022.11.18
BART: Bidirectional and Auto-Regressive Transformer  (0) 2022.11.12
BERT 감성분석 (2)  (0) 2022.11.08
BERT 감성분석 (1)  (0) 2022.11.06
BERT 모델에 대해서~  (0) 2022.11.01