NLP_4_토큰화란?
토큰화 tokenization
문장을 토큰 시퀀스로 나누는 과정
수행 대상에 따라 문자, 단어, 서브워드 등 세 가지 방법 존재
트랜스포머 모델은 토큰 시퀀스를 입력받으므로 문장에 토큰화를 수행 필요
토크나이저 tokenizer
토큰화를 수행하는 프로그램
대표적 한국어 토크나이저 은전한닢(mecab), 꼬꼬마(kkma)..
이들 분석기는 토큰화뿐만 아니라 품사 부착 Part of Sepeech tagging 까지 수행
단어 단위 토큰화
가장 쉽게는 공백으로 분리
example
어제 카페 갔었어
-> 어제, 카페, 갔었어
어제 카페 갔었는데요
-> 어제, 카페, 갔었는데요
공백으로 분리하면 별도로 토크나이저를 쓰지 않아도 된다는 장점이 있지만,
어휘 집합 vocabulary 의 크기가 매우 커질 수 있다
갔었어, 갔었는데요 처럼 표현이 살짝만 바뀌어도
모든 경우의 수가 어휘 집합에 포함돼야 하기 때문
조금 완화는 가능...
example
어제 카페 갔었어
-> 어제, 카페, 갔었, 어
어제 카페 갔었는데요
-> 어제, 카페, 갔었, 는데요
-> 어휘집합 길이(크기) 줄였다!
하지만 보통 어휘 집합 크기는 10만 개를 훌쩍 넘는 경우가 다반사!
문자 단위 토큰화
한글로 표현할 수 있는 글자는 모두 1만 1,172개
알파벳, 숫자, 기호 등을 고려해도 어휘 집합 크기는
기껏해야 1만 5,000개를 넘지않음
게다가 해당 언어의 모든 문자를 어휘 집합에 포함하므로
미등록(신조어 등..) 토큰 문제로 부터 자유롭다
하지만 단점이 존재
각 문자 토큰은 의미있는 단위가 되기 어렵다.
어제의 어, 어미 어의 구분이 사라진다 등..
뿐만 아니라 분석 결과인 토큰 시퀀스의 길이가 상대적으로 길어졌음
언어 모델에 입력할 토큰 시퀀스가 길면 모델이 해당 문장을 학습하기 어렵
결과적으로 성능이 떨어짐
example
어제 카페 갔었어
-> 어, 제, 카, 페, 갔, 었, 어
어제 카페 갔었는데요
-> 어, 제, 카, 페, 갔, 었, 는, 데, 요
서브워드 단위 토큰화
단어 토큰화와 문자 토큰화의 중간 형태
대표적 서브워드 단위 토큰화 기법 :
바이트 페어 인코딩