"""Phase 4 — 1순위만 하나의 표로 (세로: 방법 15, 가로: 유닛 5)""" import re from pathlib import Path HERE = Path(__file__).parent TARGET_UNITS = [ ("6", "MDX01-2-details", "팝업+표"), ("7", "MDX02-1", "중목차"), ("12", "MDX02-2.2-table", "표"), ("13", "MDX03-1", "중목차"), ("14", "MDX03-2", "중목차(컨테이너)"), ] METHODS = [ "SBERT-원본", "SBERT-축약", "SBERT-청크", "KoSimCSE-원본", "KoSimCSE-축약", "KoSimCSE-청크", "E5-원본", "E5-축약", "E5-청크", "Cross-원본", "Cross-축약", "Cross-청크", "WordAvg-원본", "WordAvg-축약", "WordAvg-청크", ] md = (HERE / "MATRIX_PHASE4.md").read_text(encoding="utf-8") parts = re.split(r"\n## (\d+)\. ", md) unit_blocks = {parts[i]: parts[i + 1] for i in range(1, len(parts), 2)} def extract_top1(block_text, method_name): """1순위 셀 반환. 행 구조: | 방법 | 1순위 | 2순위 | 3순위 | ' | '로 쪼개면 cells[0]='| 방법', cells[1]=1순위, cells[2]=2순위 …""" for line in block_text.split("\n"): if line.startswith(f"| {method_name} |"): cells = line.split(" | ") if len(cells) >= 2: return cells[1].strip() return "-" # 단일 표 구성: 세로=방법, 가로=유닛 lines = [] lines.append("# Phase 4 — 1순위 통합표 (세로: 방법 15개, 가로: 유닛 5개)") lines.append("") # 헤더: 방법 | 유닛1 | 유닛2 | ... | 유닛5 header_cells = ["방법"] for num, uid, kind in TARGET_UNITS: header_cells.append(f"{num}. {uid}
({kind})") lines.append("| " + " | ".join(header_cells) + " |") lines.append("|" + "|".join(["------"] * len(header_cells)) + "|") # 행: 방법별로 5개 유닛의 1순위 for m in METHODS: row = [m] for num, _, _ in TARGET_UNITS: block = unit_blocks.get(num, "") top1 = extract_top1(block, m) if block else "-" row.append(top1) lines.append("| " + " | ".join(row) + " |") lines.append("") out = HERE / "MATRIX_PHASE4_1순위.md" out.write_text("\n".join(lines), encoding="utf-8") print(f"완료: {out}")