Model Description
- Developed by: κΉμν / SANGHYUN KIM
- Finetuned from model [monologg/koelectra-base-v3-discriminator], trained with [klue/klue] dataset.
- μμΈ μ€νκ³Ό νμ΅ νκ²½μ νμ
Usage
Load model and tokenizer
from transformers import AutoTokenizer, AutoModelForTokenClassification
>>> model_path = "skimb22/koelectra-ner-klue-test1"
>>> model = AutoModelForTokenClassification.from_pretrained(model_path)
>>> tokenizer = AutoTokenizer.from_pretrained(model_path)
Define NER Label list
>>> label_list = ['B-DT', 'I-DT', 'B-LC', 'I-LC', 'B-OG', 'I-OG', 'B-PS', 'I-PS', 'B-QT', 'I-QT', 'B-TI', 'I-TI', 'O']
>>> label2id = {label: i for i, label in enumerate(label_list)}
>>> id2label = {i: label for i, label in enumerate(label_list)}
Test with [klue] NER validation datasets.
from datasets import load_dataset
import random
import torch
dataset = load_dataset("klue/klue", "ner")
val_data = dataset["validation"]
samples = random.sample(list(val_data), 10)
for idx, sample in enumerate(samples):
tokens = sample["tokens"]
gold_labels = [label_list[tag] for tag in sample["ner_tags"]]
# tokenizer, model λ³μ μ€λΉλΌ μμ΄μΌ ν¨. (Load model and tokenizer μ°Έκ³ )
inputs = tokenizer(tokens, is_split_into_words=True, return_tensors="pt", truncation=True)
word_ids = inputs.word_ids()
with torch.no_grad():
outputs = model(**inputs).logits
preds = torch.argmax(outputs, dim=-1)[0].tolist()
print(f"\nπΉ Sample {idx + 1}: {' '.join(tokens)}")
print("Token\tGold\tPred")
seen = set()
for i, word_idx in enumerate(word_ids):
if word_idx is None or word_idx in seen:
continue
seen.add(word_idx)
token = tokens[word_idx]
gold = gold_labels[word_idx]
pred_id = preds[i]
pred = label_list[pred_id] if pred_id < len(label_list) else "O"
if gold == pred:
print(f"{token}\t{gold}\t{pred} β
")
else:
print(f"{token}\t{gold}\t{pred} β")
Sample Output
Sample Output
πΉ Sample 3: μ 2 μΈ κ΅ μ΄ / ν λ¬Έ μ 9 κ³Ό λͺ© μ€ 8 κ³Ό λͺ© μ΄ 7 0 . 0 % μ΄ μ§ λ§ λ€ λ¬Έ ν κ° μ μ λ
λ₯Ό μ ν΄ μ² μ λ μ
λ κΈ° μ΄ λ² νΈ λ¨ μ΄ μ μ°
κ³ μ¨ μ 7 3 . 3 % λ€ .
Token Gold Pred
μ B-QT B-QT β
2 I-QT I-QT β
μΈ O O β
κ΅ O O β
μ΄ O O β
/ O O β
ν O O β
λ¬Έ O O β
μ O O β
9 B-QT B-QT β
κ³Ό I-QT I-QT β
λͺ© I-QT I-QT β
μ€ O O β
8 B-QT B-QT β
κ³Ό I-QT O β
λͺ© I-QT O β
μ΄ O O β
7 B-QT B-QT β
0 I-QT I-QT β
. I-QT I-QT β
0 I-QT I-QT β
% I-QT I-QT β
μ΄ O O β
μ§ O O β
λ§ O O β
λ€ O O β
λ¬Έ O O β
ν O O β
κ° O O β
μ O O β
μ O O β
λ
O O β
λ₯Ό O O β
μ O O β
ν΄ O O β
μ² O O β
μ O O β
λ O O β
μ
O O β
λ O O β
κΈ° O O β
μ΄ O O β
λ² O O β
νΈ O O β
λ¨ O O β
μ΄ O O β
μ O O β
μ° O O β
κ³ O O β
μ¨ O O β
μ O O β
7 B-QT B-QT β
3 I-QT I-QT β
. I-QT I-QT β
3 I-QT I-QT β
% I-QT I-QT β
λ€ O O β
. O O β
Training Hyperparameters
The following hyperparameters were used during training:
learning_rate: 5e-5
per_device_train_batch_size: 16
per_device_eval_batch_size: 16
weight_decay: 0.01
num_train_epochs: 3
Evaluation
tag precision recall f1-score support
DT 0.81 0.86 0.84 2312
LC 0.66 0.71 0.68 1649
OG 0.67 0.73 0.70 2182
PS 0.84 0.84 0.84 4418
QT 0.89 0.92 0.91 3151
TI 0.86 0.91 0.88 545
result precision recall f1-score support
micro avg 0.80 0.83 0.82 14257
macro avg 0.79 0.83 0.81 14257
weighted avg 0.80 0.83 0.82 14257
Testing Data
[https://huggingface.co/datasets/klue/klue] - NER Datasets - validation
- Downloads last month
- 4
Model tree for skimb22/koelectra-ner-klue-test1
Base model
monologg/koelectra-base-v3-discriminatorDataset used to train skimb22/koelectra-ner-klue-test1
Evaluation results
- F1 (weighted avg) on klue/klueself-reported0.820