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_defseed →TAXONOMY_VERSIONminor++. 기존 code 변경 금지(골든셋 재현성).