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 |
| 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