평가 및 화면 구조 정리

This commit is contained in:
Yun Chan 2026-06-28 21:46:22 +09:00
parent 1248ae8ca4
commit 391639c1de
44 changed files with 5816 additions and 4501 deletions

View file

@ -0,0 +1,74 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "vignette.pii_masking_eval_input.v1",
"title": "Vignette PII masking evaluation input",
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"locale",
"source",
"category",
"severity",
"text",
"expected_entities",
"forbidden_substrings"
],
"properties": {
"id": { "type": "string", "minLength": 1 },
"locale": { "type": "string", "default": "ko-KR" },
"source": {
"type": "string",
"enum": ["synthetic", "operator_supplied_redacted", "operational_gold"],
"default": "synthetic"
},
"category": {
"type": "string",
"enum": [
"name",
"organization",
"contact",
"national_id",
"quasi_identifier",
"negative_control",
"unspecified"
],
"default": "unspecified"
},
"severity": {
"type": "string",
"enum": ["low", "medium", "high", "critical"],
"default": "medium"
},
"text": {
"type": "string",
"minLength": 1,
"description": "Evaluation input text. Use only local synthetic or approved redacted/gold text according to data governance gates."
},
"expected_entities": {
"type": "array",
"items": { "type": "string" },
"uniqueItems": true,
"default": []
},
"unexpected_entities": {
"type": "array",
"items": { "type": "string" },
"uniqueItems": true,
"default": []
},
"forbidden_substrings": {
"type": "array",
"items": { "type": "string" },
"default": []
},
"required_substrings": {
"type": "array",
"items": { "type": "string" },
"default": []
}
}
}
}

View file

@ -0,0 +1,99 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "vignette.pii_masking_eval_report.v1",
"title": "Vignette PII masking evaluation report",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"input_schema_version",
"run_mode",
"data_source",
"evidence_text_included",
"passed",
"cases_total",
"cases_passed",
"cases_failed",
"expected_entity_recall",
"forbidden_substring_removal",
"unexpected_entity_violations",
"by_source",
"by_category",
"by_severity",
"results"
],
"properties": {
"schema_version": { "const": "vignette.pii_masking_eval_report.v1" },
"input_schema_version": { "const": "vignette.pii_masking_eval_input.v1" },
"run_mode": { "const": "technical_dry_run" },
"data_source": { "type": "string" },
"evidence_text_included": { "type": "boolean" },
"passed": { "type": "boolean" },
"cases_total": { "type": "integer", "minimum": 0 },
"cases_passed": { "type": "integer", "minimum": 0 },
"cases_failed": { "type": "integer", "minimum": 0 },
"expected_entity_recall": { "type": "number", "minimum": 0, "maximum": 1 },
"forbidden_substring_removal": { "type": "number", "minimum": 0, "maximum": 1 },
"unexpected_entity_violations": { "type": "integer", "minimum": 0 },
"by_source": { "$ref": "#/$defs/breakdown" },
"by_category": { "$ref": "#/$defs/breakdown" },
"by_severity": { "$ref": "#/$defs/breakdown" },
"results": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"locale",
"source",
"category",
"severity",
"passed",
"entities",
"missing_entities",
"unexpected_entities",
"forbidden_remaining_count",
"required_missing"
],
"properties": {
"id": { "type": "string" },
"locale": { "type": "string" },
"source": { "type": "string" },
"category": { "type": "string" },
"severity": { "type": "string" },
"passed": { "type": "boolean" },
"entities": { "type": "array", "items": { "type": "string" } },
"masked_text": {
"type": "string",
"description": "Optional local synthetic debugging evidence. Do not include this field in operational reports."
},
"forbidden_remaining_count": { "type": "integer", "minimum": 0 },
"missing_entities": { "type": "array", "items": { "type": "string" } },
"unexpected_entities": { "type": "array", "items": { "type": "string" } },
"forbidden_remaining": {
"type": "array",
"items": { "type": "string" },
"description": "Optional local synthetic debugging evidence. Do not include this field in operational reports."
},
"required_missing": { "type": "array", "items": { "type": "string" } }
}
}
}
},
"$defs": {
"breakdown": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": ["cases_total", "cases_passed", "cases_failed"],
"properties": {
"cases_total": { "type": "integer", "minimum": 0 },
"cases_passed": { "type": "integer", "minimum": 0 },
"cases_failed": { "type": "integer", "minimum": 0 }
}
}
}
}
}

View file

@ -1,6 +1,10 @@
[
{
"id": "ko_name_label",
"locale": "ko-KR",
"source": "synthetic",
"category": "name",
"severity": "high",
"text": "이름: 김서연, 연락은 하지 말아 주세요.",
"expected_entities": ["NAME"],
"forbidden_substrings": ["김서연"],
@ -8,13 +12,65 @@
},
{
"id": "ko_name_relationship_context",
"locale": "ko-KR",
"source": "synthetic",
"category": "name",
"severity": "high",
"text": "친구 박민수에게 오늘 상담 내용을 말하지 않았어요.",
"expected_entities": ["NAME"],
"forbidden_substrings": ["박민수"],
"required_substrings": ["친구 [NAME]에게"]
},
{
"id": "ko_name_role_particle",
"locale": "ko-KR",
"source": "synthetic",
"category": "name",
"severity": "high",
"text": "상담자 최하늘은 이전 상담 기록을 보지 않았습니다.",
"expected_entities": ["NAME"],
"forbidden_substrings": ["최하늘"],
"required_substrings": ["상담자 [NAME]은"]
},
{
"id": "ko_name_natural_label_self",
"locale": "ko-KR",
"source": "synthetic",
"category": "name",
"severity": "high",
"text": "제 이름은 김서연입니다.",
"expected_entities": ["NAME"],
"forbidden_substrings": ["김서연"],
"required_substrings": ["제 이름은 [NAME]입니다"]
},
{
"id": "ko_name_natural_label_guardian",
"locale": "ko-KR",
"source": "synthetic",
"category": "name",
"severity": "high",
"text": "보호자 이름은 박민수입니다.",
"expected_entities": ["NAME"],
"forbidden_substrings": ["박민수"],
"required_substrings": ["보호자 이름은 [NAME]입니다"]
},
{
"id": "ko_name_self_intro_copula",
"locale": "ko-KR",
"source": "synthetic",
"category": "name",
"severity": "high",
"text": "저는 최하늘입니다.",
"expected_entities": ["NAME"],
"forbidden_substrings": ["최하늘"],
"required_substrings": ["저는 [NAME]입니다"]
},
{
"id": "ko_org_school_department",
"locale": "ko-KR",
"source": "synthetic",
"category": "organization",
"severity": "high",
"text": "소속은 한신대학교 상담심리학과입니다.",
"expected_entities": ["ORG"],
"unexpected_entities": ["NAME"],
@ -23,16 +79,94 @@
},
{
"id": "ko_org_health_center",
"locale": "ko-KR",
"source": "synthetic",
"category": "organization",
"severity": "high",
"text": "지난주 마음봄상담센터에서 안내를 받았습니다.",
"expected_entities": ["ORG"],
"unexpected_entities": ["NAME"],
"forbidden_substrings": ["마음봄상담센터"],
"required_substrings": ["[ORG]"]
},
{
"id": "ko_org_hospital",
"locale": "ko-KR",
"source": "synthetic",
"category": "organization",
"severity": "high",
"text": "새봄병원에서 진료를 받았다고 말했어요.",
"expected_entities": ["ORG"],
"forbidden_substrings": ["새봄병원"],
"required_substrings": ["[ORG]"]
},
{
"id": "ko_contact_phone_email",
"locale": "ko-KR",
"source": "synthetic",
"category": "contact",
"severity": "critical",
"text": "연락처는 010-1234-5678이고 이메일은 seoyeon@example.com입니다.",
"expected_entities": ["PHONE", "EMAIL"],
"forbidden_substrings": ["010-1234-5678", "seoyeon@example.com"],
"required_substrings": ["[PHONE]", "[EMAIL]"]
},
{
"id": "ko_rrn_numid",
"locale": "ko-KR",
"source": "synthetic",
"category": "national_id",
"severity": "critical",
"text": "주민번호는 990101-1234567이고 보호자 번호는 123456789012입니다.",
"expected_entities": ["RRN", "NUMID"],
"forbidden_substrings": ["990101-1234567", "123456789012"],
"required_substrings": ["[RRN]", "[NUMID]"]
},
{
"id": "ko_date_money_address",
"locale": "ko-KR",
"source": "synthetic",
"category": "quasi_identifier",
"severity": "medium",
"text": "2001년 4월 18일 서울시 강남구 역삼동에서 1200원을 냈어요.",
"expected_entities": ["DATE", "ADDR", "MONEY"],
"forbidden_substrings": ["2001년 4월 18일", "서울시 강남구 역삼동", "1200원"],
"required_substrings": ["[DATE]", "[ADDR]", "[MONEY]"]
},
{
"id": "ko_common_words_false_positive",
"locale": "ko-KR",
"source": "synthetic",
"category": "negative_control",
"severity": "medium",
"text": "학교 가는 게 힘들고 엄마랑 친구 이야기를 하면 불안해요.",
"expected_entities": [],
"unexpected_entities": ["NAME", "ORG"],
"forbidden_substrings": [],
"required_substrings": ["학교", "엄마", "친구"]
},
{
"id": "ko_address_negative_control",
"locale": "ko-KR",
"source": "synthetic",
"category": "negative_control",
"severity": "medium",
"text": "서울 가는 길 이야기를 하면 그냥 마음이 답답해요.",
"expected_entities": [],
"unexpected_entities": ["ADDR"],
"forbidden_substrings": [],
"required_substrings": ["서울 가는 길"]
},
{
"id": "ko_name_label_negative_control",
"locale": "ko-KR",
"source": "synthetic",
"category": "negative_control",
"severity": "medium",
"text": "이름은 중요하지 않고 상담 내용만 이야기하고 싶어요.",
"expected_entities": [],
"unexpected_entities": ["NAME"],
"forbidden_substrings": [],
"required_substrings": ["이름은 중요하지"]
}
]