# 의도 분류 재학습 파이프라인 설계 **작성일**: 2025-11-17 **목적**: 라벨링된 데이터로 의도 분류기 재학습 및 개선 검증 ## 1. 재학습 배치 스크립트 설계 ### 1.1 입력 데이터 - `IntentReviewQueue`에서 `status='confirmed'` 또는 `status='corrected'`인 항목 - `true_intent`가 설정된 항목만 사용 - 최소 라벨링 개수: intent별 5개 이상 (통계적 유의성) ### 1.2 재학습 대상 모델 1. **Naive Bayes 분류기** (`app/services/intent_bayes.py`) - 라벨링된 메시지로 vocabulary 및 intent별 통계 업데이트 - 기존 seed 데이터와 병합 2. **Ko-SRoBERTa Prototype** (`intent_prototypes` 테이블) - `true_intent`로 재라벨링된 메시지 임베딩으로 centroid 재계산 - 기존 prototype과 가중 평균 또는 교체 ### 1.3 재학습 스크립트 구조 ``` scripts/retrain_intent_classifier.py - 라벨링된 데이터 추출 - Naive Bayes 재학습 - Prototype 재계산 - 검증 (기존 테스트 세트) - 롤백 가능한 백업 생성 ``` ## 2. 재학습 전후 측정 ### 2.1 측정 지표 - **정확도**: 동일 테스트 샘플에서 `predicted_intent == true_intent` 비율 - **리뷰 큐 진입률**: low confidence 케이스 감소율 - **Intent별 F1-score**: intent별 성능 변화 ### 2.2 측정 스크립트 ``` scripts/measure_intent_improvement.py - 재학습 전 baseline 측정 - 재학습 실행 - 재학습 후 측정 - 비교 리포트 생성 ``` ## 3. Active Learning 쿼리 전략 ### 3.1 Uncertainty Sampling - **Margin Sampling**: `confidence(predicted) - confidence(2nd)`가 작은 순서 - **Entropy Sampling**: 예측 분포의 엔트로피가 높은 순서 ### 3.2 구현 위치 - `app/brain/intent_review.py`: `should_enqueue_for_review` 확장 - `app/state/intent_review_repository.py`: 우선순위 정렬 함수 추가 ## 4. 암묵적 피드백 수집 ### 4.1 암묵적 신호 - **재질문**: 같은 사용자가 짧은 시간 내에 유사한 질문 반복 - **세션 종료**: 응답 후 즉시 세션 종료 (불만족 가능성) - **무응답**: 사용자가 응답 없이 다음 메시지 전송 ### 4.2 구현 위치 - `app/services/conversation_service.py`: 세션 종료 감지 - `app/router/message_router.py`: 재질문 패턴 감지 - `app/brain/intent_review.py`: 암묵적 피드백 조건 추가 ## 5. 구현 순서 1. **재학습 배치 스크립트** (TDD) 2. **재학습 전후 측정 스크립트** (TDD) 3. **쿼리 전략 구현** (TDD) 4. **암묵적 피드백 수집** (TDD) 5. **문서 업데이트** --- **참고**: 각 단계는 TDD 원칙에 따라 테스트 먼저 작성 후 구현