AI-LAB/NLP_Basic

NLP_4_토큰화란?

JS LAB 2023. 6. 21. 04:12
728x90
반응형

토큰화 tokenization

문장을 토큰 시퀀스로 나누는 과정

수행 대상에 따라 문자, 단어, 서브워드 등 세 가지 방법 존재

트랜스포머 모델은 토큰 시퀀스를 입력받으므로 문장에 토큰화를 수행 필요

 

토크나이저 tokenizer

토큰화를 수행하는 프로그램

대표적 한국어 토크나이저 은전한닢(mecab), 꼬꼬마(kkma)..

이들 분석기는 토큰화뿐만 아니라 품사 부착 Part of Sepeech tagging 까지 수행

 

단어 단위 토큰화

가장 쉽게는 공백으로 분리

 

example

 

어제 카페 갔었어

-> 어제, 카페, 갔었어

어제 카페 갔었는데요

-> 어제, 카페, 갔었는데요

 

공백으로 분리하면 별도로 토크나이저를 쓰지 않아도 된다는 장점이 있지만,

어휘 집합 vocabulary 의 크기가 매우 커질 수 있다

갔었어, 갔었는데요 처럼 표현이 살짝만 바뀌어도

모든 경우의 수가 어휘 집합에 포함돼야 하기 때문

 

조금 완화는 가능...

 

example

 

어제 카페 갔었어

-> 어제, 카페, 갔었, 어

 

어제 카페 갔었는데요

-> 어제, 카페, 갔었, 는데요

-> 어휘집합 길이(크기) 줄였다!

 

하지만 보통 어휘 집합 크기는 10만 개를 훌쩍 넘는 경우가 다반사!

 

문자 단위 토큰화

한글로 표현할 수 있는 글자는 모두 1만 1,172개 

알파벳, 숫자, 기호 등을 고려해도 어휘 집합 크기는

기껏해야 1만 5,000개를 넘지않음

게다가 해당 언어의 모든 문자를 어휘 집합에 포함하므로

미등록(신조어 등..) 토큰 문제로 부터 자유롭다

 

하지만  단점이 존재

각 문자 토큰은 의미있는 단위가 되기 어렵다.

어제의 어, 어미 어의 구분이 사라진다 등..

뿐만 아니라 분석 결과인 토큰 시퀀스의 길이가 상대적으로 길어졌음

언어 모델에 입력할 토큰 시퀀스가 길면 모델이 해당 문장을 학습하기 어렵

결과적으로 성능이 떨어짐

 

example

 

어제 카페 갔었어

-> 어, 제, 카, 페, 갔, 었, 어

 

어제 카페 갔었는데요

-> 어, 제, 카, 페, 갔, 었, 는, 데, 요

 

서브워드 단위 토큰화

단어 토큰화와 문자 토큰화의 중간 형태

 

대표적 서브워드 단위 토큰화 기법 :

바이트 페어 인코딩

 

 

 

728x90
반응형