Korean Emotion Classification (44 labels, KoELECTRA)
๐ ๊ฐ์
์ด ๋ชจ๋ธ์ ํ๊ตญ์ด ํ
์คํธ์์ 44๊ฐ์ง ๊ฐ์ (emotion) ์ ๋ถ๋ฅํ๊ธฐ ์ํด ํ์ต๋์์ต๋๋ค.
๋ฒ ์ด์ค ๋ชจ๋ธ์ monologg/koelectra-base-v3-discriminator
์ด๋ฉฐ,
KOTE ๋ฐ์ดํฐ์
+ ์ถ๊ฐ ์์ง ๋ฐ์ดํฐ๋ก ํ์ธํ๋ํ์์ต๋๋ค.
๐งพ ๋ชจ๋ธ ์ ๋ณด
- Base Model: KoELECTRA-base-v3-discriminator
- Task: Multi-label emotion classification
- Labels: 44๊ฐ ๊ฐ์
- Loss Function: Asymmetric Loss (ฮณโป=3)
- Threshold: 0.6
๐ฏ ๊ฐ์ ๋ผ๋ฒจ (์ด 44๊ฐ)
๋ถํ/๋ถ๋ง, ํ์/ํธ์, ๊ฐ๋/๊ฐํ, ์ง๊ธ์ง๊ธ, ๊ณ ๋ง์, ์ฌํ, ํ๋จ/๋ถ๋ ธ, ์กด๊ฒฝ, ๊ธฐ๋๊ฐ, ์ฐ์ญ๋/๋ฌด์ํจ, ์ํ๊น์/์ค๋ง, ๋น์ฅํจ, ์์ฌ/๋ถ์ , ๋ฟ๋ฏํจ, ํธ์/์พ์ , ์ ๊ธฐํจ/๊ด์ฌ, ์๊ปด์ฃผ๋, ๋ถ๋๋ฌ์, ๊ณตํฌ/๋ฌด์์, ์ ๋ง, ํ์ฌํจ, ์ญ๊ฒจ์/์ง๊ทธ๋ฌ์, ์ง์ฆ, ์ด์ด์์, ์์, ํจ๋ฐฐ/์๊ธฐํ์ค, ๊ท์ฐฎ์, ํ๋ฆ/์ง์นจ, ์ฆ๊ฑฐ์/์ ๋จ, ๊นจ๋ฌ์, ์ฃ์ฑ ๊ฐ, ์ฆ์ค/ํ์ค, ํ๋ญํจ(๊ท์ฌ์/์์จ), ๋นํฉ/๋์ฒ, ๊ฒฝ์ , ๋ถ๋ด/์_๋ดํด, ์๋ฌ์, ์ฌ๋ฏธ์์, ๋ถ์ํจ/์ฐ๋ฏผ, ๋๋, ํ๋ณต, ๋ถ์/๊ฑฑ์ , ๊ธฐ์จ, ์์ฌ/์ ๋ขฐ
๐ ์ฑ๋ฅ (Validation ๊ธฐ์ค)
- Micro F1: ~0.62
- Micro Precision: ~0.70
- Micro Recall: ~0.55
- Macro F1: ~0.47
- Hamming Loss: ~0.12
๐ ์ฌ์ฉ ๋ฐฉ๋ฒ
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import numpy as np
# ๋ชจ๋ธ ๋ก๋
model_name = "tobykim/koelectra-44emotions"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# ์
๋ ฅ ๋ฌธ์ฅ
text = "์ค๋ ๋๋ฌด ๊ธฐ๋ถ ์ข์!"
inputs = tokenizer(text, return_tensors="pt")
# ์ถ๋ก
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.sigmoid(logits).numpy()[0]
# ๊ฐ์ ๋ผ๋ฒจ ๋งคํ
LABELS = [
'๋ถํ/๋ถ๋ง','ํ์/ํธ์','๊ฐ๋/๊ฐํ','์ง๊ธ์ง๊ธ',
'๊ณ ๋ง์','์ฌํ','ํ๋จ/๋ถ๋
ธ','์กด๊ฒฝ','๊ธฐ๋๊ฐ',
'์ฐ์ญ๋/๋ฌด์ํจ','์ํ๊น์/์ค๋ง','๋น์ฅํจ',
'์์ฌ/๋ถ์ ','๋ฟ๋ฏํจ','ํธ์/์พ์ ','์ ๊ธฐํจ/๊ด์ฌ',
'์๊ปด์ฃผ๋','๋ถ๋๋ฌ์','๊ณตํฌ/๋ฌด์์','์ ๋ง',
'ํ์ฌํจ','์ญ๊ฒจ์/์ง๊ทธ๋ฌ์','์ง์ฆ','์ด์ด์์',
'์์','ํจ๋ฐฐ/์๊ธฐํ์ค','๊ท์ฐฎ์','ํ๋ฆ/์ง์นจ',
'์ฆ๊ฑฐ์/์ ๋จ','๊นจ๋ฌ์','์ฃ์ฑ
๊ฐ','์ฆ์ค/ํ์ค',
'ํ๋ญํจ(๊ท์ฌ์/์์จ)','๋นํฉ/๋์ฒ','๊ฒฝ์
',
'๋ถ๋ด/์_๋ดํด','์๋ฌ์','์ฌ๋ฏธ์์','๋ถ์ํจ/์ฐ๋ฏผ',
'๋๋','ํ๋ณต','๋ถ์/๊ฑฑ์ ','๊ธฐ์จ','์์ฌ/์ ๋ขฐ'
]
threshold = 0.5
results = [(label, float(p)) for label, p in zip(LABELS, probs) if p > threshold]
print(sorted(results, key=lambda x: x[1], reverse=True))
--
# ๐ท๏ธ ๋ผ์ด์ ์ค
Base model: KoELECTRA (MIT License)
Dataset: KOTE + ์ถ๊ฐ ์์ง ๋ฐ์ดํฐ (๊ณต๊ฐ ๋ฐ์ดํฐ ๊ธฐ๋ฐ)
Model: ์์ ๋กญ๊ฒ ์ฐ๊ตฌ/ํ์ต ๋ชฉ์ ์ฌ์ฉ ๊ฐ๋ฅ
- Downloads last month
- 170
Model tree for tobykim/koelectra-44emotions
Base model
monologg/koelectra-base-v3-discriminator