- 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>
194 lines
7.7 KiB
Markdown
194 lines
7.7 KiB
Markdown
# pipeline/ — 최종 코드 + 데이터 + 결과 + 보고서
|
||
|
||
`tests/matching/` 의 320 개 파일 중 **최종본만 복사**한 정리 폴더.
|
||
`tests/matching/` 는 원본 그대로 보존 (이 폴더는 복사본).
|
||
|
||
상위 문서: [../PIPELINE.md](../PIPELINE.md) — V1~V4 시스템 통합 정리
|
||
|
||
## 폴더 구조
|
||
|
||
```
|
||
pipeline/
|
||
├── code/ — 모든 .py (메인 + 의존 모듈) 30 개
|
||
├── data/ — 입력 데이터 + Frame DB + 키워드 사전 14 개
|
||
├── results/ — V1~V4 매칭 결과 yaml 4 개
|
||
└── reports/ — DECK 1~7 + 보조 보고서 14 개
|
||
```
|
||
|
||
---
|
||
|
||
## code/ (30 개) — 매칭 시스템 코드
|
||
|
||
### 메인 pipeline (V1 ~ V4)
|
||
|
||
| 파일 | 단계 | 역할 |
|
||
|---|---|---|
|
||
| `pipeline_06_2_mdx_matching.py` | **V1** | 키워드 매칭 — 0.414 핵심 + 0.320 세트 + 0.265 연관 |
|
||
| `pipeline_08_v2_semantic_rerank.py` | **V2** | 의미 매칭 — ko-sroberta cosine |
|
||
| `pipeline_08_v3_r5_structure_rerank.py` | **V3** (최종) | 구조 매칭 — 0.40 layout + 0.35 aff + 0.25 intent |
|
||
| `pipeline_17_v4_full32.py` | **V4** (최종) | 종합 판정 — 32 frame 전체 평가, 5축 가중합 |
|
||
|
||
### 사전 작업 (입력 + 키워드 정리)
|
||
|
||
| 파일 | 역할 |
|
||
|---|---|
|
||
| `pipeline_01_extract_nodes.py` | Figma + BEPS + MDX 텍스트 추출 (`MDX_SECTIONS`, `MDX_DIR` 정의) |
|
||
| `pipeline_02_tokenize.py` | Kiwi 형태소 분석 |
|
||
| `pipeline_02_5_special_forms.py` | 특수 형식 (DX/BIM 등) 보존 |
|
||
| `pipeline_04_normalize.py` | 표기 통합 + 동의어 처리 |
|
||
| `pipeline_05_anchor_candidates.py` | 핵심 키워드 후보 추출 |
|
||
| `pipeline_06_anchor_sets.py` | 키워드 세트 생성 |
|
||
| `pipeline_07_auto_anchor_candidates.py` | 자동 anchor 후보 |
|
||
|
||
### Frame 구조 라벨링 (templates_v2)
|
||
|
||
| 파일 | 역할 |
|
||
|---|---|
|
||
| `pipeline_12_generate_templates_v2.py` | r1 — 초기 ontology 생성 (`AFFINITY_KEYWORDS`, `INTENT_KEYWORDS` 정의) |
|
||
| `pipeline_12_r2_generate_templates_v2.py` | r2 |
|
||
| `pipeline_12_r3_generate_templates_v2.py` | r3 (최종 키워드 사전) |
|
||
| `pipeline_12_finalize_v2.py` | final ontology 마무리 |
|
||
|
||
### V3 의존 라운드 (r5 가 r4, r3, r2 의존)
|
||
|
||
| 파일 | 역할 |
|
||
|---|---|
|
||
| `pipeline_08_v3_r2_structure_rerank.py` | r2 — `MDX_LAYOUT_STRUCTURE` 정의 |
|
||
| `pipeline_08_v3_r3_structure_rerank.py` | r3 — STRONG 패턴 검증 도입 |
|
||
| `pipeline_08_v3_r4_structure_rerank.py` | r4 — `detect_mdx_v2_profile_r4`, `v3_r4_score` 정의 |
|
||
|
||
### 검증 / Ablation
|
||
|
||
| 파일 | 역할 |
|
||
|---|---|
|
||
| `pipeline_15_logistic_regression.py` | V1 가중치 학습 + LOOCV 검증 (4/4) |
|
||
| `pipeline_15_bm25_with_sets.py` | BM25 비교 (현 방식 우위 확인) |
|
||
| `pipeline_18_slot_axis_ablation.py` | V4 slot 축 ablation (Top-1 7/7 동일 확인) |
|
||
|
||
### 보고서 생성
|
||
|
||
| 파일 | 역할 |
|
||
|---|---|
|
||
| `pipeline_16_deck_4pages.py` | DECK 1~7 HTML 생성 |
|
||
|
||
### 의존 모듈
|
||
|
||
| 파일 | 역할 |
|
||
|---|---|
|
||
| `detect_mdx.py` | MDX 본문 분석 (`detect_mdx_analysis`, `slots_from_table` 등) |
|
||
| `template_fit.py` | V4 confidence 계산 (`compute_template_fit`, `route`, 5축 가중치) |
|
||
| `structure_v3.py` | V3 score 함수 (`structural_match_v3`) |
|
||
| `phase_common.py` | 공통 유틸 (`detect_mdx_layout_v2`, `_COMPAT`, 표기 통합) |
|
||
| `methods.py` | Kiwi 캐싱, content token 추출, layout 감지 |
|
||
| `embeddings.py` | ko-sroberta 임베딩 + cosine |
|
||
| `common.py` | 단순 토크나이저, char_ngrams |
|
||
| `keyword_normalizer.py` | 키워드 정규화 |
|
||
|
||
---
|
||
|
||
## data/ (14 개) — 입력 데이터 + Frame DB + 키워드 사전
|
||
|
||
### Frame 구조 DB
|
||
|
||
| 파일 | 내용 |
|
||
|---|---|
|
||
| `structure_ontology_v2_final_r2.yaml` | **32 Frame 구조 DB** (layout, family, cardinality, content_affinity, structure_intent, slots, alternative_patterns) |
|
||
|
||
### 키워드 사전
|
||
|
||
| 파일 | 내용 |
|
||
|---|---|
|
||
| `auto_anchor_candidates.yaml` | **키워드 sets** (frame 별 source_text_sets, terms, frame_stats) |
|
||
| `anchor_sets_input.yaml` | anchor sets 입력 |
|
||
| `keyword_base.yaml` | 기본 키워드 사전 |
|
||
| `domain_terms.yaml` | 도메인 용어 |
|
||
| `synonyms_production.yaml` | 동의어 (운영용) |
|
||
| `synonyms.yaml` | 동의어 후보 |
|
||
|
||
### 정답 / 검증 라벨
|
||
|
||
| 파일 | 내용 |
|
||
|---|---|
|
||
| `ground_truth.yaml` | 정답 매칭 라벨 |
|
||
| `holdout_labels.yaml` | Holdout 평가 라벨 |
|
||
|
||
### 중간 데이터 (전처리 결과)
|
||
|
||
| 파일 | 내용 |
|
||
|---|---|
|
||
| `text_canonical.yaml` | 표준화된 텍스트 |
|
||
| `normalized_text_tokens.yaml` | 정규화된 토큰 |
|
||
| `actual_text_nodes.yaml` | 추출된 텍스트 노드 |
|
||
| `actual_text_tokens.yaml` | 추출된 토큰 |
|
||
| `special_forms_inventory.yaml` | 특수 형식 인벤토리 |
|
||
|
||
---
|
||
|
||
## results/ (4 개) — V1~V4 최종 결과
|
||
|
||
| 파일 | 단계 | 핵심 정보 |
|
||
|---|---|---|
|
||
| `mdx_matching_result.yaml` | **V1** | per_frame_detail (standalone/keyword_group/related 점수, hit/total), rank_by_matching_score |
|
||
| `v2_semantic_rerank_result.yaml` | **V2** | v2_rerank (semantic_score, V2 순위) |
|
||
| `v3_structure_rerank_r5_result.yaml` | **V3** | v3_r5_rerank (total, breakdown — layout_compat/content_affinity/structure_intent), mdx_profile |
|
||
| `v4_full32_result.yaml` | **V4** | judgments_full32 (32 frame 전체 confidence + label), axes (5축 점수) |
|
||
|
||
---
|
||
|
||
## reports/ (14 개) — 임원 보고용 + 보조 보고서
|
||
|
||
### 임원 보고용 7 페이지
|
||
|
||
| 파일 | 내용 |
|
||
|---|---|
|
||
| `DECK_01_TARGET_01_2.html` | TARGET MDX 01-2 × V1~V4 Top-3 매칭 결과 (이미지 + 점수) |
|
||
| `DECK_02_HOLDOUT_02_2_1.html` | Holdout MDX 02-2.1 × V1~V4 Top-3 |
|
||
| `DECK_03_METHODS.html` | V1~V4 방법 설명 |
|
||
| `DECK_04_DB_STRUCTURE.html` | MDX 1 vs Top-3 frame 5 컬럼 비교표 — 키워드/구조/종합 매칭 |
|
||
| `DECK_05_STRUCTURE_KEYWORD.html` | 구조 매칭 4 항목 상세 (콘텐츠 성격/시각 의도/편집 슬롯/항목수·관계) + 키워드 사전 |
|
||
| `DECK_06_FIGMA_TO_DB.html` | Frame 18 의 DB 저장 형태 샘플 (YAML) |
|
||
| `DECK_07_KEYWORD_PIPELINE.html` | 키워드집 정리 과정 + Frame 18 샘플 |
|
||
|
||
> ※ DECK 1, 3, 4, 5, 7 은 **사용자가 직접 편집한 (최종) 버전** 복사. matching/ 의 `DECK_XX(최종).html` 이 원본.
|
||
|
||
### 보조 보고서
|
||
|
||
| 파일 | 내용 |
|
||
|---|---|
|
||
| `KEYWORD_INVENTORY.html` / `.md` | 키워드집 생성 보고서 (1,713 고유 + 13 중요 표기 + 451/1238/24 분포) |
|
||
| `ATTACH_07_WEIGHT_VALIDATION.html` | V1 가중치 Logistic Regression + LOOCV 검증 |
|
||
| `V4_SLOT_ABLATION.md` | V4 slot 축 ablation (Top-1 7/7 동일 — 영향 없음) |
|
||
| `FIGMA_KEYWORDS_REPORT.html` / `.md` | Frame 별 키워드 인벤토리 |
|
||
| `FRAME_KEYWORD_REVIEW.html` / `.md` | Frame 별 키워드 검토 |
|
||
|
||
---
|
||
|
||
## 사용 시나리오
|
||
|
||
### 새 작업자 (또는 새 Claude) 가 시스템을 처음 보는 경우
|
||
1. [../PIPELINE.md](../PIPELINE.md) 읽기 — V1~V4 통합 정리 (산식 / 가중치 / 도출 과정 / 결과 / 약점)
|
||
2. `reports/DECK_03_METHODS.html` 보기 — V1~V4 방법 시각화
|
||
3. `reports/DECK_04_DB_STRUCTURE.html` 보기 — 실제 매칭 비교 사례
|
||
4. `code/pipeline_17_v4_full32.py` 읽기 — V4 최종 매칭 로직
|
||
|
||
### 매칭 결과 분석
|
||
- `results/mdx_matching_result.yaml` (V1)
|
||
- `results/v3_structure_rerank_r5_result.yaml` (V3)
|
||
- `results/v4_full32_result.yaml` (V4)
|
||
|
||
### Frame DB 확인
|
||
- `data/structure_ontology_v2_final_r2.yaml`
|
||
- `data/auto_anchor_candidates.yaml`
|
||
|
||
### 검증 / Ablation 결과
|
||
- `reports/ATTACH_07_WEIGHT_VALIDATION.html` (V1 가중치)
|
||
- `reports/V4_SLOT_ABLATION.md` (slot 축)
|
||
|
||
---
|
||
|
||
## 주의
|
||
|
||
- **이 폴더는 복사본**. `tests/matching/` 가 원본.
|
||
- 코드 수정 시 두 곳 동기화 필요 (또는 matching/ 만 수정 후 다시 복사).
|
||
- 코드 실행 시 import 가 같은 디렉토리 가정 (`from detect_mdx import ...`) — `code/` 디렉토리 안에서 실행 필요.
|