
OpenAI Privacy Filter의 역방향: 동일한 1.5B 모델을 사용하며, 마스킹 대신 PII를 구조화된 스팬으로 반환합니다.
OpenAI는 Privacy Filter를 출시했습니다. 이 모델은 텍스트에서 PII를 숨깁니다. 방어자는 데이터 유출을 막기 위해 사용합니다.
하지만 모든 방어에는 두 번째 측면이 있습니다. 공격자도 PII가 필요합니다. 로그, 덤프, 버려진 S3 버킷, 도난당한 받은 편지함에서 말이죠. 같은 작업: 텍스트 더미에서 개인 정보를 모두 찾아내는 것.
Privacy Filter는 마스킹합니다. Privacy Parser는 추출합니다.
동일한 모델, 동일한 레이블 분류 체계, 동일한 가중치. <REDACTED> 대신 구조화된 스팬(무엇, 어디, 어떤 유형)을 얻습니다.
방어: 데이터가 유출되기 전에 감사합니다. 공격: 유출된 후에 다른 사람의 데이터를 파싱합니다.
이 도구는 자신이 어느 편에 있는지 모릅니다. 그저 좋은 파서일 뿐입니다.
uv venv
uv pip install -e ./privacy-filter
uv pip install -e ./pii_parser
첫 실행 시 opf 1.5B 체크포인트(~3 GB)를 ~/.opf/privacy_filter/에 다운로드합니다.
from pii_parser.hybrid import HybridPIIParser
parser = HybridPIIParser(device="cpu")
result = parser.parse(
"Hi Quindle Testwick ([email protected] / +1-415-555-0102), "
"account 40702810500001234567, 14 Beautiful Ct, Anytown USA, "
"password Priv4cy-Filt3r-2026."
)
for s in result.spans:
print(f"{s.label:18} {s.text}")
private_person Quindle Testwick
private_email [email protected]
private_phone +1-415-555-0102
account_number 40702810500001234567
private_address 14 Beautiful Ct, Anytown USA
secret Priv4cy-Filt3r-2026
python -m pii_parser.cli_model "Alice paid 40702810500001234567 on 2026-05-17."
Hybrid = 모델 + 스팬 병합 + 정규식 백스톱. 이걸 사용하세요.
opf v2 분류 — 8개 범주:
private_person · private_email · private_phone · private_address ·
private_url · private_date · account_number · secret
text
↓
opf 1.5B → BIOES logits → Viterbi (tuned) → char spans
↓
span-merge (glues Quindle + Testwick)
↓
regex backstop (URL, secret, account — where the model misses)
↓
spans[]
python pii_parser/tests/test_hybrid.py
Fixture F1: 0.929
Scenarios: 8/8 passed
Latency: ~600 ms CPU
Apache-2.0.
| 백엔드 | 가중치 | 속도 | F1 |
|---|
PIIParser | 없음 | µs | 1.000 |
ModelPIIParser | 1.5B | 500 ms CPU | 0.733 |
HybridPIIParser | 1.5B | 600 ms CPU | 0.929 |