요약 성능지표(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>
15 lines
636 B
Python
15 lines
636 B
Python
from app.engine.summary_grounded import validated_evidence
|
|
|
|
|
|
def test_evidence_rejects_paraphrases_and_nonstrings():
|
|
assert validated_evidence('그는 학교를 세웠다.', {'evidence':['학교를 세웠다','학교를 설립했다',42,'']}) == ['학교를 세웠다']
|
|
|
|
|
|
def test_evidence_deduplicates_and_caps():
|
|
assert validated_evidence('가 나 다 라', {'evidence':['가','가','나','다','라']}) == ['가','나','다']
|
|
|
|
|
|
def test_bad_schema_and_overlength_are_not_evidence():
|
|
assert validated_evidence('원문', {'evidence':'원문'}) == []
|
|
assert validated_evidence('가'*121, {'evidence':['가'*121]}) == []
|