# ๐ŸŽฎ 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