Files
C.E.L_Slide_test2/tests/matching/pipeline_04a_smoke_test.py
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

113 lines
3.6 KiB
Python

"""Step 4 스모크 테스트: Kiwi user_dict 로 compound 토큰 보존 실측.
목적:
1) S/W, H/W, 2D, 3D 가 user_word 로 단일 토큰으로 잡히는가
2) 실제 corpus 문장에서 분절 없이 유지되는가
3) phrase canonical (결과혁신, 과정혁신, 디지털전환, 3D모델, 2D도면) 도
user_dict 에 넣으면 단일 NNG 로 유지되는가
본 Step 4 진행 여부를 결정하는 관찰용 테스트. 어떤 파일도 수정하지 않음.
"""
from kiwipiepy import Kiwi
print("=" * 70)
print("[Baseline] user_dict 없는 Kiwi")
print("=" * 70)
kiwi_base = Kiwi()
BASELINE_TESTS = [
'S/W 개발',
'(S/W,H/W)와',
'2D 도면',
'3D 모델',
'결과 혁신',
'결과혁신',
'디지털 전환',
'디지털전환',
]
for s in BASELINE_TESTS:
toks = [(t.form, t.tag) for t in kiwi_base.tokenize(s)]
print(f" {s:25s}{toks}")
print()
print("=" * 70)
print("[A-1 user_dict] S/W, H/W, 2D, 3D + phrase canonical 등록")
print("=" * 70)
kiwi = Kiwi()
# compound (영문/기호 포함)
kiwi.add_user_word('S/W', 'SL', 9.0)
kiwi.add_user_word('H/W', 'SL', 9.0)
kiwi.add_user_word('2D', 'SL', 9.0)
kiwi.add_user_word('3D', 'SL', 9.0)
# phrase canonical (한글)
kiwi.add_user_word('결과혁신', 'NNG', 9.0)
kiwi.add_user_word('과정혁신', 'NNG', 9.0)
kiwi.add_user_word('디지털전환', 'NNG', 9.0)
kiwi.add_user_word('필수조건', 'NNG', 9.0)
kiwi.add_user_word('의사소통', 'NNG', 9.0)
kiwi.add_user_word('시행착오', 'NNG', 9.0)
# 혼합 token
kiwi.add_user_word('3D모델', 'NNG', 9.0)
kiwi.add_user_word('2D도면', 'NNG', 9.0)
# AS-IS/TO-BE (실제 표기형 As-is / To-Be 등록)
kiwi.add_user_word('As-is', 'SL', 9.0)
kiwi.add_user_word('To-Be', 'SL', 9.0)
# 실제 corpus 문장 (actual_text_nodes.yaml 에서 뽑은 진짜 예시)
CORPUS_TESTS = [
# S/W
'다양한 기술적도구(S/W,H/W)와 Process의 효과적인 통합',
'다양한 형태의 Solution S/W 개발 역량 Programmer',
'Engn. S/W의 구성 과 특징',
'디지털 전환(DX)은 S/W가 필수다.',
# H/W
'H/W 적 요소',
# 2D / 3D
'평면적 2D 설계방식',
'개념, 도서, 행정 절차 중심 2D 도면, 전문가, 규정',
'3D 형상 기반 다양한 형태의 정보물로 공사관계자간 소통 강화',
'3D 모델 중심 기존 성과품 유지',
'2D 도면',
'3D 모델',
# phrase canonical (치환 후 형태)
'결과혁신을 추구',
'과정혁신과 결과혁신',
'디지털전환의 기반',
'3D모델 기반 설계',
'2D도면 중심',
# phrase variants (치환 전 형태 - user_dict 만으로 잡힐지)
'결과 혁신',
'결과의 혁신',
'Product의 변화',
'과정 혁신',
'Process 혁신',
'디지털 전환',
'필수 요건',
'의사 소통',
'시행 착오',
# AS-IS / TO-BE
'As-is [Analogue]',
'To-Be',
'To-be [Digital]',
]
for s in CORPUS_TESTS:
toks = [(t.form, t.tag) for t in kiwi.tokenize(s)]
print(f" {s[:40]:40s}{toks}")
print()
print("=" * 70)
print("관전 포인트")
print("=" * 70)
print("1. 'S/W', 'H/W' 가 단일 SL 토큰으로 나오는가 (baseline 에서는 쪼개짐)")
print("2. '2D', '3D' 가 단일 SL 토큰으로 나오는가")
print("3. '결과혁신', '과정혁신' 붙여쓴 형태가 NNG 단일인가")
print("4. '결과 혁신' (띄어쓴 형태) 는 여전히 [결과, 혁신] 분절인가")
print(" → 그렇다면 pre-Kiwi phrase substitution 필수")
print("5. '3D모델' (붙여쓴) vs '3D 모델' (띄어쓴) 분절 차이")
print("6. 'As-is', 'To-Be' 가 단일 SL 로 유지되는가")