# Post-Seed 데이터 파이프라인 (600 시나리오 이후)

> **위치**: 이 문서는 600개 seed 시나리오 수집 완료 이후의 처리 단계를 정리합니다.
> 전체 데이터셋 설계는 `KOREAN_DATASET_PLAN.md`, 모델 학습 계획은 `V3_EMOTION_DETECTION_PLAN.md`를 참고하세요.

---

## 0. 현재 상태 (2026-04-13 기준)

- **Seed 수집 진행률**: 200 / 600 시나리오 (33%)
- **저장 위치**: `data/emotion/seed_scenarios_raw.jsonl`
- **검증 상태**: ✅ 파싱 OK · 16/16 감정 사용 · 타입 비율 정상 (54/26/20) · 중복 거의 없음
- **남은 분포 이슈**: `agreement` 과대(15.6%), `crying` 과소(1.2%) — 다음 400개 배치 프롬프트로 보정 중

> Seed 시나리오 600개는 **학습 데이터 전부가 아닙니다**. 600개는 augmentation 파이프라인의 **품질 기준점(quality anchor)**으로 작동합니다. 실제 학습은 augmentation + 외부 데이터셋이 합쳐진 ~15K–170K 규모로 진행됩니다.

---

## 1. Phase 1 — Seed 파일 마감 처리 (600개 도달 직후)

**소요 시간**: 반나절 (자동화 스크립트)

| 단계 | 작업 | 산출물 |
|---|---|---|
| 1.1 | 최종 검증 (parse, schema, distribution, dedup, structural) | 검증 리포트 |
| 1.2 | LLM 기반 VAD 평가 — 모든 turn에 `[V, A, D]` 부착 | `seed_scenarios_processed.jsonl` |
| 1.3 | VAD 분포 시각화 + sanity check (`emotion_vad_anchors.json`과 비교) | `vad_distribution.png` |
| 1.4 | Stratified train/val/test split (80/10/10), `scenario_id` 누수 방지 | `seed_train.jsonl`, `seed_val.jsonl`, `seed_test.jsonl` |

**1.2 VAD 평가 방법**:
- 모델: GPT-4 또는 Claude (의미 기반 평가)
- 입력: `(setting, style, 이전 turns 컨텍스트, 현재 text)`
- 출력: `{"V": float, "A": float, "D": float, "rationale": str}`
- 검증: anchor 범위(`emotion_vad_anchors.json`)와 비교, ±0.3 이상 벗어난 경우 재평가

---

## 2. Phase 2 — LLM Augmentation (라벨링된 데이터 확장)

**목표**: 600 seed → ~15,000 labeled training examples

| 기법 | 곱셈 | 누적 | 설명 |
|---|---|---|---|
| Seed turns (베이스) | ×1 | ~1,950 | 600 시나리오 × 평균 3.25 turn |
| Paraphrase 확장 | ×5 | ~9,750 | 동일한 emotion + VAD 유지하며 표현 변형 |
| 스타일 변환 (반말↔존댓말↔격식체) | +50% | ~14,600 | 스타일별 분포 균형 |
| Context shuffling | +5% | ~15,300 | 같은 발화에 다른 선행 컨텍스트 부착 |

**2.1 Paraphrase 프롬프트 원칙**:
- emotion label은 **고정** (변경 금지)
- VAD 값은 **±0.1 이내**에서만 변동 허용
- 어휘만 바꾸지 말고 어순/문장 구조까지 다양화
- 한국어 자연스러움 우선 (직역체 금지)

**2.2 품질 검증**:
- 100개 샘플 수동 검토 → emotion preservation 95% 이상이어야 통과
- 통과 못 하면 프롬프트 재설계

---

## 3. Phase 3 — 외부 한국어 감정 데이터셋 (선택적 확장)

**목표**: ~15K → ~50K–170K labeled examples (감정 일반화 강화)

세 단계로 나눠 senior와 합의 후 진행:

### Tier A — 필수 (한국어 원본)
| 데이터셋 | 규모 | 라이선스 | 작업 |
|---|---|---|---|
| **KOTE** | 50K Korean tweets | CC-BY 4.0 | 44 emotion → 16 emotion 매핑 + VAD 부착 |
| **AI Hub 감정 분류 데이터셋** | ~38K | 비상업/연구용 | 라벨 정규화 + VAD 부착 |

→ 합산 **~88K + 15K = ~103K labeled**

### Tier B — 권장 (영어 → 한국어 번역)
| 데이터셋 | 규모 | 작업 |
|---|---|---|
| **GoEmotions (Google)** | 58K | 27 emotion → 16 매핑, 한국어 기계번역 + 인간 spot-check |
| **EmoBank** | 10K | 영어 VAD → 한국어 번역, VAD는 직접 이전 |

→ 합산 **~171K labeled** (Tier A + B)

### Tier C — 보조 (sentiment polarity)
| 데이터셋 | 규모 | 용도 |
|---|---|---|
| **NSMC** | 200K | Valence 차원만 활용 (긍정/부정 → V 부호) |

→ unlabeled 또는 weak label로 distillation에 활용

**의사결정 포인트**: Tier A까지만 갈지, B/C도 포함할지는 시간/품질 trade-off. 권장은 **A까지로 v1 학습 → 결과 보고 B 결정**.

---

## 4. Phase 4 — Distillation 비라벨 코퍼스 (별도 트랙)

**중요**: 이 단계는 위 Phase 1–3과 **별개**입니다. 라벨이 필요 없습니다.

**목적**: XLM-R teacher → MicroALBERT student로 knowledge distillation할 때, teacher가 soft label을 생성할 raw 텍스트 풀.

| 코퍼스 | 규모 | 출처 |
|---|---|---|
| 한국어 위키피디아 | ~500K 문장 | 무료 |
| 모두의 말뭉치 (구어체) | ~2M 문장 | 국립국어원 |
| AI Hub 한국어 대화 raw text | ~1M 문장 | AI Hub |
| Korean Common Crawl (필터링) | ~5M 문장 | 무료 |

→ **총 ~8M 문장** (이 중 1–2M 정도만 실제 distillation에 사용)

이 코퍼스는 teacher 학습이 끝난 후, distillation 시점에만 필요합니다. 미리 다운로드만 받아두면 됩니다.

---

## 5. 최종 데이터셋 요약

```
┌─────────────────────────────────────────────────────────────┐
│ Stage A: Seed 작성 (수동) ──────────────► 600 시나리오      │
│   ↓ Phase 1 (검증 + VAD 평가)                                │
│ Stage B: Processed seeds ──────────────► ~1,950 labeled     │
│   ↓ Phase 2 (LLM augmentation)                              │
│ Stage C: Augmented dataset ────────────► ~15,000 labeled    │
│   ↓ Phase 3 Tier A (KOTE + AI Hub)                          │
│ Stage D: Combined Korean ──────────────► ~103,000 labeled   │
│   ↓ (선택) Phase 3 Tier B 추가                              │
│ Stage E: Multilingual translated ──────► ~171,000 labeled   │
│   ↓ XLM-R teacher fine-tuning                                │
│ Stage F: Fine-tuned teacher                                  │
│   ↓ Phase 4 unlabeled corpus distillation                   │
│ Stage G: MicroALBERT student (5.5M, ~6MB INT8)              │
└─────────────────────────────────────────────────────────────┘
```

---

## 6. Senior 결정 필요 사항

1. **Phase 3 어디까지 진행할지**: Tier A만 (~103K) vs Tier A+B (~171K)
   - Tier B는 번역 노이즈 리스크 있음 → spot-check 비용 추가
2. **VAD 평가 LLM 선택**: GPT-4 vs Claude vs Gemini
   - 비용/속도/품질 trade-off
3. **외부 데이터셋 라이선스 검토**: AI Hub 데이터의 상업적 사용 가능성 확인 필요
4. **Distillation 코퍼스 호스팅**: ~8M 문장 저장/처리 인프라

---

## 7. 다음 액션 (사용자)

- [ ] 남은 400 시나리오 GPT 생성 (보정된 프롬프트 사용) → `seed_scenarios_raw.jsonl`에 append
- [ ] 300개 도달 시 중간 검증 요청 (분포 보정 확인용)
- [ ] 600개 도달 시 Phase 1 시작 알림
