chlgks/emour-emotion-kcelectra-context
023
emour-emotion-kcelectra-context
한국어 커플 대화 감정 분류 (15종) — 맥락 인식 모델의 1차 버전.
문장 하나가 아니라 직전 대화와 대상 문장을 문장쌍으로 함께 인코딩해, "됐어" "괜찮아" 처럼 흐름에 따라 의미가 달라지는 말을 구분합니다.
🔎 새로 쓰신다면 [`emour-emotion-kcelectra-context-v2`](https://huggingface.co/chlgks/emour-emotion-kcelectra-context-v2) 를 쓰십시오. v2는 이 모델을 배포한 뒤 얻은 실사용자 대화 2,193건으로 재학습한 최종 버전입니다. 이 저장소는 그 이전 단계의 기록으로 남겨둡니다.
⚠️ 사용법 — 문장쌍으로 넣어야 합니다
tokenizer(context, target) 형태의 문장쌍(text pair)으로 학습됐습니다. "맥락 [SEP] 대상" 처럼 한 개의 문자열로 넣으면 token_type_ids가 달라져 결과가 부정확합니다.
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
MODEL = "chlgks/emour-emotion-kcelectra-context"
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForSequenceClassification.from_pretrained(MODEL).eval()
context = "A: 오늘 약속 취소됐어\nB: 왜? 무슨 일 있어?" # "화자: 발화" 를 \n 으로 연결
target = "됐어"
enc = tok(context, target, truncation="longest_first", max_length=128, return_tensors="pt")
with torch.no_grad():
pred = model(**enc).logits.argmax(-1).item()
print(model.config.id2label[pred])🔕 추론 위젯을 꺼 두었습니다. HuggingFace의 text-classification 위젯은 입력창이 하나뿐이라 문장쌍을 넣을 수 없어, 이 모델을 잘못 쓴 결과가 대표 예시처럼 보이게 됩니다.
라벨 (15종)
학습
대조쌍은 같은 문장이 맥락에 따라 다른 감정을 갖는 쌍입니다. 문장만으로는 두 샘플을 구분할 수 없으므로 맥락을 봐야만 손실이 줄어듭니다 — 모델이 감정 키워드만 외우는 지름길 학습을 막기 위한 장치입니다.
성능
실데이터 test 111건 기준 macro-F1 0.387, accuracy 0.423.
누수 없는 비교 기준(우리 데이터를 전혀 학습하지 않은 단문 배포 모델) 위에서 측정한 개선폭은 macro-F1 0.175 → 0.39 (2.2배) 이고, 기존에 아예 못 잡던 감정(당황 0.00→0.50, 슬픔 0.00→0.40, 놀람 0.00→0.22)이 복구됐습니다.
test/valid는 실데이터만 쓰고 합성·대조쌍은 학습 전용으로 격리해 데이터 누수를 0으로 만들었습니다.
계보
⚠️ 두 맥락 모델의 점수는 서로 다른 test 분할에서 측정한 것이라 직접 비교할 수 없습니다.
라이선스
MIT. base 모델 `beomi/KcELECTRA-base`(MIT)를 따릅니다.
