Token Classification
ONNX
Korean
English
onnxruntime
bert
pii
ner
privacy

AEGIS Personal PII NER

GPT, Gemini ๋“ฑ AI ์„œ๋น„์Šค ์‚ฌ์šฉ ์‹œ ๊ฐœ์ธ์ •๋ณด(PII) ์œ ์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๊ตญ์–ด NER ๋ชจ๋ธ. ONNX INT8 ์–‘์žํ™” ๋ชจ๋ธ๋กœ, ํฌ๋กฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์—์„œ onnxruntime-web์œผ๋กœ ๋ธŒ๋ผ์šฐ์ € ๋‚ด ์‹ค์‹œ๊ฐ„ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค.

Current version: v2 | All versions

Model Details

Base bert-base-multilingual-cased (178M params)
Task Token Classification (BIO tagging)
Labels 37 (18 PII types ร— B/I + O)
Format ONNX INT8 dynamic quantization
Languages Korean, English
Version v2

Supported PII Types (18)

GIVENNAME, SURNAME, USERNAME, EMAIL, TELEPHONENUM, DATEOFBIRTH, CREDITCARDNUMBER, IDCARD, STREET, CITY, ZIPCODE, BUILDINGNUM, IP_ADDRESS, PASSWORD, ACCOUNTNUM, DRIVERLICENSENUM, TIME, COMPANY

Benchmark โ€” v2 (Current)

Metric Score
Entity-level Span F1 0.9234
Token-level F1 0.9271
English F1 0.9119
Korean F1 0.9632
False Positive Rate 0.0033
Latency (avg) 55.28ms
PII ์œ ํ˜•๋ณ„ ์ƒ์„ธ ์„ฑ๋Šฅ
Entity F1 Precision Recall
IP_ADDRESS 1.0 1.0 1.0
EMAIL 0.9978 0.9955 1.0
USERNAME 0.9864 0.9898 0.9831
CITY 0.98 0.9787 0.9813
TELEPHONENUM 0.9568 0.958 0.9557
ZIPCODE 0.9358 0.9309 0.9409
PASSWORD 0.9268 0.9421 0.912
IDCARD 0.9222 0.908 0.9367
DRIVERLICENSENUM 0.9187 0.8972 0.9412
GIVENNAME 0.9114 0.9024 0.9206
DATEOFBIRTH 0.9096 0.9096 0.9096
SURNAME 0.8908 0.8979 0.8839
BUILDINGNUM 0.8735 0.8841 0.8631
CREDITCARDNUMBER 0.8603 0.8556 0.8652
COMPANY 0.8571 1.0 0.75
STREET 0.8308 0.8333 0.8282
ACCOUNTNUM 0.75 0.7213 0.7811

Version Comparison

Version Span F1 EN F1 KO F1 FPR Latency
v2 (current) 0.9234 0.9119 0.9632 0.0033 55.28ms
v1 0.8788 0.9168 0.6842 0.0533 57.79ms

Usage

Load specific version

from transformers import AutoTokenizer, AutoModelForTokenClassification

# Latest (main branch)
model = AutoModelForTokenClassification.from_pretrained("YATAV-ENT/aegis-personal-pii-ner")
tokenizer = AutoTokenizer.from_pretrained("YATAV-ENT/aegis-personal-pii-ner")

# Pin to specific version
model = AutoModelForTokenClassification.from_pretrained("YATAV-ENT/aegis-personal-pii-ner", revision="v2")
tokenizer = AutoTokenizer.from_pretrained("YATAV-ENT/aegis-personal-pii-ner", revision="v2")

ONNX Runtime (Browser / Node.js)

import { InferenceSession } from "onnxruntime-web";
const session = await InferenceSession.create("onnx/model_quantized.onnx");

Download specific version

from huggingface_hub import hf_hub_download

path = hf_hub_download(
    repo_id="YATAV-ENT/aegis-personal-pii-ner",
    filename="onnx/model_quantized.onnx",
    revision="v1"  # any tag or commit hash
)

Release Notes

v2 โ€” ํ•œ๊ตญ์–ด ์„ฑ๋Šฅ ๋Œ€ํญ ๊ฐœ์„  + ์˜คํƒ๋ฅ  ๊ฐ์†Œ

์š”์•ฝ

v1 ๋ฒค์น˜๋งˆํฌ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ํ•œ๊ตญ์–ด F1์„ 0.68 โ†’ 0.96์œผ๋กœ ๋Œ€ํญ ๊ฐœ์„ ํ•˜๊ณ  ์˜คํƒ๋ฅ ์„ 5.33% โ†’ 0.33%๋กœ ๊ฐ์†Œ์‹œํ‚จ ๋ฒ„์ „. ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ๋น„ํ˜„์‹ค์  ํŒจํ„ด ์ˆ˜์ •, ํ•™์Šต ๋ฐ์ดํ„ฐ ๋‹ค์–‘ํ™”, ํ›„์ฒ˜๋ฆฌ ๊ฒ€์ฆ ๊ฐ•ํ™”๋ฅผ ๋™์‹œ์— ์ง„ํ–‰.

v1 ๋Œ€๋น„ ๋ณ€๊ฒฝ์‚ฌํ•ญ

1. ํ…Œ์ŠคํŠธ์…‹ ์ˆ˜์ •

  • ํ•œ๊ตญ์–ด ์ด๋ฉ”์ผ ํŒจํ„ด ํ˜„์‹คํ™”: ๋ฏผ์ค€.์ตœ@naver.com โ†’ minjun.choi@naver.com (๋กœ๋งˆ์ž username)
    • ์‹ค์ œ ํ•œ๊ตญ ์ด๋ฉ”์ผ ์„œ๋น„์Šค๋Š” ์˜๋ฌธ ์•„์ด๋””๋งŒ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ, ํ˜„์‹ค์ ์ธ ํŒจํ„ด์œผ๋กœ ์ˆ˜์ •
  • ํ•œ๊ตญ์–ด ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ํ™•๋Œ€: 200๊ฑด โ†’ 350๊ฑด
    • IDCARD(์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ), CREDITCARDNUMBER, DRIVERLICENSENUM, USERNAME, COMPANY, BUILDINGNUM, DATEOFBIRTH ๋“ฑ ๋ˆ„๋ฝ ์œ ํ˜• ์ถ”๊ฐ€
    • ์ข…ํ•ฉ ์„œ๋ฅ˜ ์‹œ๋‚˜๋ฆฌ์˜ค (๊ณ„์•ฝ์„œ, ๋ฐฐ์†ก์žฅ ๋“ฑ ๋ณตํ•ฉ PII ๋ฌธ์„œ) ์ถ”๊ฐ€

2. ํ•™์Šต ๋ฐ์ดํ„ฐ ๋ณด๊ฐ• (Hard Negative + Augmentation)

  • BUILDINGNUM Negative 3,000๊ฑด: "ํšŒ์› ์ˆ˜ 1,234๋ช…", "Total revenue: $4,567" ๋“ฑ ๊ฑด๋ฌผ๋ฒˆํ˜ธ๊ฐ€ ์•„๋‹Œ 3~5์ž๋ฆฌ ์ˆซ์ž ํŒจํ„ด
  • ํ•œ๊ตญ์–ด ์ด๋ฉ”์ผ Augmentation 2,000๊ฑด: shin5349@kakao.com, minjun.kim@naver.com ๋“ฑ ํ˜„์‹ค์  ๋กœ๋งˆ์ž ์ด๋ฉ”์ผ
  • ํ•œ๊ตญ์–ด ๋ณตํ•ฉ PII Augmentation 2,000๊ฑด: ์ด๋ฆ„+์ „ํ™”+์ฃผ์†Œ๊ฐ€ ํ•จ๊ป˜ ๋“ฑ์žฅํ•˜๋Š” ๊ณ„์•ฝ์„œ, ๋ฐฐ์†ก์žฅ, ์ด๋ ฅ์„œ ์‹œ๋‚˜๋ฆฌ์˜ค

3. ํ›„์ฒ˜๋ฆฌ ๊ฒ€์ฆ(Validator) ๊ฐ•ํ™”

  • BUILDINGNUM context-aware ํ•„ํ„ฐ๋ง: ์ฃผ๋ณ€ 50์ž์— "๋™", "๋ฒˆ์ง€", "building", "apt" ๋“ฑ ๊ฑด๋ฌผ ๊ด€๋ จ ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ œ๊ฑฐ
  • Score threshold ํ•„ํ„ฐ๋ง: BUILDINGNUM โ‰ฅ0.90, STREET โ‰ฅ0.80 ๋“ฑ ์ €์‹ ๋ขฐ๋„ ์˜ˆ์ธก ์ฐจ๋‹จ
  • STREET/ACCOUNTNUM validator: ์ตœ์†Œ ๊ธธ์ด(3์ž) ๋ฐ ํฌ๋งท ๊ฒ€์ฆ ์ถ”๊ฐ€
  • Span ๊ฒฝ๊ณ„ ๋ณด์ •(correct_spans): EMAIL, IP_ADDRESS, TELEPHONENUM์˜ ๋ถˆ์™„์ „ํ•œ span์„ regex๋กœ ๋ณด์ •

4. ๋ฒค์น˜๋งˆํฌ ์‹œ์Šคํ…œ ๊ฐœ์„ 

  • benchmark.py์˜ FPR ํ‰๊ฐ€์— correct_spans ์ ์šฉํ•˜์—ฌ ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ ์กฐ๊ฑด์œผ๋กœ ์ธก์ •

์„ฑ๊ณผ

Metric v1 v2 ๋ณ€ํ™”
Span F1 0.8788 0.9234 +5.1%p
Korean F1 0.6842 0.9632 +27.9%p
English F1 0.9168 0.9119 -0.5%p
EMAIL F1 0.7408 0.9978 +25.7%p
FPR 5.33% 0.33% -5.0%p

์ž”์—ฌ ๊ณผ์ œ

  • BUILDINGNUM ์ž”์—ฌ ์˜คํƒ 1๊ฑด: "Step 4100 of 1747 is now complete" โ†’ BUILDINGNUM("1747", 0.974)
  • ACCOUNTNUM F1 0.75 โ€” ๋‹ค์–‘ํ•œ ํ•œ๊ตญ ๊ณ„์ขŒ๋ฒˆํ˜ธ ํŒจํ„ด ํ•™์Šต ํ•„์š”
  • STREET F1 0.83 โ€” ํ•œ๊ตญ ์ฃผ์†Œ ์ฒด๊ณ„ ํŠนํ™” ํ•™์Šต ํ•„์š”
  • COMPANY F1 0.86 โ€” ํ•œ๊ตญ ๊ธฐ์—…๋ช… ๋ฐ์ดํ„ฐ ๋ณด๊ฐ• ํ•„์š” (ํ…Œ์ŠคํŠธ ์ƒ˜ํ”Œ 12๊ฑด์œผ๋กœ ์ ์Œ)

v1 โ€” ์ดˆ๊ธฐ ํ•™์Šต ๋ชจ๋ธ

v1 โ€” ์ดˆ๊ธฐ ํ•™์Šต ๋ชจ๋ธ

์š”์•ฝ

์ฝ”๋“œ/CLI Hard Negative์™€ ํ•œ๊ตญ์–ด ์ด๋ฆ„ Hard Negative๋ฅผ ํฌํ•จํ•œ ์ฒซ ๋ฒˆ์งธ ์ •์‹ ํ•™์Šต. ์ด์ „ ์‹คํ—˜ ๋ชจ๋ธ(v3~v5)์„ ๋ชจ๋‘ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ •์ œ๋œ ๋ฐ์ดํ„ฐ์…‹๊ณผ ๋ฒค์น˜๋งˆํฌ ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ ์‹œ์ž‘ํ•œ ๋ฒ„์ „.

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

๋ฐ์ดํ„ฐ์…‹ ์„ค๋ช… Train Val
ko ํ•œ๊ตญ์–ด ํ•ฉ์„ฑ PII (ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜) 64,000 16,000
ko_sentinel BoB14TeamSentinel ํ•œ๊ตญ์–ด ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ 20,317 5,080
ko_hard_neg ํ•œ๊ตญ์–ด Hard Negative (์ฝ”๋“œ/CLI, ์ด๋ฆ„ ๋“ฑ) 19,404 4,851
en ai4privacy ์˜์–ด ๋ฐ์ดํ„ฐ 47,744 11,872
en_hard_neg ์˜์–ด Hard Negative 18,550 4,637
ํ•ฉ๊ณ„ 170,015 40,440

์ฃผ์š” ํŠน์ง•

  • ์ฝ”๋“œ/CLI Hard Negative: git commit, docker run, Python/JS/SQL ์ฝ”๋“œ ์กฐ๊ฐ ๋“ฑ์„ ํ•™์Šตํ•˜์—ฌ USERNAME/PASSWORD ์˜คํƒ ๋ฐฉ์ง€
  • ํ•œ๊ตญ์–ด ์ด๋ฆ„ Hard Negative: "๊ฒฝ์ œ", "์„œ์šธ", "ํ™”์š”์ผ" ๋“ฑ ์ผ์ƒ ํ•œ๊ตญ์–ด ๋‹จ์–ด๊ฐ€ SURNAME/GIVENNAME์œผ๋กœ ์˜คํƒ๋˜๋Š” ๊ฒƒ ๋ฐฉ์ง€
  • Standalone PII ํŒจํ„ด: ๋ฌธ๋งฅ ์—†์ด ์ˆซ์ž๋งŒ ์ž…๋ ฅํ•ด๋„ ์ฃผ๋ฏผ๋ฒˆํ˜ธ, SSN, ์‹ ์šฉ์นด๋“œ ๋“ฑ ๊ตฌ์กฐ์  PII ํƒ์ง€

์•Œ๋ ค์ง„ ๋ฌธ์ œ

  • BUILDINGNUM ์˜คํƒ ์‹ฌ๊ฐ: 4์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๊ฑด๋ฌผ๋ฒˆํ˜ธ๋กœ ๊ณผ์ž‰ ํƒ์ง€ โ†’ FPR 5.33%์˜ ์ฃผ์š” ์›์ธ
  • ํ•œ๊ตญ์–ด EMAIL F1 ๋‚ฎ์Œ (0.74): ํ…Œ์ŠคํŠธ์…‹์˜ ์ด๋ฉ”์ผ ํŒจํ„ด์ด ๋น„ํ˜„์‹ค์  (ํ•œ๊ธ€ username)์ด์—ˆ๊ณ , ํ•™์Šต ๋ฐ์ดํ„ฐ ๋‹ค์–‘์„ฑ ๋ถ€์กฑ
  • ํ•œ๊ตญ์–ด ์ „์ฒด F1 0.68: ์ด๋ฆ„, ์ฃผ์†Œ, ๊ณ„์ขŒ๋ฒˆํ˜ธ ๋“ฑ ํ•œ๊ตญ์–ด PII ์œ ํ˜•๋ณ„ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ถ€์กฑ

Resources

  • Full benchmark reports: benchmarks/ directory
  • Detailed changelogs: changelogs/ directory

License

Apache 2.0

Downloads last month
118
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Dataset used to train YATAV-ENT/aegis-personal-pii-ner