2026-08-31 재실행 · 학습 산출물(crf_ingredient.pkl·crf_ingredient.crfsuite)과 사람 검수 gold 50건이 그대로 남아 있어 그대로 다시 채점했습니다.
$ python score_gold.py gold 레코드: 50건 (사람 검수) 약지도(사전) vs gold — P 0.934 · R 0.928 · F1 0.931 CRF vs gold — P 0.930 · R 0.918 · F1 0.924 --- CRF 오류 표본(최대 5건) --- 새우두부계란찜 놓침: ['새우', '두부', '계란찜'] 오탐: ['새우두부계란찜'] 김 10g, 마늘 8g, 생강 5g, 통깨 1.3g [소스소개]양념간장:물 30g 놓침: ['소스', '양념간장'] 닭가슴살(40g), 노랑 파프리카(20g), 양파(15g), 오이(15g), 당근 놓침: ['잣가루', '간장'] $ python equiv_check.py # V-01 등가성 — 피클 vs .crfsuite gold 문장: 50건 라벨 시퀀스 완전 일치 : 50/50 추출 스팬 완전 일치 : 50/50 모델 로드 시간 A(피클) 1.0 ms B(.crfsuite) 0.2 ms 모델 파일 크기 crf_ingredient.pkl 343,657 B 모델 파일 크기 crf_ingredient.crfsuite 308,688 B 판정: PASS — 예측 완전 일치
서빙에서 학습 라이브러리를 걷어내려면 예측이 한 건도 달라지지 않는다는 것이 먼저 증명돼야 했습니다. 그래서 채택 조건을 «크기가 줄었다»가 아니라 «출력 완전 일치»로 정하고, 두 경로의 라벨 시퀀스와 추출 스팬을 전수 비교했습니다. 50건 전부 일치했고 그 뒤에 반영했습니다.
문제를 처음 발견한 것은 제가 아닙니다. 제가 한 것은 등가성 증명을 요구하고, 검증 기준을 정하고, 결과를 확인한 뒤 채택을 결정한 것입니다.