--- # (필수) Hugging Face 모델 카드용 YAML 메타데이터 # TODO: language, tags, dataset, metrics를 본인 상황에 맞게 수정하세요. language: ko license: other # (라이선스를 선택하세요: apache-2.0, mit 등) tags: - text-classification - korean - emotion-analysis - klue - roberta pipeline_tag: text-classification datasets: - custom-korean-emotion-dataset # (데이터셋 이름을 지정하세요) metrics: - accuracy - f1 model-index: - name: 6-Class Korean Emotion Analysis results: - task: type: text-classification name: Text Classification dataset: name: Custom Test Set type: custom-korean-emotion-dataset config: default split: test metrics: - name: Accuracy type: accuracy value: 0.7905 - name: F1 (Weighted) type: f1 value: 0.7910 - name: Loss type: loss value: 0.6943 --- # 6-Class 한국어 감정 분석 모델 (v2) 본 모델은 [klue/roberta-base](https://huggingface.co/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`을 사용하여 쉽게 모델을 테스트할 수 있습니다. ```python 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