Files
C.E.L_Slide_test2/tests/matching/phase4_1st.py
T

65 lines
2.1 KiB
Python

"""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}<br>({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}")