C.W.K.
Stream
Lesson 02 of 05 · published

Tokenizer의 함정: 한국어와 코드

~22 min · multilingual, code, gotcha

Level 0Window Watcher
0 XP0/50 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

같은 의미, 매우 다른 비용

CJK 언어 — 한국어, 일본어, 중국어 — 는 동일 의미 콘텐츠에 영어보다 token 2-3배 더 든다. 이유는 평범해 — 대부분 BPE tokenizer가 영어 위주 corpus에서 학습됐어서, CJK 글자는 더 공격적으로 fragment된다. 한글 syllable 하나가 2-4 token으로 쪼개질 수 있어.

이중언어 product에선 그 비대칭성이 긴 session에서 누적된다 — 한국어 사용자가 같은 대화 길이에 대해 사실상 2-3배 API 청구서를 낸다. 미리 budget 잡거나 tokenizer-aware pricing model 쓰거나. 없는 척하는 게 흔한 비싼 실수야.

Code도 비싸다

source code는 prose보다 dense해. tokenizer가 같은 identifier를 두 번 거의 못 봐서. handleAuthenticationCallback 같은 함수명은 4-6 token으로 쪼개지고 호출되는 모든 자리에서 반복돼. 길고 서술적인 변수명은 모든 reference site에서 budget을 태운다.

실전 전략

cost 중요하면 모형에 보내는 코드는 짧고 흔한 변수명 선호 — userIdtheCurrentlyAuthenticatedUserIdentifier보다 효율적으로 tokenize. bulk upload 전엔 불필요한 whitespace, trailing comment 제거. CJK는 원본 + 짧은 영어 summary 보내기, 양쪽 풀버전 두 번 보내기보다 나아.

CJK 함정: 영어 비율 가정해 token budget 잡고 그대로 한국어 워크플로 돌리면, visible length의 1/3쯤에서 한도 친다. 명시적으로 plan해.

Code

CJK vs English 측정·python
from tiktoken import encoding_for_model
enc = encoding_for_model("gpt-5")

en = "The model reads fragments."
ko = "모델은 조각으로 읽는다."

print(f"EN chars={len(en)} tokens={len(enc.encode(en))}")
print(f"KO chars={len(ko)} tokens={len(enc.encode(ko))}")
# KO often shows ~2-3x tokens per character vs EN.
identifier 비용 예시·python
import tiktoken
enc = tiktoken.encoding_for_model("gpt-5")
short = "userId"
long = "theCurrentlyAuthenticatedUserIdentifier"
for name in [short, long]:
    print(name, "->", len(enc.encode(name)), "tokens")

External links

Exercise

200단어 영어 essay와 같은 200단어 한국어 번역 골라. 둘 다 token 세. 글자당 token 비율 계산. 결과로 실제 워크플로 하나에 CJK-aware budget 설정.
Hint
4 chars/token 가정했는데 실제가 1.5 chars/token이면 진짜 한도는 생각의 38%야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.