if (kakao) dev 2019 : Korean의 Korean 체험기

이 포스팅은 if (kakao) dev 2019 의 발표 내용을 요약 정리한 글입니다.

요약 정보

  • 컨퍼런스명 : if(kakao) dev 2019
  • 발표자 : 카카오페이 박용규(keith.gotkeys)
  • 발표 내용 : 한국어 분석의 어려움을 이해하고 해결을 위해 시도한 내용 공유
  • 요약 :
    1. 오타, 신조어 처리 에는 WPE보다 JPE가 좀 더 효과가 있다 (JPE 적용 전, tokenizer 적용시 효과 상승)
    2. 기존 모델들(CNN, RNN 등)의 한계는 Pre-trained BERT로 해결 가능하다 (ETRIBert > JamoBert+tknzr > GoogleBert)

한국어 분석의 어려움 - 구조적 문제

1. 첫번째 접근 : Jamo Piece

  • 구글의 Word Piece Embedding (WPE)의 아이디어 차용
  • WPE : 언어학적 지식이 없어도 data driven 하게 stemming 가능, 많이 사용하는 sub-word 활용
Jamo Piece Embedding (JPE)
  • 한국어 특성을 반영(자모분리), 인터넷 용어 및 오탈자에 보다 적합

    • 기존 형태소 분석기들의 한계(vs. Okt, Mecab, Khaiii) : 오타, 신조어 처리 어려움
  • 띄어쓰기가 잘못된 경우 제대로 분리가 안되는 현상

  • sub-word를 제대로 추출하지 못하여 vocab 구성이 부정확
    ex) 정말신선한 영화입니다. -> '정말'과 '신선한' 사이의 띄어쓰기가 없음 -> 띄어쓰기 문제

  • JPE 수행 전 tokenizer를 이용하여 띄어쓰기 문제 해결 -> 향후 실험결과에서 효과성 입증됨

2. 두번째 접근 : 첫가끝 문제

  • 구글의 Word Piece 알고리즘에 의해 첫가끝으로 반환
    • 첫가끝 : 첫글자 / 가운데글자 / 끝글자
      ex) '각' 이란 글자는 'ㄱ', 'ㅏ', 'ㄱ'으로 반환되며 첫 'ㄱ'과 끝 'ㄱ'이 다른 코드로 분리됨 -> 첫가끝 - 호환형 변환 사전 제작

3. 실험 및 결과

  • 적용 모델 : Bidirectional LSTM + Self-Attention

  • 실험 데이터 :
    1) Naver Sentiment Movie Corpus v1.0 (NSMC)
    2) Intonation-added intention identification for Korean (3I4K)

  • 실험 결과 :

    • 문장의 의미 분석인 NSMC에서는 JamoPiece가 우수한 성능을 보였으며 tknzr가 성능 향상에 기여함을 확인함 (KorBERT 보다 우수)
    • 문장의 구조를 파악하는 3i4k에서는 자모/캐릭터 단위 등 일정한 크기로 나누는 방법이 더 높은 성능을 보임 -> JamoPiece가 문장의 구조를 파괴하기 때문으로 해석

한국어 분석의 어려움 - 활용 문제

1. 기존 모델의 한계

  • 문장안에 표현된 반어법, 동음이의어 등의 처리가 어려움
    ex) 진쨔 재밌어 요 ㅠㅠㅠ 정말정말

  • 위 문장은 긍정 리뷰에 속하지만, ㅠㅠㅠ는 '슬픔'을 표현하는 벡터와 근접하게 위치하게 된다 -> tokenizer 한계

2. Language Model

  • Convolutional Neural Network
    (+) 커널 사이즈 거리의 관계 고려
    (+) 병렬 처리 가능
    (-) 먼 거리의 관계 고려하기 어려움

  • RNN
    (+) 모든 입력값 고려
    (-) Vanishing Gradient
    (-) 병렬 처리 불가

  • BERT
    (+) 양방향 문맥정보를 반영한 벡터로 표현
    (+) 병렬 처리 가능
    (+) Unlabeled data로 pre-train 후 transfer learning

Tokenizer 비교
  • google : 약 40만건의 위키피디아 덤프
  • ETRI : 10년치 신문기사 및 백과사전 데이터 대상 약 47억개 형태소 학습 -> BasicTokenizer + WPE
  • JPE : 세종코퍼스 + 위키피디아 + 나무위키(*)
  • Tesla v100 1대, 약 240시간 소요

3. 실험 및 결과

  • 사전학습이 없는 경우, JamoBert(제안 모델)이 가장 좋은 성능을 보였으며 Jamo Split 전 Tokenize 효가가 있는 것으로 나타남
  • 사전학습이 있는 경우, ETRI의 KorBert가 가장 높은 성능을 나타냇으며 JamoBert의 경우 사전학습 후 성능향상이 크게 나타나지 않음
    -> pre-trained 데이터의 질, 양의 차이로 판단

4. 향후 연구

  1. 현재 '애플' 과 '파인 애플'의 '애플'은 다른 임베딩 -> 개선 필요
  2. 첫가끝 구분을 위한 word piece 개선 필요

QnA

Q1. vocab size 를 30,000으로 한 이유?

A. 비교를 위하여 타 모델들과 동일 환경 세팅

Q2. 유행어 처리 성능은?

A. 한국어 base로 생성 되었으며, jamo로 어느정도 캐치할 수 있을 것이라고 판단하여 접근하게 됨