Langcon 2023 문상환님의 "한국어 토크나이징의 현재와 미래"를 듣고 정리한 내용입니다.
1. 토크나이징의 정의 및 한국어 적용
1.1 토크나이징
토크나이징이란 문자열을 특정 규칙에 의해 "토큰"으로 분절하는 여러 기법Subword 이전 한국어의 표준 분절은 형태소 기반 분절이었다.
ex) KoNLPy토크나이징은 Transfer Learning에 있어 성능을 좌우하는 중요한 요소이다.
1.2 토큰 단위와 장단점
한국어의 경우 토큰은 어절 / 형태소 / 서브워드 / 음절로 분절하여 사용 가능하다.
토큰은 Representation Robustness, 토큰의 길이, OOV에 대한 Robustness 측면에서 균형이 필요하다.
- Representation Robustness : Embedding에 얼마나 많은 의미를 함축하고 있는지
- 신조어 등으로 인해 형태소 기반 토크나이징은 완벽하지 않아 애매한 representation을 학습할 위험이 있다.
- Subword의 경우 토큰의 길이와 OOV에 대한 Robustness는 반비례 양상을 갖는다.
- 토큰을 서브워드나 문자 레벨로 둘 경우 OOV가 줄어들겠지만
- Representation이 갖는 내용이 줄고, 어텐션(Context)에 대한 의존도가 높아지게 된다.
- 토큰이 길수록 OOV의 빈도가 높아진다.
1.3 단위별 알고리즘
어절 단위 : `input_string.split()`
형태소 단위 : KKoma, Komoran, Okt, Mecab, Khaiii 등
서브워드 단위 : BPE, WordPiece, SentencePiece
음절 단위 : `list(input_string)`
그 외 : BBPE, FastText, Byte
1.4 Pre-tokenization
서브워드 기반 기법의 경우, Pre-tokenization 또는 전처리를 학습 전에 수행하는 경우가 있다.
BERT Tokenizer의 경우, 어절 단위 분절 후에 WordPiece 알고리즘을 적용
일본어에서는 형태소 분석기로 사전 분절 후 서브워드 학습이 일반적
한국어도 형태소 기반 사전 분절 기법이 효과적이라는 연구가 있다. (Park et al., 2020)
전처리로 자모 단위 분해 후 BPE를 학습하는 기법도 제안되었다. (Moon and Okazaki, 2020)
1.5 한국어 토크나이징의 어려움
한국어는 사람들이 띄어쓰기 및 맞춤법을 제대로 준수하 않는 경우가 많다.
결국 의미있는 단위로 자르려면 형태소 분석기가 필요하다.
- 그러나 형태소 분석기의 경우 오래된 코퍼스로 학습되어 신조어와 구어식 표현에 취약하다.
서브워드 기반으로 하기에는 한국어의 글자수가 많아서 성능이 잘 나오지 않는다.
1.6 국가표준 MeCab과 세종 코퍼스
원래 일본어 형태소 분석기였던 MeCab을 약간 변형한 Mecab-ko가 현재 일반적으로 사용되고 있다.
세종 코퍼스의 일부를 이용하여 학습하였다.
신조어에 대응되기 위해 코퍼스 업데이트가 필요하나 세종 코퍼스는 수정/재배포가 엄격히 금지되어있다.
2. 한국어 토크나이징 연구 소개
2.1 자모 기반 서브워드
Moon & Okazaki, 2020 (LREC 2020)
왜 한글은 알파벳(자모)가 아닌 음절을 기반으로 서브워드를 학습하는가?를 바탕으로 시도한 연구
KSC5601-1987로 2음절 서브워드 구성 시 총 천만 개의 서브워드가 되지만 그래도 여전히 표현하지 못하는 것들이 존재한다.
ex.) 쑝돈까스
서브워드(Unigram) 학습 전에 자모 단위로 분해 후 학습
생성의 경우 자모 단위로 출력된 것을 후처리
2.2 PatchBERT : 모르는 단어는 나중에 배우자
OOV 발생 시 기존 사전을 보강하는 방법론
최종 task Fine-tuning 직전에 "모르는 단어 학습"단계를 추가
모르는 단어 파악 후, 기존 Vocab에 존재하는 다른 서브워드의 임베딩과 weight sharing을 하거나 덮어쓰는 방식
3. 한국어 토크나이징의 미래
형태소 분석 task를 위한 데이터셋을 만들기 위해서는 공수가 많이 들어간다.
분절과 POS 태깅을 같이 해야 하기 때문인데,
특히 POS 태깅은 일정 수준 이상 국어학의 지식이 필요하다.
현실에서는 형태소 분석기를 사용할 경우 분절된 형태소만 사용하고 POS 태그는 사용되지 않는 경우가 많다.
⇒ 형태소 분절만 목표로 하는 데이터셋/모델을 만들면 조금 더 저렴하고 효율적으로 만들 수 있지 않을까?
또한 신조어에 대한 대응이 필요할 것이다.
일본어의 경우 신조어 학습을 하기 위한 신조어 학습 사전 제공 오픈소스 프로젝트가 존재한다.
한국어 NLP에서도 유사한 프로젝트가 필요해보인다.
- https://www.youtube.com/watch?v=gbvxe9LdaQk&list=WL&index=2