VOOZH about

URL: https://huggingface.co/YATAV-ENT/aegis-personal-pii-ner

⇱ YATAV-ENT/aegis-personal-pii-ner · Hugging Face


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

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.comminjun.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건으로 적음)

Resources

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

License

Apache 2.0

Downloads last month
266

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