vignette/docs/taxonomy.md

10 KiB

발화 라벨 Taxonomy v1.0 — 0615 파란색 라벨 정의서

SoT(라벨 정의). 코드 구현: apps/api/app/taxonomy.py. 예시 데이터: docs/golden_schema.jsonl. 근거: 데이터/README.md(파랑 #3057B9 = 3종 혼재), MASTERPLAN.md §3.1~§3.2(89개·77종, 3축 분리), MEMORY_KNOWLEDGE_PERSONA_DESIGN.md §3.6(kb.chunk.label_id FK). 버전 = 1.0.0 (TAXONOMY_VERSION). 라벨 코드는 불변, 추가는 append-only.

0. 설계 원칙

0615 축어록의 파란색(#3057B9) 주석은 한 셀에 3종이 혼재한다(기법/내담자 상태/슈퍼바이저 논평). 학습 신호 오염을 막기 위해 3개의 독립 축으로 분리한다. 이것이 평가 AI 정답셋과 페르소나 상태전이 정답의 단일 원천이다.

  • 3축 분리: (A) 기법 태그(상담자 발화) · (B) 내담자 상태 태그(내담자 발화) · (C) 슈퍼바이저 논평(둘 다).
  • 위계: 기법은 5개 군집(category) 아래에 둔다 → 분포·과다/과소 집계·리뷰 게이지 축.
  • 복수 부착: 한 발화에 기법·상태·논평이 각각 여러 개 붙을 수 있다.
  • 부착 규칙: 기법은 상담자 발화에만, 상태는 내담자 발화에만(코드에서 강제, Annotation.__post_init__).
  • 원본 미적재: 0615 원문(미성년·자살사고)은 절대 적재하지 않는다. 예시는 합성 변형(source="0615_synthetic").

1. 회기 단계 (Stage)

결정론 상태머신이 소유(LLM 아님). 발화는 발화 시점의 단계를 단일 값으로 기록한다.

code 단계 정의
라포 라포 형성 안전감·관계 구축, 비밀보장 구조화, 비자발성 완화
탐색 탐색 호소문제·정서·인지·위험요인(자살/자해) 탐색
개입 개입 직면·해석·인지재구성·교정적 정서체험
정리 정리 요약·과제·다음 회기 연결·종결

2. 화자 (Speaker)

code 화자 0615 대응
counselor 상담자(수련생/상담사 AI) "상N"
client 내담자(가상내담자 AI) "내N"

3. (A) 기법 라벨 (Technique) — 상담자 발화

각 라벨: 조작적 정의(무엇을 했을 때 부착하는가) + 0615 예시(실제 파랑 라벨에서 정규화).

3.1 RELATIONAL (관계 형성)

code 한글 조작적 정의 0615 표면 라벨 예시
empathy 공감 내담자의 감정·입장을 정확히 알아차리고 그대로 되돌려, "이해받고 있다"를 전달 "공감" / "한숨이 무겁게 느껴지네요"
reflection 반영 내담자 발화·비언어의 핵심(정서/내용)을 거울처럼 재진술 "반영", "정서 반영", "내담자의 반응을 반영함"
validation 타당화 내담자의 감정·반응이 그 상황에서 자연스럽고 정당함을 인정 "타당화", "감정 노출의 타당화"
holding 홀딩 침묵·머뭇거림을 재촉 없이 견디며 안전한 공간을 유지(기다려 줌) "홀딩", "탐색과 홀딩"
self_disclosure 자기공개 상담자 자신의 정보·경험·마음을 라포 목적으로 적절히 개방 "라포형성을 위한 상담자의 자기 개방"
affect_conveyance 정서 전달 내담자를 향한 상담자 자신의 정서·태도를 명시적으로 전달 "상담자의 정서 전달"
humor 유머 무거운 분위기를 가볍게 만들어 참여를 촉진(상황·관계 고려) "유머"

3.2 EXPLORATORY (탐색)

code 한글 조작적 정의 0615 표면 라벨 예시
exploration 탐색 경험·맥락·의미를 더 드러내도록 묻거나 머무름 "탐색", "탐색질문"
facilitative_question 촉진질문 내담자가 더 말하도록 여는 개방형/참여 촉진 질문 "촉진", "참여 촉진 질문"
risk_assessment 위험사정 자살/자해/타해 위험 요인·경험·계획을 직접 탐색 "위험요인 탐색", "자해 위험 및 경험 탐색"
consent_motivation_check 동의·동기 확인 상담 동의·문제의식·변화 동기 수준을 확인 "동의확인, 동기수준 확인"
opinion_check 의견 확인 내담자의 생각·반응·주호소를 되짚어 확인 "내담자 의견 확인", "주호소 문제 재확인"

3.3 INTERVENTION (개입)

code 한글 조작적 정의 0615 표면 라벨 예시
confrontation 직면 내담자 발화·행동의 불일치/모순을 근거와 함께 마주하게 함 "기초자료를 활용하여 반응의 불일치에 직면시킴"
interpretation 해석 표면 너머의 의미·동기·패턴을 가설로 제시 "모순의 의미를 해석함", "비언어적 자극 해석", "행동의 재해석"

3.4 STABILIZING (안정/지지)

code 한글 조작적 정의 0615 표면 라벨 예시
stabilization 안정화 각성·정서를 진정시켜 안전 범위로 되돌림 "안정화"
hope_instillation 희망고취 변화 가능성·욕구를 비추어 희망을 불어넣음 "동기부여, 희망고취", "희망 고취, 욕구 반영"
reinforcement 강화 바람직한 개방·시도를 인정·격려해 지속을 촉진 "강화"
normalization 정상화 반응(감정 노출 등)을 보편적 경험으로 정상화 "감정 반응을 노출하는 것을 정상화함"

3.5 STRUCTURING (구조화)

code 한글 조작적 정의 0615 표면 라벨 예시
principle_explanation 상담원칙 설명 비밀보장·예외 등 상담 원칙·틀을 안내 "상담원칙에 대한 설명", "비밀보장 제외 원칙 설명"
psychoeducation 심리교육 보편적 교범·정보를 주관적 해석과 구별해 전달 "보편적 교범 전달, 주관적 해석과 구별"
homework 과제 부여 회기 간 실천 과제를 이해 가능하게 제시·확인 "다음 회기까지 해 와야 하는 과제 설명"

4. (B) 내담자 상태 태그 (ClientState) — 내담자 발화/비언어

페르소나 저항 엔진의 상태전이 정답 + 평가 AI '반응 읽기' 채점 근거.

code 한글 조작적 정의 0615 표면 라벨 예시
involuntary 비자발적 태도 단답·회피·거부 등 상담에 비자발적 신호 "(아니오)는 비자발적 태도", "(쓴웃음)은 비자발적 태도"
defensive 방어 주제 회피·차단·거리두기 "방어", "부모자녀 관계에 대한 방어적 태도"
suicidal_ideation_admit 자살사고 인정 자살/죽음 생각을 직간접 인정(★안전 핵심) "자살사고 인정"
negative_self_perception 부정적 자기인식 자기에 대한 부정·평가절하 표현 "부정적 자기인식"
conflicted 갈등 상태 양가·상충하는 욕구/감정 사이의 갈등 "갈등 상태"
lack_of_confidence 확신 부족 자신감/확신의 결여 표현 "확신의 부족"
affect_contact 정서 접촉/표현 자기 감정에 접촉하고 표현하기 시작 "정서와 접촉함", "정서와 사고의 표현"
thought_organizing 생각 정리 침묵 속에서 자기 생각을 정리 중 "생각을 정리함"
responds_to_exploration 탐색에 반응 상담자 탐색에 응답·협조 "상담자의 탐색에 반응함"
expresses_plan 계획/욕구 표현 자기 계획·욕구·바람을 표현 "자신의 계획을 표현함"
defense_loosening 방어 완화 누적된 반영/탐색으로 방어가 서서히 풀림(진전 신호) "방어가 서서히 풀어지고 있음"

5. (C) 슈퍼바이저 논평 (SupervisorComment)

2종으로 분리한다. critique 는 intent_deviation(의도 vs 실제)을 구조화한다(윤찬: 1급 시민).

kind 정의 0615 예시
rationale 왜 이 반응이 적절한가 — 근거·의도 설명 "비자발적 내담자의 초기 상담에서는 상담자의 적극적인 안내가 필요함"
critique 개선점·주의 — 과도/부족/평가적 시각 등 "과도한 자기개방일 수 있음", "비언어적 반응의 반영이 더 되었으면 좋았을 것임", "평가적인 시각을 줄 수 있음"

critique 선택 필드: dimension(평가 차원) · expected(권장 의도) · actual(실제) · severity(minor/moderate/major) · author(ai/supervisor).

6. 발화 Annotation 스키마 (golden 단위)

docs/golden_schema.jsonl 한 줄 = Annotation 하나. README JSONL 스키마를 3축 분리로 격상.

{
  "utterance_id": "0615-C-001",   // 화자(C=상담자/K=내담자)+seq 인코딩
  "speaker": "counselor",          // counselor | client
  "stage": "라포",                  // 라포 | 탐색 | 개입 | 정리
  "seq": 0,                         // 회기 내 발화 순서(0-based)
  "text": "…",                      // 발화 텍스트(합성 변형, 원문 미적재)
  "techniques": ["self_disclosure"],        // (A) 상담자 발화만
  "client_states": [],                      // (B) 내담자 발화만
  "comments": [{"kind": "rationale", "text": "…", "author": "ai"}],  // (C)
  "nonverbal": ["(쓴웃음)"],         // 비언어 단서 원문 표기(상태판정 보조)
  "source": "0615_synthetic"        // provenance
}

7. DB 코드테이블 동기화

MASTERPLAN.md §3.2 코드테이블에 enum value(code)를 적재, 다대다 연결.

taxonomy 축 DB 코드테이블 다대다 연결 label_id 참조
Technique technique_label_def(code, category, ko) turn_technique(turn_id, label_id) kb.chunk.label_id
ClientState client_state_def(code, ko) turn_client_state(turn_id, label_id)
Stage stage_def(code) turns.stage
SupervisorComment supervisor_comment(turn_id, kind, text, intent_deviation JSONB) (1:N)

라벨 추가 시: enum 에 append → technique_label_def seed → TAXONOMY_VERSION minor++. 기존 code 변경 금지(골든셋 재현성).