klue/klue
Viewer β’ Updated β’ 206k β’ 3.38k β’ 96
from transformers import AutoTokenizer, AutoModelForTokenClassification
>>> model_path = "skimb22/koelectra-ner-klue-test1"
>>> model = AutoModelForTokenClassification.from_pretrained(model_path)
>>> tokenizer = AutoTokenizer.from_pretrained(model_path)
>>> 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)}
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 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 β
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
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
[https://huggingface.co/datasets/klue/klue] - NER Datasets - validation
Base model
monologg/koelectra-base-v3-discriminator