# ============================================================================= # Label Mapping - ai4privacy 1.5m 라벨 -> 내부 학습 라벨 매핑 테이블 # # * 역할: 모델 학습 라벨 = 로깅 스키마 키 = 정책 테이블 키의 단일 소스 # (docs/analysis/2026-07-03-pii-masking-architecture-qna.md [13]) # * 역산 근거: playbooks/privacy_filter/privacy-filter-policy.md (표 1 정형 패턴 / 표 2 마스킹 기준) # * 실측 근거: docs/analysis/2026-07-03-ai4privacy-1p5m-ko-audit.md # * v1 신규 기준선: 과거 데이터셋 버전을 승계하지 않고 29개 모델 라벨로 새로 생성 # ============================================================================= version: v1 date: 2026-09-02 basis: policy: playbooks/privacy_filter/privacy-filter-policy.md audit: docs/analysis/2026-07-03-ai4privacy-1p5m-ko-audit.md # ----------------------------------------------------------------------------- # 1. 모델 학습 라벨 (N=29 -> BIOES 4N+1 = 117클래스) # * data_source: 라벨 표본의 출처 리스트 - ko(1.5m-ko 정제본) / en(1.5m-en 리플레이) / # synthesis(합성 부트스트랩 대기 - 헤드는 유사 라벨 행 복사로 init) # * RRN의 1.5m 유래분은 ko 한정 (en TAXNUM은 GENERIC_ID fallback) - synthesis는 증강 방식 B # * 희소 라벨은 ko·en `synthesis`로 보강하며 29종 모두 양 언어 커버리지를 목표로 함 # ----------------------------------------------------------------------------- model_labels: - name: PERSON description: 성명 (성+이름 병합 단일 스팬) policy_ref: "표2 성명 (김*용 - 첫·끝 글자 제외) / 표2 성명(영문) (앞 4자리 노출) - 치환 시 스크립트(한글/영문)로 규칙 분기, full-span 경계 필수" data_source: [ko, en, synthesis] head_init_base: private_person - name: RRN description: 주민등록번호 policy_ref: "표1 주민번호 / 표2 주민등록번호 (뒤 7자리 마스킹)" data_source: [ko, synthesis] # synthesis = 증강 방식 B 신규 생성분 (전략문 §3.3.1) head_init_base: account_number - name: FRN description: 외국인등록번호 (신설 - 1.5m 소스 0건) policy_ref: "표1 외국인등록번호 ([5-8] 시작) / 표2 주민등록번호(외국인등록번호 포함) (뒤 7자리)" data_source: [synthesis] head_init_from: RRN - name: SSN description: 사회보장번호 계열 (ai4privacy ko·en SOCIALNUM - 미국 9자리로 한정하지 않고 원천 형식 보존) policy_ref: "data-preprocessing-strategy §3.2 및 §3.3.1 - ko·en SOCIALNUM 직접 매핑, 전체 마스킹" data_source: [ko, en, synthesis] head_init_base: account_number - name: GENERIC_ID description: 특정 국가별 세부 taxonomy로 확정하지 못한 신분증 번호와 세무 식별번호를 수용하는 범용 식별자 policy_ref: "audit §5 - ko·en IDCARDNUM 및 en TAXNUM fallback" data_source: [ko, en, synthesis] head_init_base: account_number - name: CARD_NUMBER description: 신용/체크카드 번호 policy_ref: "표1 카드번호 / 표2 카드번호 (7~12번째 자리, PCI-DSS)" data_source: [ko, en, synthesis] # synthesis = 증강 방식 B 신규 생성분 (전략문 §3.3.1) head_init_base: account_number - name: ACCOUNT_NUMBER description: 계좌번호 policy_ref: "표1 계좌번호 (전화번호 흡수 위험 - recognizer 우선순위 필요) / 표2 계좌번호 (뒤 5자리)" data_source: [ko, en, synthesis] # ko 5·en 1건 실측 - 합성 증강 필수 (은행별 포맷 규칙 생성 용이) head_init_base: account_number - name: SECRET description: 인증 시크릿 (비밀번호·API 키·토큰 통합 - 카드/회원/ISP 구분은 문맥 불가 + 액션 동일) policy_ref: "표2 카드비밀번호·온라인 회원 패스워드·ISP비밀번호 (처리 금지 -> 게이트웨이에서는 LLM 노출 금지 = 전체 마스킹으로 해석)" data_source: [ko, synthesis] # PASSWORD ko 5건 실측 + 합성 증강 head_init_base: secret # base 8종 중 secret 행 정확 복사 (인접 아닌 직계 상속) - name: USER_ID description: 온라인 회원 ID policy_ref: "표2 온라인 회원 ID (앞 2자리 제외)" data_source: [ko, en, synthesis] # ko 4·en 20건 실측 - 증강 필수 head_init_base: account_number - name: EMAIL description: 이메일 주소 policy_ref: "표1 이메일 / 표2 이메일주소 (ID 앞 2자리 제외 마스킹)" data_source: [ko, en, synthesis] head_init_base: private_email - name: PHONE description: 전화번호 (휴대폰/일반전화 통합 - 치환 단계에서 프리픽스로 재분류) policy_ref: "표1 휴대폰번호·전화번호 / 표2 기본 뒤 6자리 공통 - 내부망 채널 한정 휴대폰 뒤 4자리 완화 (치환 시 값 프리픽스로 휴대폰 판별 + 채널 축 분기)" data_source: [ko, en, synthesis] head_init_base: private_phone - name: PASSPORT description: 여권번호 (분리 유지 - 마스킹 기준 상이 + ko 3,211건) policy_ref: "표1 여권번호 / 표2 여권번호 (뒤 4자리)" data_source: [ko, en, synthesis] head_init_base: account_number - name: DRIVER_LICENSE description: 운전면허번호 (분리 유지 - 마스킹 기준 상이 + ko 4,092건) policy_ref: "표1 운전면허번호 / 표2 운전면허번호 (중간 6자리)" data_source: [ko, en, synthesis] head_init_base: account_number - name: ADDRESS description: 주소 (시·도로명·건물번호 통합 스팬 - 치환 단계에서 숫자 서브마스킹) policy_ref: "표2 주소 (지번: 읍/면/동 미만 숫자 / 도로명: 건물번호·상세주소 숫자 마스킹 -> 스팬 내 규칙 치환)" data_source: [ko, en, synthesis] head_init_base: private_address - name: ZIPCODE description: 우편번호 (ADDRESS와 분리된 독립 스팬) policy_ref: "data-preprocessing-strategy §3.2 및 §3.3.1" data_source: [ko, en, synthesis] head_init_base: private_address - name: DATE description: 날짜·시각 (생년월일 미분리 - ko 데이터 DOB 0건 + 과잉 마스킹 준수 인정 조항) policy_ref: "표2 생년월일 (노출 금지 - DATE 전체 마스킹으로 초과 준수)" data_source: [ko, en, synthesis] head_init_base: private_date - name: CARD_EXPIRY description: 카드유효기한 policy_ref: "표2 카드유효기한 (**/** 전체 마스킹)" data_source: [synthesis] # 1.5m 원천 0건 - 증강 전담 (PAN 동반 문맥 생성) head_init_base: private_date - name: CVC description: 카드검증코드 (CVC/CVV/CAV 통합 - 표2 문맥 항목 승격 2026-07-21) policy_ref: "표2 카드검증코드 (저장·출력 금지 -> 게이트웨이 전체 마스킹 해석)" data_source: [synthesis] # 1.5m 원천 0건 - 증강 전담 (단독 생성 금지 - PAN 동반 필수) head_init_base: account_number - name: IPIN description: I-PIN 번호 (표2 문맥 항목 승격 2026-07-21 - 값 규격 pending) policy_ref: "표2 I-PIN (뒤 5자리 - 하이픈 무관 숫자 기준)" data_source: [synthesis] # 1.5m 원천 0건 - 규격 확정 전 파일럿 수량만 head_init_base: account_number - name: TRANSACTION_APPROVAL_ID description: 카드 결제 거래 승인번호 (승인번호·결제 승인번호 문맥의 8자리 식별자) policy_ref: "data-preprocessing-supplementation §1 금융 및 VOC/CS 영역 (마스킹 기준 정책 테이블 반영 필요)" data_source: [synthesis] head_init_base: account_number - name: BUSINESS_ID description: 사업자번호·가맹점번호 통합 식별자 (사업자번호 10자리·가맹점번호 9자리) policy_ref: "data-preprocessing-supplementation §1 금융 및 VOC/CS 영역 (마스킹 기준 정책 테이블 반영 필요)" data_source: [synthesis] head_init_base: account_number - name: VIRTUAL_CARD_NUMBER description: 대체카드번호·가상카드번호 (대체카드번호 문맥의 11자리 식별자) policy_ref: "data-preprocessing-supplementation §1 금융 및 VOC/CS 영역 (마스킹 기준 정책 테이블 반영 필요)" data_source: [synthesis] head_init_base: account_number - name: CI description: 연계정보 (Connecting Information, 86자 base64 본문 + == 패딩) policy_ref: "표1 CI (86자+`==` 고정, lookaround 경계) / 표2 CI (앞 7자리 노출)" data_source: [synthesis] head_init_base: account_number - name: IPADDRESS description: IPv4 네트워크 주소 policy_ref: "표1 IP주소 / 표2 고객 IP주소 - 전체 마스킹" data_source: [ko, en, synthesis] head_init_base: private_url - name: MACADDRESS description: 네트워크 인터페이스의 48비트 MAC 주소 policy_ref: "data-preprocessing-strategy §3.2 및 §3.3.1 - 전체 마스킹" data_source: [synthesis] head_init_base: account_number - name: IMEI description: 이동통신 단말의 15자리 국제 단말기 식별번호 policy_ref: "data-preprocessing-strategy §3.2 및 §3.3.1 - 전체 마스킹" data_source: [synthesis] head_init_base: account_number - name: PORT description: 네트워크 서비스 포트 번호 (0~65535) - 과탐 억제용 비PII 라벨 policy_ref: "data-preprocessing-strategy §3.2 및 §3.3.1" data_source: [synthesis] head_init_base: private_url - name: ORGANIZATION description: 회사·은행·병원 등 조직명 - PERSON·ADDRESS 과탐 억제용 비PII 라벨 policy_ref: "data-preprocessing-strategy §2.1.1 및 §3.2" data_source: [ko, en, synthesis] head_init_base: private_person - name: URL description: 웹 URL - 경로·쿼리·토큰을 포함한 전체 URL을 단일 스팬으로 검출 policy_ref: "data-preprocessing-strategy §3.2 및 §3.3.1" data_source: [ko, en, synthesis] head_init_base: private_url # ----------------------------------------------------------------------------- # 2. 소스 라벨 매핑 (ai4privacy 1.5m -> 내부 라벨) # * "O" = 학습에서 비엔티티로 처리하고 privacy_mask에서 제거 # * 조건부 매핑은 locale + value_pattern 안전장치 동반 # ----------------------------------------------------------------------------- source_mapping: # GIVENNAME: PERSON SURNAME: PERSON TITLE: O # 군/양/gun/yang 직역 존칭 88% - 전량 드롭 TAXNUM: label: RRN # condition: locale: ko value_pattern: '^\d{6}-[1-4]\d{6}$' fallback: GENERIC_ID # 비정합 값 / 타 로케일(en 리플레이)은 세무 ID -> 범용 ID SOCIALNUM: SSN IDCARDNUM: GENERIC_ID DRIVERLICENSENUM: DRIVER_LICENSE PASSPORTNUM: PASSPORT TELEPHONENUM: PHONE EMAIL: EMAIL CREDITCARDNUMBER: CARD_NUMBER ACCOUNTNUM: ACCOUNT_NUMBER CITY: ADDRESS STREET: ADDRESS BUILDINGNUM: ADDRESS ZIPCODE: ZIPCODE DATE: DATE TIME: DATE TIMEZONE: O USERNAME: USER_ID PASSWORD: SECRET ORGANISATION: ORGANIZATION IPV4: IPADDRESS URL: URL AMOUNT: O COUNTRY: O CURRENCY: O BANKNAME: ORGANIZATION SALARY: O AGE: O GENDER: O SEX: O JOBTITLE: O HOSPITALNAME: ORGANIZATION ALLERGIES: O WEIGHT: O HEIGHT: O # ----------------------------------------------------------------------------- # 3. 병합 규칙 (정제 스크립트 2단계 - 인접 스팬 병합, ko·en 공통) # * 병합은 언어 공통 (en "John Smith"도 단일 스팬이어야 표2 영문 성명 규칙 성립) # * ko 전용은 병합이 아니라 그 다음의 "자연화"(성+명 붙여쓰기 - 전략문 §3.4.1 2단계) # * 순서 강제 금지: ko 주소는 큰 -> 작, en 주소는 작 -> 큰 역순 - 인접성만 조건 # # * gap_allowed : 두 엔티티 사이의 인식·허용이 가능한 구조 및 패턴 # - whitespace (공백·탭) # - punct (구두점 : `, . - · / ( )` 등 문장 부호) # ----------------------------------------------------------------------------- merge_rules: # person: source_labels: [GIVENNAME, SURNAME] max_gap_chars: 4 gap_allowed: whitespace_or_punct output_label: PERSON address: source_labels: [CITY, STREET, BUILDINGNUM] max_gap_chars: 4 gap_allowed: whitespace_or_punct output_label: ADDRESS