Korean DLP NER (roberta-large)

ํ•œ๊ตญ์–ด ๋ฏผ๊ฐ์ •๋ณด(PII) ํƒ์ง€์šฉ NER ๋ชจ๋ธ. klue/roberta-large๋ฅผ KLUE NER + ์ž์ฒด ํ•ฉ์„ฑ DLP ๋ฐ์ดํ„ฐ๋กœ ํŒŒ์ธํŠœ๋‹.

ํ•™์Šต ๋ฐ์ดํ„ฐ

  • KLUE NER train split (~26K ๋ฌธ์žฅ) โ€” load_dataset("klue", "ner") ์˜ train
    • ๋งคํ•‘: PSโ†’PER, OGโ†’ORG, LCโ†’ADDR, DTโ†’DATE, (QT, TI๋Š” ์ œ์™ธ)
  • ์ž์ฒด ํ•ฉ์„ฑ (~41K ๋ฌธ์žฅ) โ€” ์ฃผ๋ฏผ๋ฒˆํ˜ธ/์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ/์‚ฌ์—…์ž๋ฒˆํ˜ธ/๊ณ„์ขŒ/์นด๋“œ/์—ฌ๊ถŒ/์ฐจ๋Ÿ‰๋ฒˆํ˜ธ ๋“ฑ ํ•œ๊ตญ ํŠนํ™” ํŒจํ„ด

๋ผ๋ฒจ (BIO 25์ข…)

  • ์ธ๋ฌผ/์กฐ์ง/์ฃผ์†Œ/๋‚ ์งœ: PER, ORG, ADDR, DATE
  • ํ•œ๊ตญ ํŠนํ™” PII: RRN(์ฃผ๋ฏผ๋ฒˆํ˜ธ), FRN(์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ), BRN(์‚ฌ์—…์ž๋“ฑ๋ก๋ฒˆํ˜ธ), PHONE, BANK(๊ณ„์ขŒ), EMAIL, CARD, PLATE(์ฐจ๋Ÿ‰๋ฒˆํ˜ธ)

์šฉ๋„

  • ํ•œ๊ตญ์–ด ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ ๋ฏผ๊ฐ์ •๋ณด ์ž๋™ ํƒ์ง€/๋งˆ์Šคํ‚น (DLP)
  • ์ •ํ˜• PII๋Š” regex, ๋น„์ •ํ˜•(์ด๋ฆ„/์กฐ์ง/์ฃผ์†Œ)์€ ์ด NER๋กœ ์•™์ƒ๋ธ”
  • LLM ํ”„๋ก์‹œ ์•ž๋‹จ์—์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์Šค์บ”

์‚ฌ์šฉ ์˜ˆ์‹œ

from transformers import AutoTokenizer, AutoModelForTokenClassification
import torch

model_id = "YakuzaNeko/kr-dlp-ner-roberta-large"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForTokenClassification.from_pretrained(model_id)

text = "ํ™๊ธธ๋™์”จ์˜ ์ฃผ๋ฏผ๋ฒˆํ˜ธ๋Š” 900101-1234567์ด๊ณ  ์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ์— ์‚ฐ๋‹ค."
enc = tok(text, return_offsets_mapping=True, return_tensors="pt")
offsets = enc.pop("offset_mapping")[0].tolist()
with torch.no_grad():
    preds = model(**enc).logits.argmax(-1)[0].tolist()

for (s, e), p in zip(offsets, preds):
    if s == e: continue
    lbl = model.config.id2label[p]
    if lbl != "O":
        print(f"{text[s:e]:10s} โ†’ {lbl}")

์ œํ•œ์‚ฌํ•ญ

๋ผ์ด์„ ์Šค

Apache 2.0 (base model klue/roberta-large์™€ ๋™์ผ)

Downloads last month
1,124
Safetensors
Model size
0.3B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for YakuzaNeko/kr-dlp-ner-roberta-large

Quantized
(1)
this model