T5 힙합 번역 모델 - 데이터 전처리 완벽 가이드
들어가며
AI 모델의 성능을 좌우하는 가장 중요한 요소 중 하나는 바로 데이터 전처리입니다. 특히 기계번역과 같은 시퀀스-투-시퀀스(Sequence-to-Sequence) 작업에서는 입력과 출력 데이터를 모델이 이해할 수 있는 형태로 변환하는 과정이 핵심입니다.
이번 포스팅에서는 T5 모델을 활용한 힙합 가사 번역 프로젝트의 데이터 전처리 과정을 단계별로 자세히 살펴보겠습니다. 데이터셋 로드부터 토크나이징, 그리고 모델 입력 형태로의 변환까지 모든 과정을 다룹니다.

1. 개발 환경 설정
Google Colab 환경 구성
# Google Drive 마운트
from google.colab import drive
drive.mount('/content/drive')
# 필요한 라이브러리 설치
!pip install -U datasets
!pip install -q transformers
!pip install evaluate
Google Colab의 GPU 환경을 활용하여 효율적인 학습이 가능하도록 환경을 구성합니다. 특히 datasets
라이브러리는 Hugging Face에서 제공하는 다양한 데이터셋을 쉽게 로드할 수 있게 해줍니다.
2. 데이터셋 로드 및 탐색
힙합 가사 번역 데이터셋 로드
from datasets import load_dataset
# 외국 힙합 가사 번역 데이터셋 로드
dataset = load_dataset("sungmogi/en2ko_hiphop")
sungmogi/en2ko_hiphop
데이터셋은 영어 힙합 가사와 그에 대응하는 한국어 번역을 쌍으로 제공하는 전문 데이터셋입니다.
데이터셋 분할 전략
# 학습/검증/테스트 데이터 분할
train = dataset['train']
# 학습 시간 단축을 위한 50% 샘플링
train = train.train_test_split(test_size=0.5, seed=42)['train']
val = dataset['valid']
test = dataset['test']
왜 50% 샘플링을 했을까?
- 학습 시간 효율성: 제한된 컴퓨팅 자원에서 빠른 실험 진행
- 과적합 방지: 적절한 크기의 데이터로 일반화 성능 확보
- 프로토타입 개발: 개념 검증 단계에서의 빠른 반복 실험
데이터 구조 이해
# 데이터 샘플 확인
print(train[0])
# 출력: {'translation': {'en': 'Searching all in my mind', 'ko': '내 마음 속을 찾아보네'}}
데이터는 translation
키 하위에 en
(영어)과 ko
(한국어) 키-값 쌍으로 구성되어 있습니다. 이는 기계번역 작업의 표준적인 데이터 구조입니다.
3. 토크나이저 설정
T5 전용 토크나이저 로드
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(
'seongs/ke-t5-base-aihub-koen-translation-integrated-10m-en-to-ko'
)
선택한 토크나이저의 특징:
- AI-HUB 데이터 기반: 1000만 개의 한-영 번역 쌍으로 사전 학습
- 도메인 적응: 한국어-영어 번역에 최적화
- T5 호환성: T5 모델 아키텍처와 완벽 호환
4. 데이터 전처리 함수 구현
핵심 전처리 함수
def preprocess(examples):
data = examples['translation']
inputs = []
targets = []
# 입력 데이터 (영어) 추출
for example in data:
inputs.append(example['en'])
# 타겟 데이터 (한국어) 추출
for example in data:
targets.append(example['ko'])
# 입력 토크나이징
model_inputs = tokenizer(
inputs,
padding="max_length",
max_length=64,
truncation=True
)
# 타겟 토크나이징
with tokenizer.as_target_tokenizer():
labels = tokenizer(
targets,
padding="max_length",
max_length=64,
truncation=True
)
# 레이블 설정
model_inputs["labels"] = labels["input_ids"]
return model_inputs
전처리 과정 상세 분석
1. 데이터 분리
- 영어 가사(
en
)를 입력(input)으로 설정 - 한국어 번역(
ko
)을 타겟(labels)으로 설정
2. 토크나이징 전략
- max_length=64: 힙합 가사의 평균 길이를 고려한 최적 길이
- padding="max_length": 배치 처리를 위한 동일 길이 맞춤
- truncation=True: 긴 텍스트의 잘림 허용
3. 타겟 토크나이저 설정
with tokenizer.as_target_tokenizer():
이 컨텍스트 매니저는 T5 모델의 디코더 부분에서 사용할 특별한 토큰들을 올바르게 처리하도록 합니다.
전처리 적용
# 각 데이터셋에 전처리 함수 적용
train = train.map(preprocess, batched=True)
val = val.map(preprocess, batched=True)
test = test.map(preprocess, batched=True)
batched=True
옵션으로 배치 단위 처리를 통해 성능을 향상시킵니다.
5. 전처리 결과 검증
토크나이징 결과 구조
전처리 후 각 데이터 포인트는 다음과 같은 구조를 가집니다:
{
'input_ids': [토큰화된 입력 텍스트의 ID],
'attention_mask': [패딩 토큰 구분을 위한 마스크],
'labels': [토큰화된 타겟 텍스트의 ID]
}
각 구성 요소의 역할:
- input_ids: 영어 가사를 숫자 ID로 변환한 시퀀스
- attention_mask: 실제 토큰(1)과 패딩 토큰(0)을 구분
- labels: 한국어 번역을 숫자 ID로 변환한 시퀀스
토크나이징 검증
# 원본 텍스트 복원을 통한 검증
print("입력 텍스트:", tokenizer.decode(train[0]['input_ids']))
print("타겟 텍스트:", tokenizer.decode(train[0]['labels']))
이를 통해 토크나이징이 올바르게 수행되었는지 확인할 수 있습니다.
6. 전처리 과정에서의 주요 고려사항
시퀀스 길이 선택 (max_length=64)
왜 64로 설정했을까?
- 힙합 가사 특성: 대부분의 힙합 라인이 짧고 간결
- 메모리 효율성: GPU 메모리 사용량 최적화
- 학습 속도: 적절한 길이로 빠른 학습 가능
패딩 전략
padding="max_length"
고정 길이 패딩의 장점:
- 배치 처리 최적화: 동일한 크기로 효율적인 병렬 처리
- GPU 활용도 향상: 텐서 연산 최적화
- 일관된 처리: 예측 시에도 동일한 형태 유지
특수 토큰 처리
T5 모델은 다음과 같은 특수 토큰을 사용합니다:
<pad>
: 패딩 토큰</s>
: 시퀀스 종료 토큰<unk>
: 미지 단어 토큰
이러한 토큰들이 올바르게 처리되도록 토크나이저가 자동으로 관리합니다.
7. 데이터 품질 관리
데이터 정합성 검사
# 데이터셋 크기 확인
print(f"학습 데이터: {len(train)}")
print(f"검증 데이터: {len(val)}")
print(f"테스트 데이터: {len(test)}")
# 토큰 길이 분포 확인
input_lengths = [len(sample['input_ids']) for sample in train]
print(f"평균 입력 길이: {sum(input_lengths) / len(input_lengths):.2f}")
누락 데이터 처리
전처리 과정에서 빈 문자열이나 None 값이 있는지 확인하고, 필요시 필터링합니다:
# 빈 번역 쌍 제거 (실제 구현시)
def filter_empty_translations(example):
return len(example['translation']['en'].strip()) > 0 and \
len(example['translation']['ko'].strip()) > 0
마치며
데이터 전처리는 머신러닝 파이프라인에서 가장 중요하면서도 시간이 많이 소요되는 작업입니다. 특히 자연어처리 작업에서는 토크나이징, 패딩, 어텐션 마스크 등 여러 단계의 복잡한 과정을 거쳐야 합니다.
이번 포스팅에서 다룬 전처리 과정은:
- 체계적인 데이터 분할로 올바른 학습/검증/테스트 환경 구성
- 적절한 토크나이저 선택으로 도메인 특화 성능 확보
- 효율적인 전처리 함수로 배치 단위 최적화
- 철저한 검증 과정으로 데이터 품질 보장
다음 포스팅에서는 이렇게 전처리된 데이터를 활용하여 T5 모델을 실제로 학습시키는 과정을 자세히 살펴보겠습니다. 하이퍼파라미터 설정부터 학습 모니터링까지, 모델 학습의 모든 단계를 다룰 예정입니다.
'프로그래밍 > 딥러닝 (완)' 카테고리의 다른 글
T5 힙합 번역 모델 - 성능 평가와 베이스라인 비교 분석 (103) (4) | 2025.06.30 |
---|---|
T5 힙합 번역 모델 - 학습 과정과 하이퍼파라미터 최적화 (102) (8) | 2025.06.29 |
T5 모델로 힙합 가사 번역하기 (100) (0) | 2025.06.29 |
편향성 감지 시스템의 사회적 의미와 활용 방안 (99) (3) | 2025.06.29 |
실제 서비스 적용을 위한 모델 배포 (98) (2) | 2025.06.29 |