토크나이저Tokenizer
글을 정해진 조각 목록대로 잘라 번호를 붙이는 장치
- 토크나이저는 글을 모델이 받을 수 있는 조각으로 자르고 번호로 바꾸는 장치예요. 모델 바로 앞에 놓인 문지기예요.
- 자르는 기준은 미리 만들어 둔 조각 목록이에요. 목록에 통째로 있는 말은 한 조각, 없는 말은 여러 조각으로 나뉘어요.
- 목록은 사람이 손으로 적은 게 아니라, 방대한 글에서 자주 붙어 다니는 글자 쌍을 반복해서 합쳐 자동으로 만들어요.
- 답을 돌려줄 때는 번호를 다시 글자로 되돌려요. 자를 때와 되돌릴 때 같은 목록을 써요.
- 목록은 모델마다 달라요. 그래서 같은 문장도 어느 모델에 넣느냐에 따라 조각 수가 달라져요.
목차
1비유로 이해하기
목욕탕에 들어가면 옷장 칸 하나를 받고 번호가 붙은 열쇠를 손목에 차요. 칸은 크기가 정해져 있어서 짐이 크면 한 칸에 다 들어가지 않아요. 그럴 땐 나눠서 두세 칸에 넣고 열쇠도 그만큼 받아요. 토크나이저는 글을 이렇게 정해진 칸에 나눠 넣고 번호를 매겨 주는 카운터예요.
칸의 종류와 개수는 목욕탕을 열 때 이미 정해져 있어요. 자주 맡기는 흔한 짐에는 넉넉한 전용 칸이 있어서 통째로 들어가고, 처음 보는 크고 이상한 짐은 잘게 나눠 여러 칸에 흩어져요. 흔한 인사말이 한 조각이고 낯선 이름이 서너 조각인 이유예요.
나올 때는 번호만 있으면 돼요. 번호를 대면 칸에서 짐을 꺼내 원래대로 돌려주니까요.
2자세히 알아보기
칸 목록은 자동으로 만들어졌어요
목록을 만드는 방법은 의외로 단순해요. 먼저 모든 글자를 하나하나 낱개 칸으로 놓아요. 그다음 학습용 글 전체를 훑으면서 가장 자주 붙어 다니는 글자 쌍을 찾아 하나로 합치고, 그 합친 덩어리를 새 칸으로 등록해요. 이 합치기를 수만 번 반복하면 목록이 완성돼요.
자주 나오는 말일수록 일찍 합쳐져서 큰 칸을 차지해요. 흔한 조사나 어미, 자주 쓰이는 단어가 그렇게 자기 칸을 얻어요. 반대로 드물게 나오는 말은 끝까지 합쳐지지 못하고 작은 조각들로 남아요.
목록의 크기는 보통 수만 개 수준이에요. 늘리면 문장당 조각 수가 줄어 효율이 좋아지지만, 모델이 다뤄야 할 후보가 그만큼 많아져서 무거워져요. 이 사이에서 균형을 잡은 값이 지금의 수만 개예요.
목록에 없는 말은 나눠 담아요
토크나이저는 모르는 말을 만나도 포기하지 않아요. 목록 안에 있는 더 작은 조각들의 조합으로 반드시 쪼개 낼 수 있게 설계돼 있어요. 낱글자까지 목록에 들어 있으니 최악의 경우에도 한 글자씩은 담을 수 있어요.
그래서 신조어나 낯선 외국 지명도 오류 없이 처리돼요. 대신 조각 수가 확 늘어나요. 흔한 단어 하나가 한 조각인데 낯선 이름 하나가 다섯 조각이 되는 일이 흔해요. 조각 수는 곧 한 번에 넣을 수 있는 글의 양과 비용으로 이어지니, 이 차이가 그냥 넘길 일은 아니에요.
한국어는 이 문제를 더 크게 겪어요. 글자 종류가 많은 데다 같은 낱말에 조사와 어미가 계속 다르게 붙기 때문에, 목록에 통째로 담기지 못한 형태가 잘게 쪼개지기 쉬워요.
자를 때와 되돌릴 때 같은 목록을 써요
글을 조각으로 잘라 번호 줄로 바꾸는 과정이 있고, 모델이 뱉은 번호 줄을 다시 글자로 이어 붙이는 과정이 있어요. 둘 다 같은 목록을 뒤집어 쓰는 거예요. 목록이 없으면 번호는 아무 의미도 없어요.
그래서 모델과 토크나이저는 항상 한 쌍으로 움직여요. 다른 목록으로 자른 번호를 넣으면 모델은 전혀 엉뚱한 글을 읽은 셈이 돼요. 목욕탕이 다른데 열쇠 번호만 들고 가는 것과 같아요.
빈칸과 줄바꿈도 조각의 일부로 함께 담겨요. 되돌렸을 때 원래 글이 정확히 복원되려면 그래야 하니까요. 조각 앞에 붙은 빈칸까지 한 칸에 들어가는 경우가 많아요.
목록이 다르면 조각 수도 달라져요
모델을 만든 곳마다 학습에 쓴 글이 다르고, 그 글에서 뽑은 목록도 다르니, 같은 문장을 넣어도 조각 수가 서로 달라요. 어떤 목록은 한국어 글을 많이 보고 만들어져서 한글 덩어리를 통째로 담고 있고, 어떤 목록은 영어 위주라 한글을 잘게 쪼개요.
그래서 "이 문장은 몇 조각인가"라는 질문에는 모델을 정하지 않고는 답할 수 없어요. 서비스 요금을 비교할 때도 조각당 단가만 보면 안 되고, 같은 문장이 각각 몇 조각이 되는지 함께 봐야 해요.
토크나이저 때문에 생기는 일들
모델이 긴 숫자 계산을 자주 틀리는 데는 이유가 있어요. 숫자가 자릿수대로 잘리지 않고 엉뚱한 덩어리로 쪼개지기 때문이에요. 같은 수라도 어디서 잘리느냐가 달라서 규칙을 잡기 어려워요.
"이 단어에 자음이 몇 개 있나요" 같은 질문에 약한 것도 같은 이유예요. 모델은 낱글자를 따로 보지 않고 뭉쳐진 조각 번호만 받으니, 조각 안에 무슨 글자가 들었는지는 흐릿하게만 알아요. 반대로 오타가 조금 있어도 곧잘 알아듣는 건, 쪼개진 조각들이 원래 말과 비슷한 자리에 놓이기 때문이에요.
3조금 더 정확하게
토크나이저는 문자열을 정해진 어휘 사전에 따라 서브워드 단위로 나누고, 각 조각을 사전의 정수 아이디로 바꾸는 프로그램이에요. 사전을 만드는 대표적인 방법이 바이트 페어 인코딩(Byte Pair Encoding, 글자 쌍 합치기)이고, 확률을 기준으로 조각을 고르는 다른 방식도 함께 쓰여요. 요즘은 글자가 아니라 바이트 단위에서 시작하는 방식이 많아서, 어떤 문자가 들어와도 깨지지 않고 처리돼요.
비유가 어긋나는 지점도 있어요. 목욕탕 옷장은 짐을 실제로 보관하지만, 토크나이저는 아무것도 저장하지 않아요. 잘라서 번호로 바꾸는 규칙만 들고 있을 뿐이에요. 또 옷장은 짐을 눈으로 보고 크기에 맞춰 나누지만, 토크나이저는 뜻을 전혀 보지 않아요. 통계적으로 자주 붙어 다녔는지만 봐서, 한 단어 한가운데를 아무렇지 않게 가르기도 해요.
4직접 해보기
5흔한 오해
토크나이저가 뜻이나 문법을 보고 자른다고 생각하기 쉽지만, 실제로는 자주 붙어 다닌 빈도만 보기 때문에 단어 한가운데가 갈리기도 해요.
토크나이저는 어느 모델에나 같다고 여기기 쉽지만, 실제로는 모델마다 목록이 달라서 같은 문장의 조각 수가 꽤 벌어져요.
모르는 말이 들어오면 오류가 난다고 생각하기 쉽지만, 실제로는 더 작은 조각으로 반드시 쪼개져 들어가고 대신 조각 수만 늘어나요.
7한 줄 요약
그러니까토크나이저는 정해진 칸 목록에 맞춰 글을 나눠 담고 번호를 붙였다가 다시 되돌려 주는 장치이고, 이 목록이 모델마다 달라요.
잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02