o2o-plagiarism-ai/reports/SUMMARY_BENCHMARK_EVIDENCE_2026.md
hbyang 8ae52b0a82 feat: add summary (No.7) consensus and grounded generation trials
요약 성능지표(No.7, ROUGE 65점) 실험 일습을 커밋한다.

- app/engine/summary_consensus.py: 후보 5개 생성 후 합의 선택(select_consensus).
  문자/어절 2-gram 가중 합의로 고르며, 유효 후보가 없으면 valid=False 를 낸다.
- app/engine/summary_grounded.py: 근거 추출 후 압축하는 2단계 생성.
- summarizer.py: 추출 전략 3종(textrank/coverage/lead). coverage 는 MMR 로
  중복 문장을 눌러 문서 전체를 넓게 담는다. 기본값은 textrank 로 유지한다.

스크립트는 생성·평가·검증을 분리했다. verify_* 는 API 호출 없이 저장된 산출물만
재계산하는 독립 검증기라 지표를 공용 함수로 합치지 않는다. 합치면 검증이 성립하지
않는다. tune_summarizer 는 사람 검수 참조(build_summary_annotation_packet ->
export_summary_annotations)를 입력으로 받아 선택과 최종 보고를 분리한다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-28 10:02:04 +09:00

52 lines
2.3 KiB
Markdown

# 요약 성능 내부 벤치 증빙 — 2026-09-16
## 결론
보존된 30건 내부 벤치의 **ROUGE-1 recall은 67.6579%**다. 첨부된 전 차수
성적서 코드는 F1을 반환하므로 이 recall 값으로 올해 65% 달성을 판단할 수 없다.
이를 작년 시험 방식의 복원·달성값으로 설명했던 내용은 정정한다.
> 이 결과는 사람 작성 정답셋이 아닌 GPT-4o 은(silver) 기준을 사용한 **내부 A/B
> 벤치**다. 따라서 사람 정답셋 기반의 공인 시험성적서 결과로 기재하지 않는다.
## 보존된 실행 결과
| 항목 | 값 |
|---|---:|
| 결과 파일 | King `/mnt/data2/demo/o2o-plagiarism-ai/reports/summary_bench_v2.json` |
| 파일 수정 시각 | 2026-09-16 10:44:24 KST (생성·실행 시각을 입증하지 않음) |
| SHA-256 | `1e8022227c7a905f5926ab0c75aef0961248a901be19ead9cb501b98a5b70381` |
| 표본 수 | 30건 |
| 참조 요약 모델 | GPT-4o (결과 JSON에 기록) |
| 시스템 요약 모델 | GPT-4o (결과 JSON에 기록) |
| 프롬프트·seed·다중 참조 개수 | 결과 JSON에 미기록; 현재 스크립트 기본값으로 과거 실행 조건을 확정할 수 없음 |
## 결과
| ROUGE recall | 추출 요약 | 추상 요약 |
|---|---:|---:|
| ROUGE-1 (어절) | 21.2612% | **67.6579%** |
| ROUGE-2 (어절) | 7.8993% | 51.8763% |
| ROUGE-1 (형태소) | 41.8747% | 79.1366% |
| ROUGE-2 (형태소) | 18.0236% | 62.1995% |
## 재실행 상태
벤치 스크립트는 `/w/ai_publish/data_output4/*.json`의 전기 본문 30건을 읽는다.
호스트의 실제 경로는 `/mnt/data2/demo/ai_publish/data_output4`이며 JSON 85개가
존재한다. 앞선 확인에서 컨테이너 경로와 호스트 경로를 혼동하여 원문이 없다고
단정한 내용을 정정한다. 다만 30건 결과에는 원문 ID·참조 및 시스템 요약 원문이
없어 동일 표본·출력의 정확한 재채점은 불가능하다. 아래는 새 벤치 실행 예시다.
```bash
python scripts/bench_summarizer.py \
--glob '/mnt/data2/demo/ai_publish/data_output4/*.json' \
--count 30 --seed 20260916 \
--ref-model gpt-4o --sys-model gpt-4o \
--length-matched \
--out reports/summary_bench_new.json
```
새 1,000건 실험은 `scripts/build_summary_trial.py`로 수행하며 데이터·참조·출력을
모두 저장한다. 이 30건 보존 결과와 구분한다.