ํ๊ตญ์ด ํ ์คํธ ๊ฐ์ ๋ถ๋ฅ ๋ชจ๋ธ (KoBERT ๊ธฐ๋ฐ)
Model Description
์ด ๋ชจ๋ธ์ AIHub์ ๊ฐ์ฑ๋ํ ๋ง๋ญ์น ๋ฐ์ดํฐ์
์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ตญ์ด ๋ํ์ ๊ฐ์ ์ ๋ถ๋ฅํ๋ KoBERT ๋ชจ๋ธ์
๋๋ค.
์๋ณธ ๋ฐ์ดํฐ์
์ ๋ค์ 5๊ฐ์ ๊ฐ์ ๋ฒ์ฃผ๋ก ๋ ์ด๋ธ๋งํ์์ผ๋ฉฐ, Hugging Face์ Trainer
ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ จ๋์์ต๋๋ค.
5๊ฐ์ ๊ฐ์ ๋ฒ์ฃผ:
- 0: Angry
- 1: Fear
- 2: Happy
- 3: Tender
- 4: Sad
Training Data
์ฌ์ฉ๋ ๋ฐ์ดํฐ์ ์ AIHub์ ๊ฐ์ฑ๋ํ ๋ง๋ญ์น์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ก, ๋ํ ํ ์คํธ๋ฅผ 5๊ฐ์ ๋ฒ์ฃผ๋ก ๋ ์ด๋ธ๋งํ์ฌ ์ ์ฒ๋ฆฌํ์์ต๋๋ค. ์ด ๋ฐ์ดํฐ๋ 80%๋ ํ์ต ๋ฐ์ดํฐ๋ก, ๋๋จธ์ง 20%๋ ๊ฒ์ฆ ๋ฐ์ดํฐ๋ก ๋๋์ด ์ฌ์ฉ๋์์ต๋๋ค.
Pre-trained Model
์ด ๋ชจ๋ธ์ monologg/kobert ์ฌ์ ํ์ต๋ KoBERT ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. KoBERT๋ ํ๊ตญ์ด BERT ๋ชจ๋ธ๋ก์, ์ด ํ๋ก์ ํธ์์ 5๊ฐ์ ๊ฐ์ ๋ฒ์ฃผ๋ฅผ ๋ถ๋ฅํ๋ ๋ชฉ์ ์ ์ํด ๋ฏธ์ธ ์กฐ์ (fine-tuning)๋์์ต๋๋ค.
Tokenizer
๋ชจ๋ธ์ AutoTokenizer
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ฅ์ ํ ํฐํํ์์ผ๋ฉฐ, padding='max_length'
์ truncation=True
์ต์
์ ์ฌ์ฉํ์ฌ ์ต๋ ๊ธธ์ด 128์ ์
๋ ฅ์ผ๋ก ๋ณํ๋์์ต๋๋ค.
tokenizer = AutoTokenizer.from_pretrained("monologg/kobert", trust_remote_code=True)
def tokenize_function(examples):
return tokenizer(examples['input_text'], padding='max_length', truncation=True, max_length=128)
train_dataset = train_dataset.map(tokenize_function, batched=True)
val_dataset = val_dataset.map(tokenize_function, batched=True)
Model Architecture
๋ชจ๋ธ์ BertForSequenceClassification ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ 5๊ฐ์ ๊ฐ์ ๋ ์ด๋ธ์ ๋ถ๋ฅํฉ๋๋ค.
model = BertForSequenceClassification.from_pretrained('monologg/kobert', num_labels=5)
Training Configuration
๋ชจ๋ธ ํ์ต์ ์ํด Hugging Face์ Trainer ํด๋์ค๋ฅผ ์ฌ์ฉํ์์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ํ์ต ์ค์ ์ ์ ์ฉํ์์ต๋๋ค:
- ํ์ต๋ฅ : 2e-5
- ๋ฐฐ์น ํฌ๊ธฐ: 16
- ์ํฌํฌ ์: 10
- ํ๊ฐ ์ ๋ต: ๋งค ์ํฌํฌ๋ง๋ค ํ๊ฐ
- F1 ์ค์ฝ์ด (macro) ๊ธฐ์ค์ผ๋ก ์ต์ ์ ๋ชจ๋ธ ์ ์ฅ
training_args = TrainingArguments(
output_dir='./results',
learning_rate=2e-5,
per_device_train_batch_size=16,
per_device_eval_batch_size=16,
num_train_epochs=10,
eval_strategy="epoch",
save_strategy="epoch",
metric_for_best_model="f1_macro",
load_best_model_at_end=True
)
How to Use the Model
๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด Hugging Face transformers
๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ KoBERT ํ ํฌ๋์ด์ ๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๋ํ ์ ์์ต๋๋ค:
from transformers import AutoTokenizer, BertForSequenceClassification
# KoBERT์ ์๋ ํ ํฌ๋์ด์ ์ฌ์ฉ
tokenizer = AutoTokenizer.from_pretrained('monologg/kobert')
model = BertForSequenceClassification.from_pretrained('jeonghyeon97/koBERT-Senti5')
# ์์ ์
๋ ฅ (์ฌ๋ฌ ๋ฌธ์ฅ ๋ฆฌ์คํธ)
texts = [
"์ค๋์ ์ ๋ง ํ๋ณตํ ํ๋ฃจ์ผ!",
"์ด๊ฑฐ ์ ๋ง ์ง์ฆ๋๊ณ ํ๋๋ค.",
"๊ทธ๋ฅ ๊ทธ๋ ๋ค.",
"์ ์ด๋ ๊ฒ ์ฌํ์ง?",
"๊ธฐ๋ถ์ด ์ข ๋ถ์ํด."
]
# ์
๋ ฅ ํ
์คํธ ํ ํฐํ
inputs = tokenizer(texts, return_tensors='pt', padding=True, truncation=True)
# ์์ธก
outputs = model(**inputs)
predictions = outputs.logits.argmax(dim=-1)
# ๊ฒฐ๊ณผ ์ถ๋ ฅ
for text, prediction in zip(texts, predictions):
print(f"์
๋ ฅ: {text} -> ์์ธก๋ ๊ฐ์ ๋ ์ด๋ธ: {prediction.item()}")
- Downloads last month
- 118
Model tree for jeonghyeon97/koBERT-Senti5
Base model
monologg/kobert