research notes

토큰화(Tokenization) 본문

GPT/개념정의

토큰화(Tokenization)

forest62590 2022. 4. 22. 22:00
728x90

*** ratsgo's NLP blog (이기창) 내용 요약 ***

< Huggingface tokenizers >

토큰화란 문장을 토큰 시퀸스로 나누는 것이며 크게 문자 단위 토큰화, 단어 단위 토큰화, 서브워드의 방법이 있다. 또한 토큰화를 수행하는 프로그램을 토크나이저(Tokenizer)라고 한다.

① 단어 단위 토큰화

단어 단위로 토큰화를 진행 할 수 있으며, 가장 간단한 방법은 공백을 기준으로 분리하는 것이다.

어제 카페 갔었어 → 어제, 카페, 갔었어
어제 카페 갔었는데요 → 어제, 카페, 갔었는데요

위와 같이 공백을 기준으로 분리하게 되면 따로 토크나이저 프로그램을 사용하지 않아도 된다는 장점이 있지만, 어휘 집합의 크기가 매우 커질 수도 있다. 

예) '갔었어', '갔었는데요'처럼 표현이 살짝 바뀌어도 모든 경우의 수가 어휘 집합에 포함되어야 한다.

 

따라서, 토크나이저를 활용하여 어휘 집합의 크기가 커지는 것을 조금 완화할 수는 있다. (의미 있는 단어 '갔었'으로 토큰화하여 어휘 집합이 급격하게 커지는 것 방지)

어제 카페 갔었어 → 어제, 카페, 갔었, 어
어제 카페 갔었는데요 → 어제, 카페, 갔었, 는데요

② 문자 단위 토큰화

문자 단위로 토큰화를 수행하게 되면 해당 언어의 모든 문자를 어휘 집합에 포함하므로 미등록 토큰(Unknown token, 어휘 집합에 없는 토큰을 말하며 주로 신조어에서 발생) 문제로부터 자유로울 수 있다.

그러나 문자 토큰은 의미 있는 단위가 될 수 없으며, 모델에 입력할 때 토큰 시퀸스의 길이가 길어진다는 단점이 있다.

어제 카페 갔었어 → 어, 제, 카, 페, 갔, 었, 어
어제 카페 갔었는데요 → 어, 제, 카, 페, 갔, 었, 는, 데, 요

③ 서브워드 단위 토큰화

단어와 문자 단위 토큰화의 중간에 있는 형태로 어휘 집합 크기가 지나치게 커지지 않으면서도 미등록 토큰 문제를 해결하고 토큰 시퀸스가 길어지지 않는 장점이 있다. 대표적으로 바이트페어 인코딩이 있다.

References:

[1] BERT와 GPT로 배우는 자연어 처리, 이지스 퍼블리닝, 이기창

[2] ratsgo's NLP blog, https://ratsgo.github.io/nlpbook/docs/introduction/transfer/

728x90
Comments