토큰화

문장을 조각내려면 어디를 잘라야 할까요?

전체 그림

글은 세 번 바뀌어 벡터가 됩니다

나눈 조각 하나하나가 토큰이고, 나누는 일이 토큰화입니다. 토큰 ID는 토큰마다 붙인 번호이고, 벡터는 숫자 묶음입니다.

그림 속 번호는 예시 값입니다.

첫 시도

띄어쓰기에서 자릅니다

가장 쉬운 방법입니다. 그런데 문장 부호가 단어에 붙은 채로 남습니다.

왜 문제인가

같은 단어가 다른 토큰이 됩니다

모델은 글자가 하나만 달라도 다른 토큰으로 봅니다. 부호를 떼어 내면 test는 언제나 같은 토큰이 됩니다.

그래서

문장 부호도 하나씩 떼어 냅니다

쉼표, 마침표, 물음표, 줄표(--)가 각각 토큰 하나가 됩니다. 단어 6개와 부호 4개, 모두 10개입니다.

줄표(--)는 글자가 두 개지만 부호 하나라서 토큰도 하나입니다.

두 가지 결정

대문자는 남기고 빈칸은 버립니다

대문자는 이름과 문장의 시작을 알려 주므로 그대로 둡니다. 빈칸은 버려서 토큰 수를 줄입니다.

정답이 있는 것은 아닙니다. 무엇을 자르고 무엇을 버릴지는 만드는 사람이 정합니다.

실제로 해 보면

단편소설 한 편을 통째로 잘랐습니다

이디스 워튼의 《The Verdict》입니다. 글자 20,479개가 토큰 4,690개로 나뉘었습니다.

실제 LLM은 이보다 훨씬 많은 글로 훈련합니다. 방법을 익히는 데는 한 편으로 충분합니다.

다음 편

토큰은 아직 글자입니다. 번호를 붙일 차례입니다

4편토큰에 번호 붙이기 2강 목록