Files
C.E.L_Slide_test2/tests/matching/DECK_03_METHODS.html
T
KyeongminandClaude Opus 4.8 b836e79ee1 wip: phase_z2 evidence 파이프라인 + matching 실험(phase2~26) + 프론트 trace 패널 진행분 스냅샷
- src: phase_z2 composition/mapper/pipeline/placement_planner/retry, ai_fallback(prompts/schema/validate), mdx_text_atoms 신규
- Front: PipelineTracePanel 신규, FramePanel/SlideCanvas/Home/designAgentApi 등 갱신 + 테스트 4종 추가
- templates/phase_z2: catalog(component_expansion_registry, node_slot_mapping 신규), frames, families, slide_base 갱신
- tests/matching: phase2~26 매칭 실험 스크립트·리포트·온톨로지 전체 (미커밋 진행분)
- tests: b4_v4 evidence, task5~28.5 시리즈, regression(imp95 baseline) 등 신규 테스트 대량 추가
- docs/reference: MDX 구조 인벤토리, MDX→Frame 구조 계약 문서
- scripts: mdx 계약/parity/coverage/viewport 체크, gitea comment, run sync 유틸
- .gitignore: tmp*.json, chromedriver, .orchestrator, *.pkl, Front_test* 등 임시/스냅샷 제외

미완성 작업의 보존용 스냅샷 커밋 (2026-07-02)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 17:03:42 +09:00

39 lines
6.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ko"><head><meta charset="utf-8"><title>03. V1~V4 방법 설명</title>
<style>
@page { size: A4 portrait; margin: 12mm; }
* { box-sizing: border-box; }
body {
font-family: -apple-system, "Segoe UI", Pretendard, "Malgun Gothic", sans-serif;
background: white; color: #1e293b; margin: 0; font-size: 9.5pt; line-height: 1.4;
}
@media screen {
body { max-width: 210mm; margin: 10mm auto; box-shadow: 0 4px 24px rgba(0,0,0,0.12); padding: 12mm; background: #fff; }
}
h1 { font-size: 13pt; border-bottom: 2pt solid #2563eb; padding-bottom: 3pt; margin: 0 0 4pt 0; color: #0f172a; }
h2 { font-size: 10pt; color: #1e293b; margin: 6pt 0 3pt; padding: 2pt 5pt; background: #e0e7ff; border-left: 3pt solid #0a6; border-radius: 2pt; }
.meta { color: #64748b; font-size: 8pt; font-style: italic; margin-bottom: 5pt; }
.mdx-card { background: #f8fafc; border: 0.5pt solid #cbd5e1; border-radius: 3pt; padding: 5pt 8pt; margin: 3pt 0 5pt; }
.mdx-card .title { font-weight: 700; color: #0f172a; font-size: 9.5pt; margin-bottom: 2pt; }
.popup-tag { display: inline-block; padding: 1pt 5pt; background: #eef2ff; color: #3730a3; border-radius: 8pt; font-size: 7.5pt; font-weight: 700; margin-left: 4pt; vertical-align: middle; }
.mdx-card ul { margin: 2pt 0 0 0; padding-left: 12pt; font-size: 8pt; color: #475569; }
table { border-collapse: collapse; width: 100%; font-size: 9pt; }
th, td { border: 0.5pt solid #cbd5e1; padding: 3pt 5pt; text-align: left; vertical-align: top; }
th { background: #1e293b; color: white; font-weight: 700; font-size: 8.5pt; text-align: center; }
code { background: #f1f5f9; padding: 0 3pt; border-radius: 2pt; font-family: ui-monospace, Menlo, monospace; font-size: 8.5pt; color: #0f172a; }
.formula-box { background: #eff6ff; border: 0.7pt solid #93c5fd; border-radius: 3pt; padding: 5pt 8pt; margin: 3pt 0; font-size: 9pt; color: #1e3a8a; }
.label-use_as_is { background: #d1fae5; color: #065f46; padding: 1pt 5pt; border-radius: 2pt; font-size: 7.5pt; font-weight: 700; }
.label-light_edit { background: #dbeafe; color: #1e40af; padding: 1pt 5pt; border-radius: 2pt; font-size: 7.5pt; font-weight: 700; }
.label-restructure { background: #fef3c7; color: #92400e; padding: 1pt 5pt; border-radius: 2pt; font-size: 7.5pt; font-weight: 700; }
.label-reject { background: #fee2e2; color: #991b1b; padding: 1pt 5pt; border-radius: 2pt; font-size: 7.5pt; font-weight: 700; }
/* DECK 3: 방법 설명 */
.method-block { border: 0.7pt solid #cbd5e1; border-radius: 4pt; padding: 8pt 10pt; margin: 5pt 0; background: #fafafa; }
.method-block .method-name { font-size: 12pt; font-weight: 700; color: #2563eb; margin-bottom: 2pt; }
.method-block .method-name .badge { display: inline-block; padding: 2pt 7pt; background: #2563eb; color: white; border-radius: 3pt; font-size: 9pt; margin-right: 6pt; }
.method-block .method-tagline { font-size: 9pt; color: #475569; margin-bottom: 5pt; font-style: italic; }
.method-block .method-formula { background: white; border: 0.5pt solid #cbd5e1; padding: 4pt 7pt; border-radius: 2pt; font-family: ui-monospace, Menlo, monospace; font-size: 8.5pt; color: #0f172a; margin: 3pt 0; }
.method-block .method-detail { font-size: 9pt; line-height: 1.5; color: #1e293b; }
.method-block .method-detail b { color: #0f172a; }
.cascade-arrow { text-align: center; font-size: 12pt; color: #64748b; margin: 2pt 0; }
</style></head><body><h1>03. V1~V4 매칭 방법 — 무엇이고 어떻게 적용되는가</h1><div class="meta">키워드 → 의미 → 구조 → 적용 가능성으로 신호를 누적해 캐스케이드 매칭.</div><div class="method-block"><div class="method-name"><span class="badge">V1</span>키워드 매칭 (Baseline)</div><div class="method-tagline">"이 단어들이 같이 나오나?" — 빠른 후보 필터</div><div class="method-formula">matching_score = 0.414 × 핵심(단독) + 0.320 × 세트(co-occurrence) + 0.265 × 연관</div><div class="method-detail">· 프레임 텍스트에서 <b>핵심 / 세트 / 연관</b> 3계층 키워드 추출<br/>· 가중치는 <b>Logistic Regression 학습</b> (TARGET 4 × 32, LOOCV 4/4)<br/>· 32 프레임 중 1위 = 후보 프레임. <b>TARGET 4/4 정답</b></div></div><div class="cascade-arrow">↓ V1 Top-K 후보를 다음 축으로 재정렬</div><div class="method-block"><div class="method-name"><span class="badge">V2</span>의미 매칭 (semantic rerank)</div><div class="method-tagline">"단어가 달라도 의미가 같은가?"</div><div class="method-formula">similarity = cosine(MDX summary embedding, frame.content embedding) · model = jhgan/ko-sroberta-multitask</div><div class="method-detail">· V1 Top-K 후보 안에서 의미 유사도로 재정렬<br/>· 키워드는 다르지만 같은 주제를 다룰 때 잡아냄</div></div><div class="cascade-arrow"></div><div class="method-block"><div class="method-name"><span class="badge">V3</span>구조 매칭 (structure rerank)</div><div class="method-tagline">"이 콘텐츠를 담을 수 있는 레이아웃인가?"</div><div class="method-formula">score = 0.40 × layout_compat + 0.35 × content_affinity + 0.25 × structure_intent</div><div class="method-detail">· content_affinity 12 enum (concept_definition / goal_axes / persona_benefit / ...)<br/>· structure_intent 9 enum (binary_compare / multi_parallel / state_transition / ...)<br/>· alternative_patterns — 대안 layout 관계 (cycle ↔ 3col-parallel 등)</div></div><div class="cascade-arrow"></div><div class="method-block"><div class="method-name"><span class="badge">V4</span>적용 가능성 판정 (template-fit-v1)</div><div class="method-tagline">"실제로 쓸 수 있나? 어느 정도 수정해야 하나?"</div><div class="method-formula">multi-axis: anchor + cardinality + relation + slot + content - penalty<br/>→ 라벨: <span class="label-use_as_is">use_as_is</span> / <span class="label-light_edit">light_edit</span> / <span class="label-restructure">restructure</span> / <span class="label-reject">reject</span></div><div class="method-detail">· 점수 1위 ≠ 실사용 가능. <b>판정 라벨</b>로 결정<br/>· reject 면 기존 프레임에 없는 신규 콘텐츠 → 재구성 신호</div></div></body></html>