6-Class 한국어 감정 분석 모델 (v2)
본 모델은 klue/roberta-base를 기반으로 하여, 한국어 텍스트의 감정을 6가지 클래스로 분류하는 텍스트 분류(Sequence Classification) 모델입니다.
주요 특징:
- 6-Class 분류: '기쁨', '당황', '분노', '불안', '상처', '슬픔'의 6가지 감정으로 분류합니다.
- 불균형 데이터 처리:
CrossEntropyLoss에 수동으로 **클래스 가중치(Class Weights)**를 적용하여 데이터 불균형 문제를 완화하고, 소수 클래스(기쁨, 당황 등)의 탐지 성능을 높였습니다.
🗂 모델 라벨 (Labels)
모델의 출력은 6가지 감정 클래스에 해당하며, 라벨과 ID는 다음과 같습니다.
| Label (감정) | ID |
|---|---|
기쁨 |
0 |
당황 |
1 |
분노 |
2 |
불안 |
3 |
상처 |
4 |
슬픔 |
5 |
(참고: 라벨 순서는 훈련 데이터셋(df_train) 기준으로 자동 생성된 ['기쁨', '당황', '분노', '불안', '상처', '슬픔'] 순서를 따릅니다.)
🚀 사용 방법 (How to Use)
transformers 라이브러리의 pipeline을 사용하여 쉽게 모델을 테스트할 수 있습니다.
from transformers import pipeline
# TODO: '[YOUR-USERNAME]/[YOUR-MODEL-NAME]'을 본인의 허깅페이스 모델 경로로 변경하세요.
model_name = "[YOUR-USERNAME]/[YOUR-MODEL-NAME]"
classifier = pipeline("text-classification", model=model_name)
# 예시 문장 테스트
texts = [
"오늘 너무 기분 좋은 일이 생겼어!",
"이걸 어떻게 해야 할지 모르겠네...",
"진짜 화가 머리 끝까지 난다.",
"내일 발표인데 너무 떨리고 불안해."
]
# 예측 수행
results = classifier(texts, top_k=1)
for text, result in zip(texts, results):
print(f"입력: {text}")
print(f"감정: {result[0]['label']} (Score: {result[0]['score']:.4f})")
print("-" * 20)
⚙️ 훈련 상세 (Training Details)
본 모델은 train_final_v2.py 스크립트를 기반으로 훈련되었습니다.
1. 데이터셋 (Dataset)
training-label.json: 원본 훈련 데이터
test.json: 원본 테스트 데이터
데이터 분리 (v2 전략):
Train Set (90%): training-label.json의 90% (Stratified Split)
Validation Set (10%): training-label.json의 10% (Stratified Split)
Test Set (최종 평가용): test.json (별도 데이터)
2. 핵심 훈련 기법 (Key Techniques)
클래스 가중치 (Class Weights): 데이터 불균형 문제를 해결하기 위해 CustomTrainer와 CrossEntropyLoss의 weight 파라미터를 사용했습니다. 각 클래스에 대해 수동으로 가중치를 부여하여 소수 클래스의 중요도를 높였습니다.
적용된 가중치: [6.00, 4.50, 0.85, 1.80, 1.80, 0.92]
가중치 순서 (라벨): ['기쁨', '당황', '분노', '불안', '상처', '슬픔']
스케줄러 (Scheduler): cosine 학습률 스케줄러를 적용했습니다.
3. 주요 하이퍼파라미터 (Hyperparameters)HyperparameterValuebase_model_nameklue/roberta-basenum_train_epochs10learning_rate1e-5train_batch_size16eval_batch_size64weight_decay0.01max_length128warmup_ratio0.1lr_scheduler_typecosine
- Downloads last month
- 18
Space using taehoon222/korean-emotion-classifier-final 1
Evaluation results
- Accuracy on Custom Test Settest set self-reported0.790
- F1 (Weighted) on Custom Test Settest set self-reported0.791
- Loss on Custom Test Settest set self-reported0.694