Wing4's picture
Upload README.md with huggingface_hub
ca8982e verified
# ๐ŸŽฎ KoELECTRA Multi-Label Review Classifier (AI ๊ธฐ๋ฐ˜ ๋ฆฌ๋ทฐ ์ธ์‚ฌ์ดํŠธ ์‹œ์Šคํ…œ)
์ด ๋ชจ๋ธ์€ ํ•œ๊ตญ์–ด ๊ฒŒ์ž„ ๋ฆฌ๋ทฐ(์˜ˆ: Steam ๋ฆฌ๋ทฐ)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•™์Šต๋œ **๋‹ค์ค‘ ๋ผ๋ฒจ ๋ถ„๋ฅ˜ ๋ชจ๋ธ**์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๋Š” ํ•˜๋‚˜์˜ ๋ฆฌ๋ทฐ ๋ฌธ์žฅ์—์„œ **15๊ฐœ ํ•ญ๋ชฉ(์„ฑ๋Šฅ, ๋ฒ„๊ทธ, ์Šคํ† ๋ฆฌ, ๋ฒˆ์—ญ, ๋ฐธ๋Ÿฐ์Šค ๋“ฑ)** ์„ ๋™์‹œ์— ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
---
## ๐Ÿง  Model Overview
- **Base Model:** monologg/koelectra-base-v3-discriminator
- **Framework:** Hugging Face Transformers + PyTorch
- **Task:** Multi-label Text Classification
- **Loss:** BCEWithLogitsLoss (pos_weight ๋ณด์ • ์ ์šฉ)
- **Epochs:** 8
- **Optimizer:** AdamW (lr=2e-5)
- **Hardware:** NVIDIA A100 / T4 GPU
- **Metrics:** Micro-F1, Macro-F1, Accuracy
---
## ๐Ÿท๏ธ Labels (15 categories)
| Index | Label | ์„ค๋ช… |
|:--:|:--|:--|
| 0 | y_OPTIMIZATION | ์ตœ์ ํ™” / ํ”„๋ ˆ์ž„ |
| 1 | y_BUG_CRASH | ๋ฒ„๊ทธ, ํฌ๋ž˜์‹œ |
| 2 | y_GRAPHICS | ๊ทธ๋ž˜ํ”ฝ ํ’ˆ์งˆ |
| 3 | y_SOUND | ์‚ฌ์šด๋“œ ํ’ˆ์งˆ |
| 4 | y_CONTROL | ์กฐ์ž‘๊ฐ |
| 5 | y_MATCHMAKING_SERVER | ๋งค์นญ, ์„œ๋ฒ„ ํ’ˆ์งˆ |
| 6 | y_BALANCE | ๋ฐธ๋Ÿฐ์Šค |
| 7 | y_STORY | ์Šคํ† ๋ฆฌ ์™„์„ฑ๋„ |
| 8 | y_TRANSLATION_LOCALIZATION | ๋ฒˆ์—ญ, ํ˜„์ง€ํ™” |
| 9 | y_PRICE_VALUE | ๊ฐ€๊ฒฉ ๋Œ€๋น„ ๊ฐ€์น˜ |
| 10 | y_TUTORIAL_GUIDE | ํŠœํ† ๋ฆฌ์–ผ, ๊ฐ€์ด๋“œ |
| 11 | y_UI_UX | UI/UX ํŽธ์˜์„ฑ |
| 12 | y_CONTENT_UPDATE | ์ฝ˜ํ…์ธ  ์—…๋ฐ์ดํŠธ |
| 13 | y_GAMEPLAY_MECHANICS | ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ๋ฉ”์ปค๋‹‰ |
| 14 | y_ENGAGEMENT | ๋ชฐ์ž…๊ฐ |
---
## ๐Ÿ“Š Example Usage
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_id = "Wing4/results"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
text = "์Šคํ† ๋ฆฌ๊ฐ€ ํฅ๋ฏธ๋กญ๊ณ  ๊ทธ๋ž˜ํ”ฝ์ด ๋›ฐ์–ด๋‚˜์š”. ํ•˜์ง€๋งŒ ์„œ๋ฒ„๊ฐ€ ์ž์ฃผ ๋Š๊น๋‹ˆ๋‹ค."
inputs = tok(text, return_tensors="pt", truncation=True, padding=True)
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.sigmoid(logits).squeeze().tolist()
print(probs)
## ๐Ÿ“ˆ Performance (Validation)
| Epoch | Train Loss | Val Loss | Micro-F1 | Macro-F1 | Accuracy |
|:--:|:--:|:--:|:--:|:--:|:--:|
| 1 | 1.1288 | 0.3854 | 0.4887 | 0.3474 | 0.7239 |
| 2 | 0.6371 | 0.3293 | 0.6716 | 0.4794 | 0.8410 |
| 3 | 0.4236 | 0.2891 | 0.7467 | 0.5399 | 0.8854 |
| 4 | 0.3349 | 0.2389 | 0.7599 | 0.5450 | 0.9045 |
| 5 | 0.2788 | 0.2339 | 0.8100 | 0.5882 | 0.9320 |
| 6 | 0.2539 | 0.2617 | 0.8416 | 0.6263 | 0.9365 |
| 7 | 0.1976 | 0.2573 | 0.8590 | 0.6471 | 0.9433 |
**๐Ÿ“Š ์ตœ์ข… ์„ฑ๋Šฅ (Epoch 8)**
- **Micro-F1:** 0.86
- **Macro-F1:** 0.65
- **Accuracy:** 0.94
- **Validation Loss:** 0.257
> pos_weight ๋ณด์ •(`โˆš`)์„ ์ ์šฉํ•œ ๋ชจ๋ธ๋กœ, ์ด์ „ ๋ฒ„์ „ ๋Œ€๋น„ ํ™•๋ฅ  ์Šค์ผ€์ผ ์•ˆ์ •ํ™” ๋ฐ F1 ํ–ฅ์ƒ(+0.13p)์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ“œ License & Author
Author: Wing4
Created: 2025-10