이 포스팅은
if (kakao) dev 2019
의 발표 내용을 요약 정리한 글입니다.
요약 정보
- 컨퍼런스명 : if(kakao) dev 2019
- 발표자 : 카카오페이 박용규(keith.gotkeys)
- 발표 내용 : 한국어 분석의 어려움을 이해하고 해결을 위해 시도한 내용 공유
- 요약 :
- 오타, 신조어 처리 에는
WPE
보다JPE
가 좀 더 효과가 있다 (JPE 적용 전, tokenizer 적용시 효과 상승) - 기존 모델들(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
가 문장의 구조를 파괴하기 때문으로 해석
- 문장의 의미 분석인 NSMC에서는
한국어 분석의 어려움 - 활용 문제
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. 향후 연구
- 현재 '애플' 과 '파인 애플'의 '애플'은 다른 임베딩 -> 개선 필요
- 첫가끝 구분을 위한 word piece 개선 필요
QnA
Q1. vocab size 를 30,000으로 한 이유?
A. 비교를 위하여 타 모델들과 동일 환경 세팅
Q2. 유행어 처리 성능은?
A. 한국어 base로 생성 되었으며, jamo로 어느정도 캐치할 수 있을 것이라고 판단하여 접근하게 됨