[TIL] 210925 (KoBERT,seq2seq,자연어처리)

백규현·2021년 9월 26일
0

TIL

목록 보기
3/10

(어제 써놓고 까먹고 업로드를 못해서 오늘올린다.)

  • 추출적 요약: 원문에서 중요한 핵심 문장 또는 단어구를 몇 개 뽑아서 이들로 구성된 요약문을 만드는 방법이다. 이를 위한 대표적인 알고리즘으로 텍스트랭크(TextRank)가 있다. 단점은 추출적 요약은 이미 존재하는 문장이나 단어구로만 구성하므로 모델의 언어 표현 능력이 제한된다.
  • 추상적 요약 : 원문에 없던 문장이라도 핵심 문맥을 반영한 새로운 문장을 생성해 원문을 요약하는 방법. 주로 인공신경망을 사용하며 seq2seq 를 사용한다. 단점은 지도학습이기 때문에 훈련하기 위해 원문 뿐만 아니라 실제 요약문 데이터도 있어야 한다.

seq2seq

  • 인코더는 입력 문장의 모든 단어들을 순차적으로 입력받은 뒤에 마지막에 이 모든 단어 정보들을 압축해 하나의 벡터로 만드는데, 이를 컨텍스트 벡터(context vector)라고 한다. 입력문장의 정보가 context vector로 모두 압축되면 이를 디코더로 전송한다. 디코더는 컨텍스트 벡터를 받아서 순차적으로 출력한다.
  • 디코더는 초기입력으로 문장의 시작을 의미하는 심볼 <sos> 가 들어간다. 가 입력되면, 다음에 등장할 확률이 높은 단어를 예측한다. 디코더는 이런 식으로 기본저그올 다으멩 올 단어를 예측하고, 그 예측한 단어를 다음 시점의 RNN셀의 입력으로 넣는 행위를 반복하는데 이것을 문장의 끝을 의미하는 <eos> 가 다음 단어로 예측 될 때까지 반복한다.
  • 훈련과정에서는 디코더가 인코더가 보낸 컨텍스트 벡터<sos> 원문문장 을 입력 받았을 때, 요약문 <eos> 가 나와야 된다고 정답을 알려주며 훈련한다.
  • 반면 테스트 과정에서는 디코더는 오직 컨텍스트 벡터<sos> 만을 입력으로 받은 후에 다음에 올 단어를 예측하고, 그 단어를 다음 시점의 RNN셀의 입력올 넣는 행위를 반복합니다.

데이터셋 전처리

  • 원문과 요약이 있는 데이터를 가져와서 pandas 를 이용해 데이터프레임 형태로 저장한다. 이때 필요한건 원문과 요약이니까 2개만 남겨놓고 지우자. data = data[['Text','Summary']]
  • 데이터에서 중복 샘플을 걸러낸다. data.drop_duplicates(subset=['Text'], inplace=True) data.dropna(axis=0, inplace=True)

출처 : 딥 러닝을 이용한 자연어 처리 입문

어느정도 정리를 해봤지만, seq2seq가 가진 한계가 존재하고, BERT가 비교적 최신기술이기 때문에 BERT를 채택했다.

BERT관련 참고자료 링크모음


SKTBrain의 KoBERT => 채택예정.

한국어BERT모델 및 성능좋은 형태소분석 API를 제공하는 한국전자통신연구원

unoneway님의 KoBertSum

AI 경진대회를 여는 DACON

SKT KoBERT를 이용한 텍스트감정분석 예제

profile
반갑습니다.

0개의 댓글