본문 바로가기

AI Theory/key concept of AI

[NLP] Text Summarization

[NLP] Text Summarization

1.텍스트 요약(Text Summarization)

  • 긴 길이의 문서(Document) 원문을 핵심 주제만으로 구성된 짧은 요약(Summary) 문장들로 변환하는 것
  • 중요한 것은 요약 전후에 정보 손실 발생이 최소화되어야 한다는 점
  • 크게 추출적 요약(Extractive Summarization)과 추상적 요약(Abstractive Summarization) 방법 이용해 요약

 

추출적 요약(Extractive Summarization)

  • 원문에서 문장들을 추출해서 요약
  • 10개의 문장으로 구성된 텍스트가 있다면, 그중 핵심적인 문장 3개를 꺼내와서 3개의 문장으로 구성된 요약문 생성
  •  원문을 구성하는 문장 중 어느 것이 요약문에 들어갈 핵심문장인지를 판별한다는 점에서 문장 분류(Text Classification) 문제로 볼 수 있을 것
  • 문장 간 연결이 자연스럽지 않을 수 있다는 단점
  • 딥 러닝보다는 주로 전통적인 머신 러닝 방식에 속하는 텍스트 랭크(TextRank)와 같은 알고리즘을 사용해서 이 방법을 사용

추상적 요약(Abstractive Summarization) 

  • 원문으로부터 내용이 요약된 새로운 문장을 생성
  • 자연어 처리 분야 중 자연어 생성(Natural Language Generation, NLG)의 영역
  • 딥러닝의 RNN을 이용해 추상적 요약을 구현하기에는 RNN의 장기의존성 때문에 정보 손실이 발생한다. 이러한 문제를 해결하고자 seq2seq 모델의 Attention 메커니즘이 등장하였다.

2.인공 신경망으로 텍스트 요약 훈련시키기

seq2seq 모델을 통해 제작한 Abstractive summarization 방식 텍스트 요약기의 구조

 

seq2seq 구조의 발전

<ㄱ. RNN>

  • 인코더 디코더 둘다 RNN
  • text를 인코더에 입력하면 인코더는 이를 하나의 고정된 벡터(context vector)로 변환
  • 디코더는 컨텍스트 벡터를 전달받아 한 단어씩 생성하며 요약 문장 완성

 

<ㄴ. LSTM>

  • 인코더 디코더 만들때 RNN이 아니라 LSTM을 사용할 수 있다.
  • 이 경우  time step의 셀에 hidden state뿐만 아니라, cell state도 함께 전달되어 인코더가 디코더에 전달하는 컨텍스트 벡터 또한 hidden state h와 cell state c 두 개의 값 모두 존재
  • 인코더의 마지막 time step의 hidden state를 컨텍스트 벡터로 사용

<ㄷ. 어텐션 메커니즘 도입>

인코더의 마지막 time step의 hidden state를 컨텍스트 벡터로 사용하는 것은 RNN의 장기 의존성 때문에 정보 손실이 발생함.

 

이러한 문제를 해결하고자 어텐션 메커니즘(Attention Mechanism) 도입


어텐션 메커니즘(Attention Mechanism)

 

  • 인코더의 모든 step의 hidden state의 정보가 컨텍스트 벡터에 전부 반영되도록 하는 것
  • . 하지만 인코더의 모든 hidden state가 동일한 비중으로 반영되는 것이 아니라, 디코더의 현재 time step의 예측에 인코더의 각 step이 얼마나 영향을 미치는지에 따른 가중합으로 계산하여 반영
  •  컨텍스트 벡터를 구성하기 위한 인코더 hidden state의 가중치 값은 디코더의 현재 스텝이 어디냐에 따라 계속 달라진다
  • 즉, 디코더의 현재 문장 생성 부위가 주어부인지 술어부인지 목적어인지 등에 따라 인코더가 입력 데이터를 해석한 컨텍스트 벡터가 다른 값이 된다는 것
  •  Attention 기법은 seq2seq을 비롯하여 향후 다양한 딥러닝 분야를 획기적으로 발전시킨 핵심 개념

3.데이터 준비하기

Kaggle에서 제공하는 아마존 리뷰 데이터셋을 다운받고, 데이터를 확인해 봅니다.

 

4 ~ 6.데이터 전처리하기

불용어 제거, 정규화, 정수인코딩 등의 데이터 전처리 과정을 코드로 구현합니다.

 

텍스트 정규화

단어들 중에서는 같은 의미인데도 다른 표현으로 쓰여 마치 다른 단어들처럼 간주되는 경우 동일한 단어로 통일시켜 기계의 연산량을 줄임

 

불용어 제거

 

7.모델 설계하기

인코더와 디코더, 어텐셔을 설계하고 코드로 구현합니다.

 

8.모델 훈련하기

EarlyStopping에 대해서 알아보고, 이를 적용하여 모델을 학습합니다.

 

9.인퍼런스 모델 구현하기

정수 인덱스 행렬로 나온 결과값을 실제 데이터로 복원하는 인퍼런스 모델을 코드로 구현합니다.

 

10.모델 테스트하기

모델을 통해 얻은 요약문과 실제 요약문을 비교해 봅니다.

 

11.추출적 요약 해보기

summa 패키지를 사용하여 추출적 요약(Extractive Summarization)을 해봅니다.

'AI Theory > key concept of AI' 카테고리의 다른 글

텐서 표현과 연산  (0) 2023.07.24
[CV] GAN 과 cGAN  (0) 2023.07.18
사이킷런을 활용한 추천 시스템  (0) 2023.07.07
비지도학습(Unsupervised Learning)  (0) 2023.07.07
선형 회귀와 로지스틱 회귀  (0) 2023.07.05