pf-bc-ko — 한국어 개인정보(PII) 탐지 토큰 분류 모델
openai/privacy-filter(1.4B)를 한국어 개인정보 탐지에 특화 파인튜닝한 모델.
BC 개인정보 정책(패턴·마스킹 기준표)의 유형 체계와 정렬된 49개 엔티티 ×
BIOES = 197클래스 토큰 분류를 수행한다.
용도 주의: 이 모델은 단독 마스킹 솔루션이 아니라 3-스테이지 파이프라인의 2차 NER 로 설계됐다. 정형 PII 의 유형 확정은 1차 정규식(값 검증)이 최종 책임지며, 모델 출력에는 후처리(BIOES 전이 제약·이름 경계 확장·DOB 재라벨 등, 저장소의
pipeline/pf_ner_backend.py)가 전제된다. 단독 사용 시 아래 한계 항목이 그대로 노출된다.
학습 데이터
| 구성 | 규모 | 내용 |
|---|---|---|
| 다국어 (비ko) | 1,288,687행 | ai4privacy/pii-masking-openpii-1.5m (CC-BY-4.0) — 라벨 쌍둥이 통일(CREDITCARDNUMBER→CARDNUM 등) + 인접 성/이름→NAME 병합 |
| 한국어 (sehe1121/bc-pii-ko) | 62,194행 ×5 업샘플 (실효 19.4%) | openpii ko 서브셋을 한국 규격으로 가공: 값 현지화(주민/카드/면허 등 48,500스팬), 이름 어순·호칭 교정, 절 조합 증강(계좌·CI·IP·유효기간·CVC·I-PIN 등 갭 유형 주입), 부분마스킹 표기·네거티브 샘플 |
전량 합성/공개 데이터 — 실존 개인정보 미포함 (주민번호 등은 형식 규칙만 준수한 난수, 카드번호는 테스트 IIN 대역 + Luhn).
학습 절차
- 2단계: ①전체 1에폭 (lr 2e-5, cosine, warmup 500) → ②데이터 패치(이름 분포 개선) 후 이어달리기 1에폭 (lr 5e-6)
- bf16, 실효 배치 32, max_length 512, 분류 헤드는 197클래스로 교체 후 학습
- 라벨 공간: config 의
id2label에 포함 (O + B/I/E/S × 49)
평가 (ko 정본 test 2,067행 — 증강 미포함 원본 분포)
| 지표 | 값 |
|---|---|
| fine 라벨 strict F1 (seqeval IOBES) | 0.849 (micro P 0.92 / R 0.79) |
| 계열(마스킹 유형) 수준 F1 | 0.870 |
| 이름(PERSON) 문자 커버리지 | 90% (strict 채점은 토크나이저 경계 아티팩트로 과소평가) |
주요 라벨: CARDNUM 0.99 · EMAIL 0.99 · ZIPCODE 0.99 · DRIVERLICENSENUM 0.99 · PASSPORTNUM 0.99 · PHONE_MOBILE 0.96 · DATE 0.96 · TAXNUM 0.94 · SEX 0.92 · PHONE_LANDLINE 0.91 · CITY 0.87 · RRN 0.79
알려진 한계 (파이프라인이 보완하는 항목)
- 이름(NAME): strict F1 0.47 이나 실효 커버 90% — 부분 커버·경계 불일치는 후처리(단어경계 확장)로 교정. 짧은 문맥의 오탐/미탐 잔존 → 존칭 힌트 규칙 + 3차 SLM 백스톱 전제
- DOB: P 1.00 / R 0.10 — 파이프라인의 키워드 재라벨 규칙이 recall 담당
- RRN/FRN 구분: 7번째 숫자 구분은 서브워드 모델에 구조적으로 어려움 — 1차 정규식이 유형 확정 (모델은 스팬 검출)
- 갭 유형 중 미학습군: ACCOUNTNUM·IPIN·USERNAME·PASSWORD·CVC 는 미학습 문맥 일반화 미달 (후속 LLM 증강 트랙) — 1차 정규식/사전이 커버
- 학습 분포가 합성 데이터 기반 — 실무 텍스트 성능은 별도 골드셋 검증 필요
사용
from transformers import AutoModelForTokenClassification, AutoTokenizer # transformers>=5
tok = AutoTokenizer.from_pretrained("sehe1121/pf-bc-ko")
model = AutoModelForTokenClassification.from_pretrained("sehe1121/pf-bc-ko")
# BIOES 디코드·후처리 포함 사용은 저장소의 pipeline/pf_ner_backend.py 참조
출처 고지
- 베이스: openai/privacy-filter
- 데이터: ai4privacy/pii-masking-openpii-1.5m (CC-BY-4.0) 가공
- 라벨 세분화 설계는 OpenMed/privacy-filter-multilingual 의 체계를 참조