diff --git a/journey/plans/260113_coldmail_ontology_phase1_5_bayesian_learning.md b/journey/plans/260113_coldmail_ontology_phase1_5_bayesian_learning.md deleted file mode 100644 index 1a29091..0000000 --- a/journey/plans/260113_coldmail_ontology_phase1_5_bayesian_learning.md +++ /dev/null @@ -1,140 +0,0 @@ -# 콜드메일 온톨로지 Phase 1.5: 베이지안 학습 구현 계획 - -**날짜**: 2026-01-13 -**목표**: 온톨로지 규칙 confidence 값을 하드코딩에서 베이지안 학습 기반으로 전환 -**원본 계획**: `plans/251016_ontology_coldmail_implementation.md` (Phase 1 완료) - ---- - -## 배경 - -### 현재 문제점 -- **하드코딩된 confidence**: 온톨로지 규칙의 confidence 값(0.7, 0.9 등)이 코드에 하드코딩되어 있음 -- **학습 불가능**: 사용자 피드백이 규칙 confidence에 반영되지 않음 -- **정적 판정**: 시간이 지나도 규칙 신뢰도가 개선되지 않음 - -### 기존 구현 상태 -- **Phase 1 완료**: 온톨로지 규칙 엔진 구현 완료 (10개 규칙) -- **Naive Bayes**: 단어 빈도 기반 학습은 구현되어 있으나, 온톨로지 규칙과 분리됨 -- **피드백 시스템**: Slack 피드백 수집은 되지만 규칙 confidence 업데이트에 미사용 - ---- - -## 목표 - -### 핵심 목표 -- **규칙별 Beta(α,β) 분포**: 각 온톨로지 규칙(R1, R1B, R2 등)별로 Beta 분포 파라미터 저장 -- **피드백 기반 업데이트**: 사용자 "맞음" 피드백 → α 증가, "틀림" 피드백 → β 증가 -- **동적 confidence 계산**: confidence = α/(α+β)로 실시간 계산하여 하드코딩 값 대체 - -### 기대 효과 -- **지속적 개선**: 피드백이 누적될수록 정확도 향상 -- **규칙별 적응**: 각 규칙이 실제 데이터에 맞게 자동 조정 -- **투명성 유지**: 온톨로지 규칙의 설명 가능성 보존 - ---- - -## 구현 계획 - -### Phase 1.5.1: DB 스키마 설계 (2시간) - -**테이블**: `coldmail_ontology_rule_stats` -```sql -CREATE TABLE coldmail_ontology_rule_stats ( - id UUID PRIMARY KEY DEFAULT gen_random_uuid(), - rule_id VARCHAR(50) NOT NULL UNIQUE, -- R1, R1B, R2, R3, ... - alpha FLOAT DEFAULT 1.0, -- Beta 분포 α 파라미터 - beta FLOAT DEFAULT 1.0, -- Beta 분포 β 파라미터 - created_at TIMESTAMP DEFAULT NOW(), - updated_at TIMESTAMP DEFAULT NOW() -); - -CREATE INDEX idx_rule_id ON coldmail_ontology_rule_stats(rule_id); -``` - -**초기 데이터**: 10개 규칙에 대해 alpha=1.0, beta=1.0 (균등 분포)로 초기화 - -**참고**: 다른 모듈의 베이지안 구현 -- `app/core/emotion/bayesian.py`: Beta 분포 업데이트 패턴 -- `app/services/brain/intent_store.py`: intent_path_stats 테이블의 alpha/beta 구조 - ---- - -### Phase 1.5.2: Repository 구현 (3시간) - -**파일**: `rb8001/app/state/repositories/coldmail_ontology_repository.py` - -**필수 함수**: -- `get_rule_confidence(rule_id)`: 규칙별 confidence 조회 (α/(α+β)) -- `update_rule_feedback(rule_id, is_correct)`: 피드백 기반 alpha/beta 업데이트 (맞음→alpha+1, 틀림→beta+1) -- `get_all_rule_stats()`: 모든 규칙의 alpha/beta 조회 - -**참고 패턴**: -- `coldmail_classifier_repository.py`: 단어 카운트 도메인 (다른 도메인이므로 분리 유지) -- `intent_runtime_repository.py`: `update_beta()` 함수의 INSERT ... ON CONFLICT 패턴 참고 (테이블 구조는 다르므로 완전 공통화는 어려움) - ---- - -### Phase 1.5.3: 온톨로지 Reasoner 수정 (4시간) - -**파일**: `coldmail_ontology_reasoner.py:251-328` - -**변경 사항**: -- `decide_coldmail()` 함수를 async로 변경 -- 매칭된 규칙의 confidence를 DB에서 동적 조회 (하드코딩 값 대신) -- DB 없을 때 하드코딩 값 폴백 (하위 호환성) - ---- - -### Phase 1.5.4: 피드백 연동 (3시간) - -**파일**: `coldmail_feedback.py`, `coldmail_processor.py`, `slack/coldmail_service.py` - -**변경 사항**: -- `process_coldmail()`에서 매칭된 규칙 ID 저장 -- 사용자 피드백 시 매칭된 규칙들의 alpha/beta 업데이트 (맞음→alpha+1, 틀림→beta+1) - ---- - -### Phase 1.5.5: 테스트 및 검증 (2시간) - -**테스트 케이스**: -1. **초기 상태**: DB 없을 때 하드코딩 값 사용 확인 -2. **피드백 업데이트**: "맞음" 클릭 후 alpha 증가 확인 -3. **confidence 계산**: α/(α+β) 값이 올바르게 계산되는지 확인 -4. **다중 규칙**: 여러 규칙 매칭 시 각각 독립적으로 업데이트되는지 확인 - -**검증 지표**: -- 피드백 반영 시간: 즉시 반영 (< 1초) -- 하위 호환성: 기존 하드코딩 값과 유사한 초기 동작 -- 정확도 개선: 피드백 누적 후 정확도 향상 측정 - ---- - -## 구현 순서 - -1. **DB 스키마 생성** (Phase 1.5.1) -2. **Repository 구현** (Phase 1.5.2) -3. **온톨로지 Reasoner 수정** (Phase 1.5.3) -4. **피드백 연동** (Phase 1.5.4) -5. **테스트 및 검증** (Phase 1.5.5) - -**소요 시간**: 총 14시간 (약 2일) - ---- - -## 참고 문서 - -- 원본 계획: `plans/archive/251016_ontology_coldmail_implementation.md` -- Phase 1 구현: `troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md` -- 검증 문서: `troubleshooting/251016_ontology_filter_validation.md` -- 베이지안 패턴: `app/core/emotion/bayesian.py`, `app/services/brain/intent_store.py` - ---- - -## 주의사항 - -- **하위 호환성**: 기존 하드코딩 값은 초기값으로 유지 (DB 없을 때 폴백) -- **점진적 전환**: 기존 규칙 confidence를 DB에 마이그레이션하여 초기값 설정 -- **성능**: DB 조회는 비동기로 처리하여 필터링 속도 저하 방지 -- **코드 원칙 준수**: Repository 패턴 사용, 도메인별 분리 유지 (`coldmail_classifier_repository`는 단어 카운트, `coldmail_ontology_repository`는 규칙 통계로 분리) diff --git a/journey/plans/archive/260113_coldmail_ontology_phase1_5_bayesian_learning.md b/journey/plans/archive/260113_coldmail_ontology_phase1_5_bayesian_learning.md new file mode 100644 index 0000000..86be0bc --- /dev/null +++ b/journey/plans/archive/260113_coldmail_ontology_phase1_5_bayesian_learning.md @@ -0,0 +1,17 @@ +# 콜드메일 온톨로지 Phase 1.5: 베이지안 학습 구현 계획 (완료) + +**날짜**: 2026-01-13 +**목표**: 온톨로지 규칙 confidence 값을 하드코딩에서 베이지안 학습 기반으로 전환 +**상태**: ✅ 전체 완료 + +--- + +→ 상세: `troubleshooting/260113_coldmail_ontology_phase1_5_implementation.md` + +--- + +## 참고 문서 + +- 원본 계획: `plans/archive/251016_ontology_coldmail_implementation.md` +- Phase 1 구현: `troubleshooting/251014_claude_coldmail_filter_tokenization_issue.md` +- 베이지안 패턴: `app/core/emotion/bayesian.py`, `app/services/brain/intent_store.py`