한글과 영어 문장의 토큰 수를 tiktoken으로 직접 세어 비교해요.

혹시 한글로 쓴 문장이 영어보다 글자 수는 더 짧은데, AI 사용량은 오히려 더 많이 잡혀서 고개를 갸웃한 적 있으세요?
ChatGPT나 Claude 같은 AI 서비스는 문장을 글자 단위가 아니라 토큰이라는 조각 단위로 읽고, 길이 제한과 사용량도 이 토큰으로 계산해요. 그래서 한글과 영어의 토큰 수를 비교해 보면 글자가 적은 문장이 언제나 적은 토큰으로 표현되는 것은 아니라는 점을 직접 확인할 수 있어요.
이 글의 숫자는 2026년 기준 tiktoken 0.14.0에서 측정한 결과예요. 코드를 처음 만져보는 분도 앞 글에서 설치한 환경 그대로 따라올 수 있으니 걱정하지 않으셔도 돼요.
이 글에서 알아볼 내용은 '글자 수와 토큰 수가 다른 이유', '한글과 영어 토큰 수를 비교하는 방법', 'ticktoken으로 비교표 만드는 법', 빈 문장에서 생기는 오류를 고치는 법 입니다.
한글·영어 토큰 수 비교하는 방법: 먼저 알아둘 네 가지 기준
글자가 짧아도 토큰은 많을 수 있어요
이걸 알아야 하는 이유는 AI가 한 번에 받을 수 있는 양과 요금이 글자가 아니라 토큰으로 정해지기 때문이에요.
문장을 토큰으로 나누는 프로그램을 토크나이저(tokenizer)라고 하는데, 쉽게 말하면 문장을 조각으로 자르는 가위예요.
이 가위는 자주 본 글자 묶음은 크게 한 조각으로, 덜 익숙한 글자는 잘게 여러 조각으로 잘라요.
도장에 비유하면 영어 "Hello"는 도장 하나로 한 번에 찍히지만, 한글 "안"은 도장 두 개를 나눠 찍어야 완성되는 셈이에요.
실제로 이번 실습에서 쓰는 설정에서는 "Hello"가 토큰 1개, "안"이 토큰 2개로 나뉘어요. 그래서 글자 수만 보고 AI 입력도 짧다고 결론 내리면 안 되고, 글자 수와 토큰 수를 표에 따로 적어야 해요.
같은 뜻이라도 표현이 달라지면 결과가 달라져요
영어와 한국어로 비슷한 뜻을 적어도 단어 선택과 문장 길이는 달라질 수 있어요.
존댓말, 생략된 주어, 쉼표 위치 같은 차이도 토큰 수에 영향을 줘요.
번역한 문장 한 쌍을 비교하면 언어 차이와 표현 차이가 함께 섞여서 측정되는 거예요.
발 크기가 다른 두 사람의 신발 사이즈만 보고 나라별 차이라고 결론 내리기 어려운 것과 비슷해요. 그래서 이번 실습은 두 예문의 결과를 관찰하는 데까지만 범위를 정해요.
공백과 문장부호도 입력의 일부예요
사람 눈에는 문장 끝 공백 하나가 거의 보이지 않아요. 하지만 토크나이저에게는 공백 하나도 엄연히 다른 입력이에요.
줄바꿈, 따옴표, 숫자, 특수문자도 모두 비교 조건에 들어가요.
인터넷에서 복사한 문장에는 눈에 안 보이는 공백이 섞여 있을 때도 있어서 결과가 달라질 수 있어요. 그래서 원문을 그대로 보관하고 어떤 인코딩을 썼는지 함께 적어두는 편이 좋아요.
인코딩(encoding)은 쉽게 말하면 "어떤 가위 규칙으로 잘랐는지"를 가리키는 이름이고, 이 글에서는 cl100k_base라는 인코딩을 사용해요.
비율은 관찰값이지 공식이 아니에요
글자 수를 토큰 수로 나누면 토큰 하나에 글자가 평균 몇 개 들어갔는지 계산할 수 있어요.
이 글에서는 이 숫자를 "토큰당 글자 수"라고 부를게요.
아침에 한 번 잰 체온이 그날 상태를 알려줄 뿐 1년 내내 같은 값은 아니듯, 이 비율도 그 문장에만 해당하는 값이에요.
또 빈 문장은 토큰 수가 0이라서 그대로 나누면 오류가 나요.
비율만 남기기보다 원래 글자 수와 토큰 수를 함께 적어두면 나중에 해석하기 쉬워요.
tiktoken으로 한글·영어 토큰 비교표 만드는 법
앞 글에서 설치한 Python과 tiktoken을 그대로 사용해요.
목표는 "한글이 무조건 불리하다"는 결론이 아니라, 직접 센 결과를 조건과 함께 남기는 거예요.
그리고 여기서 빈 문장을 넣었다가 빨간 오류 메시지를 보고 당황하는 분들이 꽤 많아요. 저도 처음엔 여기서 멈칫했거든요. 그래서 그 오류를 일부러 한 번 내보고 고치는 순서로 진행할게요.
작업 폴더에 compare_tokens.py 파일을 만들고 아래 코드를 저장해요. 영어 문장, 한글 문장, 빈 문장 세 개를 차례로 토큰으로 바꾸고 글자 수·토큰 수·토큰당 글자 수를 출력하는 코드예요.
import tiktoken
encoding = tiktoken.get_encoding("cl100k_base")
samples = [
"Hello, how are you today?",
"안녕하세요, 오늘 기분이 어때요?",
"",
]
for text in samples:
ids = encoding.encode(text, disallowed_special=())
ratio = len(text) / len(ids)
print(repr(text), len(text), len(ids), ratio)
assert encoding.decode(ids) == text
터미널(Windows는 명령 프롬프트나 PowerShell, macOS는 터미널 앱)을 열고 파일이 있는 폴더에서 아래 명령을 실행해요. macOS에서 python이 없다고 나오면 python3으로 바꿔서 실행해요.
두 줄은 정상으로 출력되다가 세 번째 빈 문장에서 아래와 같은 오류가 나요.

원인은 빈 문장의 토큰 수가 0이라서 0으로 나누기를 시도했기 때문이에요.
수학에서도 0으로는 나눌 수 없듯이 Python도 여기서 멈춰요.
ratio 줄을 아래처럼 바꿔서 토큰이 하나라도 있을 때만 나누고, 없으면 None(값 없음)을 넣도록 고쳐요.
ratio = len(text) / len(ids) if ids else None
저장한 뒤 같은 명령으로 다시 실행해요. 이번에는 오류 없이 세 줄이 모두 출력되고, 빈 문장의 비율 자리에 None이 보이면 성공이에요.

결과를 아래 표에 옮겨 적어요. 두 문장의 뜻은 비슷하지만 표현까지 같은 것은 아니라는 점도 표 아래에 함께 적어두세요.
| 입력 | 글자 수 | 토큰 수 | 토큰당 글자 수 | 인코딩 |
| 영어 예문 "Hello, how are you today?" | 25 | 7 | 약 3.57 | cl100k_base |
| 한글 예문 "안녕하세요, 오늘 기분이 어때요?" | 18 | 18 | 1.00 | cl100k_base |
마지막으로 samples 안의 문장을 본인이 만든 짧은 문장 한 쌍으로 바꿔 다시 실행해요.
결과가 달라졌다면 입력 문장과 인코딩 이름을 함께 기록해 두세요.
이 표를 보고 "한국어는 항상 영어보다 이 비율만큼 비싸다"고 쓰면 실험 범위를 넘어서요.
실제 비용에는 요청 구성, AI가 돌려주는 답변 길이, 모델별 가격도 함께 영향을 줘요.
이 실습으로 확인한 것은 두 문장의 토큰화 결과이지 언어 전체의 비용 비교가 아니에요.
- 한글은 항상 영어보다 토큰이 많이 필요한가요?
- 모든 문장과 모든 토크나이저에 대해 단정할 수는 없어요.
- 토크나이저가 무엇을 보고 학습했는지, 어떤 규칙으로 자르는지에 따라 결과가 달라지거든요.
- 이번 두 예문에서는 한글 쪽 토큰이 더 많다는 차이가 관찰됐어요.
- 다른 문장이나 다른 인코딩에서는 차이가 줄거나 달라질 수 있어요.
- 실제로 AI에 넣을 문장 여러 개를 모아 같은 코드로 측정해 보는 것이 가장 정확해요.
- 비용을 아끼려고 한국어를 전부 영어로 번역해야 하나요?
- 토큰 수만 보고 결정하기는 어려워요.
- 번역하는 과정 자체에 시간과 비용이 들고, 뜻이 미묘하게 달라질 수도 있어요.
- 영어로 넣었더니 결과가 부정확해져서 다시 요청하게 되면 오히려 비용이 늘어나요. 그래서 품질과 비용을 같은 조건에서 함께 비교해 보는 것이 먼저예요.
- 번역보다 먼저 반복되는 설명이나 중복 자료를 줄일 수 있는지 살펴보는 편이 효과가 확실해요.
- 제 결과가 예제와 다른 숫자로 나오면 무엇을 확인하나요?
- 먼저 입력 문장이 공백과 문장부호까지 예제와 똑같은지 확인해요.
- 코드의 `get_encoding("cl100k_base")` 부분이 그대로인지도 봐요.
- 터미널에서 `pip show tiktoken`을 실행하면 설치된 버전을 확인할 수 있으니 결과와 함께 적어두세요.
- 다른 모델용 인코딩을 사용했다면 숫자가 다른 것이 자연스러운 결과예요.
- 숫자를 맞추려고 입력을 고치기보다, 어떤 조건이 차이를 만들었는지 찾는 것이 더 중요해요.
한글·영어 토큰 수 비교 핵심 총정리
짧은 문장이 반드시 적은 토큰으로 나뉘는 것은 아니에요. 언어뿐 아니라 표현·공백·인코딩 조건을 함께 기록해요.
빈 문장처럼 토큰이 0개인 입력은 비율을 계산하지 않도록 처리해요. 예문 두 개의 결과를 언어 전체의 특성으로 일반화하지 않아요.
직접 코드를 돌려서 숫자를 확인해 보셨다면 이미 토큰을 제대로 다루기 시작하신 거예요. 이 글이 도움이 됐다면 북마크해두세요!
'AI,도구' 카테고리의 다른 글
| [AI] 대화가 길어지면 AI가 앞의 내용을 잊는 이유와 조건 정리법 (0) | 2026.09.28 |
|---|---|
| [AI] 컨텍스트 윈도우란? 입력과 답변의 토큰 예산을 계산하는 방법 (0) | 2026.09.28 |
| [AI] AI 모델 이름 읽는 법: 버전·성능 등급·서비스 요금제 구분하기 (0) | 2026.09.28 |
| [AI] AI 토큰이란? 파이썬 tiktoken으로 토큰 수 계산하기 (0) | 2026.09.19 |
| [AI] 일상 속 AI와 생성형 AI의 차이: 스팸 필터·지도·번역기로 이해하기 (0) | 2026.09.18 |