TL;DR
규제 환경에서 LLM 앞단의 PII masking은 기능을 붙이는 것보다 실제 탐지율과 오탐률을 측정하는 일이 중요합니다. Microsoft Presidio의 영어 기본 파이프라인은 Greek AFM을 인식하지 못하거나 라벨만 마스킹할 수 있으므로 전용 recognizer에 숫자 패턴, 체크섬, 주변 문맥을 결합해야 합니다. 체크섬을 통과한 후보의 점수를 무조건 1.0으로 만들면 무작위 숫자의 약 9.95%가 오탐으로 잡히며, 반대로 임계값을 0.7로 올리면 최고 산출 점수 0.65를 넘어서 모든 AFM을 놓칩니다. 30개 문장 실험에서 임계값 0.5가 precision·recall 1.00을 기록했지만, 이 결과는 작성자의 데이터에만 해당하므로 자체 도메인 데이터와 pytest로 재검증하고 결정 과정까지 감사 기록에 남겨야 합니다.
섹션별 상세
from presidio_analyzer import AnalyzerEngine
from presidio_anonymizer import AnonymizerEngine
text = "Contact Jane Doe, visa 4012 8888 8888 1881, [email protected]"
hits = AnalyzerEngine().analyze(text=text, language="en")
print(AnonymizerEngine().anonymize(text, analyzer_results=hits).text)
# Contact <PERSON>, visa <CREDIT_CARD>, <EMAIL_ADDRESS>Presidio의 AnalyzerEngine으로 영어 문장에서 개인정보 후보를 찾고 AnonymizerEngine으로 유형별 플레이스홀더로 치환합니다.
def validate_result(self, pattern_text: str) -> bool | None:
# True -> score forced to 1.0, context stops mattering
# False -> candidate eliminated
# None -> eligible; the context words decide
return None if afm.is_valid(afm.normalise(pattern_text)) else FalseAFM 체크섬이 맞아도 탐지를 확정하지 않고 None을 반환해 주변 문맥이 최종 점수에 영향을 주도록 합니다.
AFM_SPELLINGS = tuple(a + "Φ" + "m" for a in "ΑA" for m in "ΜM")Greek 문자와 모양이 같은 Latin A가 문맥 탐지를 우회하지 못하도록 AFM 표기의 조합을 확장합니다.
용어 해설
- 개인정보 마스킹(PII masking)
- — 개인정보를 탐지한 뒤 원문을 플레이스홀더나 대체값으로 바꾸는 처리입니다. LLM에 프롬프트를 보내기 전에 이메일, 전화번호, 세금번호 같은 식별자를 제거해 로그와 추론 입력의 노출을 줄이는 데 쓰입니다.
- 개체명 인식(Named Entity Recognition)
- — 문장 안에서 사람, 조직, 장소, 식별자처럼 의미 있는 구간을 찾아 유형과 신뢰도 점수를 부여하는 기술입니다. 이 글에서는 Greek 텍스트에 영어 NER 파이프라인을 적용할 때 잘못된 구간을 개인정보로 판단하는 문제가 발생했습니다.
- 체크섬(Checksum)
- — 숫자열이 특정 규칙을 만족하는지 계산해 형식상 유효성을 확인하는 검증값입니다. Greek AFM 후보를 걸러내는 데 사용할 수 있지만, 무작위 아홉 자리 숫자의 약 9.95%도 검사를 통과하므로 이것만으로 개인정보 여부를 확정할 수 없습니다.
- 가명처리(Pseudonymisation)
- — 식별자를 다른 값으로 바꾸되 별도의 정보나 복호화 경로를 통해 원래 주체를 다시 알아볼 수 있는 처리입니다. 글은 Presidio의 reversible encrypt operator를 포함한 이 방식을 익명화와 구분하며, 재식별 경로가 있으면 GDPR상 여전히 개인정보라고 설명합니다.
- 정밀도와 재현율(Precision and Recall)
- — 탐지 결과의 정확성과 실제 대상 포착률을 함께 평가하는 지표입니다. 30개 문장 실험에서 임계값 0.5는 정밀도와 재현율 모두 1.00이었지만, 0.7에서는 정밀도 1.00과 재현율 0.00이 되어 모든 세금번호를 놓쳤습니다.
기술
- Microsoft Presidio
- AnalyzerEngine
- AnonymizerEngine
- spaCy
- Python
- QuoteBot
- Cedar
- OPA
- Microsoft Foundry
활용 사례
- 대출 가격 산정 assistant인 QuoteBot
- 보험·의료 등 규제 산업의 LLM 입력 보호
- EU 또는 온프레미스 모델로 개인정보 포함 요청 라우팅
- PII 탐지 임계값과 ruleset_version을 포함한 감사 기록
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.