Ch.3 텍스트를 숫자로 — 토큰화의 세계

문자열 다루기 — split, join, replace

split()으로 문자열을 토큰 리스트로 분리한다join()으로 토큰 리스트를 다시 문자열로 합친다replace()로 텍스트 전처리를 수행한다

LLM은 글자가 아니라 '토큰'을 읽습니다

ChatGPT에게 질문하면 내부적으로 문장을 잘게 쪼개 숫자로 바꿉니다. 이 과정의 첫 번째 단계가 바로 문자열 분리입니다.

문장을 어떤 기준으로 쪼개야 컴퓨터가 이해할 수 있을까?

split, join, replace — 텍스트 전처리의 3대 도구를 배워봅시다.

lightbulb

핵심 개념

전처리

원시 데이터를 모델이 처리할 수 있는 형태로 정제하는 과정


article

핵심 내용

split()은 문자열을 토큰 리스트로 분리합니다

text = "나는 오늘 파이썬을 배운다"
tokens = text.split()
print(tokens)
# ['나는', '오늘', '파이썬을', '배운다']

split() — 기본: 공백 기준 분리 split(",") — 쉼표 기준 분리 split("\n") — 줄바꿈 기준 분리

join()은 합치고, replace()는 바꿉니다

# join: 토큰 리스트를 다시 문자열로
tokens = ["나는", "AI를", "공부한다"]
sentence = " ".join(tokens)
print(sentence)  # "나는 AI를 공부한다"

# replace: 특정 문자 치환
text = "Hello, World!"
clean = text.replace(",", "").replace("!", "")
print(clean)  # "Hello World"

전처리 = 불필요한 문자 제거 + 형식 통일

문자열이 토큰으로 바뀌었다가 다시 합쳐지는 과정을 봅시다

실제 LLM이 입력을 받기 전 전처리 과정을 직접 만들어봅시다

# LLM 입력 전처리 파이프라인
def preprocess(text):
    text = text.strip()
    text = text.lower()
    for ch in ["!", "?", ",", ".", ":", ";"]:
        text = text.replace(ch, "")
    tokens = text.split()
    return tokens

samples = ["  Hello, World!  ", "Python은 재미있다!", "GPT-4는 2023년에 출시."]
for s in samples:
    tokens = preprocess(s)
    print(f"원본: {s!r}")
    print(f"토큰: {tokens}
")

split, join, replace를 조합하면 강력한 텍스트 변환기를 만들 수 있습니다

# 텍스트 변환 파이프라인 실험
# split → 가공 → join 패턴

sentence = "Hello, World! This is AI."

# 1단계: 구두점 제거
clean = sentence.replace(",", "").replace("!", "").replace(".", "")
print(f"구두점 제거: {clean}")

# 2단계: 소문자 변환 후 분리
tokens = clean.lower().split()
print(f"토큰 리스트: {tokens}")

# 3단계: 각 토큰에 번호 부여
numbered = [f"{i}:{t}" for i, t in enumerate(tokens)]
result = " | ".join(numbered)
print(f"번호 매핑: {result}")

# 4단계: 토큰 수 통계
print(f"\n총 토큰 수: {len(tokens)}")
print(f"고유 토큰 수: {len(set(tokens))}")

"a,,b,,c".split(",")의 결과는?

"_".join(["a", "b", "c"])의 결과는 "a_b_c"이다

"Hello World".replace("World", "Python")의 결과는?

다음 코드의 빈칸을 채우세요. text = "hello world" result = text.___() # result → "Hello World"

text.___() → "Hello World"

"Hello".upper()의 결과는 "Hello"이다.

문자열 다루기

key

핵심 용어

🧹

전처리

원시 데이터를 모델이 처리할 수 있는 형태로 정제하는 과정

edit_note

정리 노트

split · join · replace 핵심 정리

문자열 분리와 결합

split()
문자열을 토큰 리스트로 분리 (기본: 공백 기준)
join()
토큰 리스트를 하나의 문자열로 합침 (구분자.join(리스트))
replace()
특정 문자를 다른 문자로 치환 (전처리의 핵심)

전처리 파이프라인

strip()
문자열 양쪽 공백 제거 — 전처리의 첫 단계
lower()
소문자 변환 — 대소문자 통일
전처리 순서
strip → lower → replace(특수문자 제거) → split → join

LLM은 텍스트를 그대로 읽지 못합니다. split/join/replace로 정제하는 것이 AI 파이프라인의 첫걸음!

image

시각 자료

다이어그램: py-scene-string-process
check_circle

핵심 정리

  • 1split() — 문자열을 토큰 리스트로 분리
  • 2join() — 토큰 리스트를 문자열로 합치기
  • 3replace() — 특수문자 제거 등 텍스트 전처리

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작