감성 분석 프로젝트
한국어 영화 리뷰 데이터(NSMC)를 사용하여 사전학습 언어 모델을 Fine-tuning하고, 감성 분류 성능을 평가한 뒤, Gradio UI로 배포하는 End-to-End 프로젝트입니다. 이 프로젝트에서는 NLP 탭의 텍스트 전처리, 사전학습 언어 모델, NLP 태스크 섹션에서 학습한 내용을 종합적으로 적용합니다.사전 준비
실습
한국어 리뷰 데이터 수집 (NSMC)
NSMC(Naver Sentiment Movie Corpus)는 네이버 영화 리뷰 20만 건으로 구성된 한국어 감성 분석 표준 데이터셋입니다.NSMC 데이터셋 특성:
| 항목 | 값 |
|---|---|
| 전체 크기 | 200,000건 |
| 학습 / 테스트 | 150,000 / 50,000 |
| 라벨 | 0 (부정) / 1 (긍정) |
| 평균 문장 길이 | ~35자 |
| 언어 | 한국어 |
| 출처 | 네이버 영화 리뷰 |
평가 (Accuracy, F1, Confusion Matrix)
Fine-tuning된 모델의 성능을 체계적으로 평가합니다.기대 성능 (KoELECTRA base v3):
| 지표 | 값 |
|---|---|
| Accuracy | ~0.90 |
| F1 Score | ~0.90 |
| 긍정 Precision | ~0.90 |
| 부정 Recall | ~0.89 |
트러블슈팅
CUDA out of memory 에러
CUDA out of memory 에러
GPU 메모리가 부족합니다.
per_device_train_batch_size를 16 또는 8로 줄이세요fp16=True를 활성화하세요 (메모리 약 50% 절약)max_length를 128에서 64로 줄이세요gradient_accumulation_steps=2를 추가하세요
Accuracy가 50% 근처에서 오르지 않습니다
Accuracy가 50% 근처에서 오르지 않습니다
모델이 학습하지 못하고 있습니다.
learning_rate를 2e-5로 줄여보세요- 데이터 전처리에서 빈 문자열이 제거되었는지 확인하세요
- 라벨이 올바르게 매핑되었는지 확인하세요
warmup_ratio=0.1이 설정되었는지 확인하세요
Gradio에서 모델 로딩이 느립니다
Gradio에서 모델 로딩이 느립니다
모델을 전역 변수로 한 번만 로드하세요.
analyze_sentiment 함수 안에서 매번 로드하면 매 요청마다 수 초가 걸립니다. 위 코드처럼 함수 외부에서 로드하는 것이 올바른 패턴입니다.MPS(Apple Silicon)에서 학습 에러
MPS(Apple Silicon)에서 학습 에러
MPS에서는 일부 연산이 지원되지 않을 수 있습니다.
fp16=False로 설정하세요 (MPS는 float16 미지원)PYTORCH_ENABLE_MPS_FALLBACK=1환경 변수를 설정하세요- 에러 지속 시 CPU로 학습하세요 (
no_cuda=True)

