Tokenization
Tokenization
개요
토큰화(Tokenization)는 자연어처리(Natural Language Processing, NLP)의 핵심 전처리 단계 중 하나로, 텍스트를 있는 단위인 토큰(Token)으로 나누는 과정을 의미합니다. 이 과정은 언어의 구조를 컴퓨터가 이해하고 처리할 수 있도록 변환하는 첫 번째 단계로, 이후의 모든 NLP 작업(예: 품사 태깅, 개체명 인식, 기계 번역, 감성 분석 등)의 정확도에 직접적인 영향을 미칩니다.
토큰은 일반적으로 단어, 구, 문장, 심지어는 아포스트로피나 구두점과 같은 기호 단위일 수 있으며, 언어나 사용 목적에 따라 그 정의가 달라질 수 있습니다. 예를 들어, 영어에서는 공백과 구두점을 기준으로 단어를 분리하는 것이 일반적이지만, 한국어와 같은 언어는 형태소 단위로 세분화하는 것이 더 효과적입니다.
토큰화의 중요성
토큰화는 단순한 텍스트 분할을 넘어서, 언어의 의미 구조를 해석하는 데 중요한 기초 작업입니다. 잘못된 토큰화는 이후 모델의 학습과 예측 성능을 크게 저하시킬 수 있습니다.
주요 목적
- 텍스트의 구조화: 문장을 단어 또는 형태소 단위로 분해하여 컴퓨터가 처리할 수 있는 구조로 변환.
- 모델 입력 생성: 언어 모델(예: BERT, GPT)에 입력으로 들어가는 토큰 시퀀스 생성.
- 정규화 기반: 토큰화 후에 정규화, 어근 추출, 불용어 제거 등의 추가 전처리가 수행됨.
토큰화의 종류
토큰화는 그 단위에 따라 여러 방식으로 분류할 수 있습니다.
1. 문장 토큰화 (Sentence Tokenization)
문단이나 여러 문장을 개별 문장으로 분리하는 과정입니다. 주로 마침표(.), 물음표(?), 느낌표(!) 등을 기준으로 하지만, 줄임말(예: "Dr.", "Mr.")과 같은 오해의 소지를 피하기 위해 규칙 기반 또는 기계학습 기반의 알고리즘이 사용됩니다.
예시:
입력: "안녕하세요. 저는 김철수입니다. 오늘 기분이 좋네요!"
출력: ["안녕하세요.", "저는 김철수입니다.", "오늘 기분이 좋네요!"]
2. 단어 토큰화 (Word Tokenization)
문장을 단어 단위로 나누는 방법입니다. 영어에서는 공백 기준 분리가 가능하지만, 한국어는 공백이 의미 단위를 구분하지 않기 때문에 형태소 분석기가 필요합니다.
예시 (영어):
입력: "I love NLP."
출력: ["I", "love", "NLP", "."]
3. 하위단어 토큰화 (Subword Tokenization)
단어를 더 작은 단위(서브워드)로 나누는 방법으로, 특히 희귀 단어(out-of-vocabulary, OOV) 문제를 해결하는 데 효과적입니다. 대표적인 알고리즘은 다음과 같습니다:
- Byte Pair Encoding (BPE): 빈도가 높은 문자 쌍을 반복적으로 병합하여 서브워드 단위 생성.
- WordPiece: BPE와 유사하지만, 확률 기반으로 토큰을 생성 (BERT에서 사용).
- SentencePiece: 공백을 특수 토큰으로 처리하고, 언어에 독립적인 토큰화를 지원 (T5, ALBERT 등에서 사용).
예시 (BPE):
"unhappiness" → ["un", "happi", "ness"]
한국어 토큰화의 특수성
한국어는 공백이 없는 언어(space-free language)이며, 문법적 구조가 영어와 크게 다르기 때문에 일반적인 단어 기반 토큰화는 부적절합니다. 따라서 한국어 토큰화는 다음과 같은 특징을 가집니다:
- 형태소 분석(Morphological Analysis) 기반: 명사, 동사, 조사, 어미 등을 분리.
- 의존 관계 고려: 예를 들어 "먹었다"는 "먹" + "었" + "다"로 분리.
- 사전 기반 처리: 사전에 등록된 형태소와 미등록 단어 처리를 위한 알고리즘 필요.
한국어 토큰화 도구 예시
도구 | 설명 |
---|---|
KoNLPy | Python 기반, Okt(Open Korean Text) 등 여러 엔진 지원 |
MeCab-ko | 일본어 MeCab 기반의 한국어 형태소 분석기 |
Khaiii | 카카오에서 개발한 고성능 형태소 분석기 |
SentencePiece | 언어 독립적 토큰화, 한국어에도 적용 가능 |
토큰화의 도전 과제
- 구두점 처리: 아포스트로피(
don't
→do
,n't
), 하이픈(state-of-the-art
) 등은 어떻게 분리할 것인가? - 미등록 단어(OOV): 사전에 없는 단어나 신조어 처리.
- 다의어와 문맥: 같은 단어라도 문맥에 따라 다른 토큰화가 필요할 수 있음.
- 언어 다양성: 언어마다 문법 구조와 표기법이 다르므로, 보편적인 토큰화 기법은 존재하지 않음.
참고 자료 및 관련 문서
- Jurafsky, D., & Martin, J. H. (2023). Speech and Language Processing
- Hugging Face Tokenizers Documentation
- KoNLPy 공식 문서
- Kakao i Open SDK - Khaiii
관련 기술
토큰화는 자연어처리의 첫걸음이자 가장 중요한 기초 단계로, 정교한 토큰화 전략은 NLP 시스템의 전반적인 성능을 결정짓는 핵심 요소입니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.