성능지표 #4(표절 판별 정밀도) 를 공인시험에서 재현할 수 있게 시험셋 생성기, 평가 실행기, python 3.9 평가 컨테이너, 시험절차서를 둔다. 시험셋은 작성자 단위로 코퍼스를 나눠 만든다. 비표절 시료를 참조 코퍼스에서 뽑으면 인덱스가 자기 자신을 찾아 전부 오탐이 되므로, 인덱스에 없는 작성자의 글만 쓴다. 무관한 글만 넣으면 정밀도가 부풀려져 주제 근접 시료 150건을 따로 섞는다. 실제 오탐이 나는 유형이 그것이다. 대필(인칭 전환)은 제외한다. 원문이 그대로 남지만 표절 여부가 계약·동의로 갈려 텍스트만으로 판정할 수 없다. 자체 측정 결과 정밀도 0.9840 (TP=493 FP=8 TN=492 FN=7). 목표 0.97 을 넘고, 오탐 8건 중 7건이 주제 근접 시료에서 나와 난이도가 운영 조건을 반영한다. 시험셋에는 자서전 원문이 들어가므로 저장소에 두지 않는다. 시드가 manifest 에 고정돼 있어 생성기로 동일하게 재생성된다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
8.9 KiB
2-1년차 현장시험 및 검증 — 시험절차서 (초안)
작성: 에이아이오투오 / 초안 일자 2026-09-14 선행 시험: 구미전자정보기술원
GERIR.CE.2511-02.009(2025-11-19 시험, 3개 항목 PASS) 근거: (협약용) 연구개발계획서 PART 2, 2-4. 연구개발 성능지표 및 평가방법 (p.23~24)
1.0 일반사항
1.1 제품 정보
| 구분 | 내용 |
|---|---|
| 시 료 명 | 출판콘텐츠 분석 및 공유 기술용 AI 모델 |
| 모 델 명 | ai_publish_o2o.v2 |
| 시 료 수 | 1 |
| 성적서 용도 | 솔루션 성능 결과 증빙용 |
1.2 시험 항목 — 3개 항목
전 차수와 동일한 3개 항목을 2-1년차 목표치로 재시험한다.
| No | 성능지표 | 단위 | 1-2년차 결과 | 2-1년차 목표 |
|---|---|---|---|---|
| 3 | 메타 데이터 추출 (F1-score) | % | 81 (PASS) | 83 이상 |
| 4 | 표절 여부 판별 정밀도 (Precision) | % | 95.2 (PASS) | 97 |
| 7 | 요약 성능 (N-gram ROUGE score) | % | 63 (PASS) | 65 |
2.0 시험 방법
2.1 시험 규격
- 시험규격: 시험절차서 기준
- 시험항목: 시험절차서 3개 항목
2.2 시험 장비 정보
| 구분 | 사용 장비 | 용도 |
|---|---|---|
| 1 | 노트북 (시험관 지참) | 코드 시현 서버 접속용 |
| 2 | GPU server | 코드 시현용 |
2.3 시험 환경
2.3.1 시험 구성
① 실제 솔루션에 활용되는 AI 모델들을 평가에 사용
② 시험용 PC 로 실제 AI 모델이 가동중인 GPU 서버에 접속
③ 성능 평가를 GPU 서버에서 진행
2.3.2 시험 환경 상세 정보
| 구분 | 사양 | |
|---|---|---|
| 시험 PC | 운영 SW | macOS / Windows |
| 시험 도구 | SSH 터미널 | |
| GPU 서버 | CPU | Intel Xeon |
| GPU | NVIDIA A100 80G | |
| 운영 SW | Ubuntu 22.04 | |
| 시험 도구 | Python 3.9 (컨테이너), PyTorch 2.2.2+cu121, transformers 4.39.3 | |
| 구현 모듈 | 메타 데이터 추출 모듈, 표절 여부 판별 모듈, 요약 모듈 |
평가환경 고정 근거 — 계획서 p.24 가 항목별 평가환경을 명시하고 있다. No.3·No.4 는
python 3.9, No.7 은A100 GPU / python 3.9 / pytorch 2.2.2+cu121 / transformers 4.39.3. 서버 시스템 파이썬 버전과 무관하게 평가는 전용 컨테이너에서 수행하여 규격을 충족한다.
2.3.3 평가방법
| 순번 | 평가지표 (성능지표) | 평가방법 | 비고 |
|---|---|---|---|
| 1 | 메타 데이터 추출 (F1-score) |
KLUE 데이터셋의 NER 데이터셋을 활용하여, 약 11,000개의 학습 데이터로 개발된 모델을 학습시키고, 2,000여개의 테스트 데이터를 활용하여 개발된 모델에 대한 상대 평가 진행 | 과제 성능지표 3번에 해당 |
| 2 | 표절 여부 판별 정밀도 (precision) |
자체 제작된 실제 표절 글과, 표절이 아닌 글을 Classification 하여, precision 계산 | 과제 성능지표 4번에 해당 |
| 3 | 요약 성능 (N-gram ROUGE score) |
자체 제작된 요약 데이터셋을, 요약 모델에 테스트하여 N-gram ROUGE score 계산 | 과제 성능지표 7번에 해당 |
3.0 시험 항목별 세부 절차
3.1 표절 여부 판별 정밀도 (성능지표 #4)
3.1.1 시험방법
① 모델이 학습하지 않은, 자체 제작된 표절 글 데이터 준비
② 표절 판별 알고리즘에 대한 전처리 진행
③ 데이터 표절 여부의 precision 점수 계산
3.1.2 시험 데이터 구성 — 총 1,000건
모델이 학습하지 않은 데이터임을 작성자 단위 분리로 보장한다.
전체 작성자 290명
├─ 203명 → 참조 코퍼스(검색 인덱스)에 적재
└─ 87명 → 시험 질의로만 사용 (인덱스에 미포함)
| 라벨 | 건수 | 구성 |
|---|---|---|
| 표절 | 500 | 참조 코퍼스의 글을 변형 완전복제 100 / 부분복제 100 / 문장재배열 100 / 어휘치환 150 / 축약 50 |
| 비표절 | 500 | 인덱스 미포함 작성자의 글 원문 주제 근접 시료 150 + 일반 350 |
- 주제 근접 시료(하드 네거티브) 150건: 참조 코퍼스와 어휘가 많이 겹치는 글. 실제 오탐이 발생하는 유형이므로 난이도 확보를 위해 의도적으로 포함한다.
- 대필(인칭 전환) 유형은 제외: 같은 사건을 당사자와 대필자가 각각 기술한 글은 원문이 그대로 남으나, 표절 여부가 계약·동의로 갈려 텍스트만으로 판정할 수 없다.
- 재현성: 구성 비율과 난수 시드를
manifest.json에 사전 기록하여, 동일 시험셋을 재생성할 수 있다.
3.1.3 판정 조건
| 조건 | 기준값 | |
|---|---|---|
| ① 결합유사도 | ≥ 0.65 | 어휘 0.45 + 표현 0.30 + 문자 0.15 + 모티프 0.10 |
| ② 최장 연속 일치 | ≥ 35자 (9어절) | 필수 조건 |
| ③ 문서 단위 커버리지 | ≥ 0.30 |
②를 필수로 둔다. 유사도만 높고 그대로 겹친 구간이 없는 후보는 채택하지 않는다. 같은 주제를 다룬 글은 의미 유사도가 함께 상승하기 때문이다.
35자 산출 근거 — 어절 기준 3~9 스윕 및 문서쌍 148,240 쌍 전수 대조 결과, 4어절 이하는 임의 조합의 99% 이상에서 겹침이 발생하여 신호로 쓸 수 없고, 9어절부터 잔존하는 겹침은 실제 유사 원고로 확인되었다.
3.1.4 시현 절차
# ① 시험셋 구성 확인
cat data/eval/testset_v2/manifest.json
wc -l data/eval/testset_v2/pairs.jsonl # 1000
# ② 판정 기준 확인
python -c "from app.core.config import Settings; s=Settings(); print(
s.persistent_similarity_threshold, s.persistent_min_exact_span,
s.persistent_min_coverage, s.require_exact_span_evidence)"
# ③ 평가 실행 (약 10분)
docker run --rm -v $PWD:/app -w /app o2o-plagia-eval:py39 \
python scripts/run_precision_eval.py --testset data/eval/testset_v2
산출물: data/eval/testset_v2/result.json (precision / recall / F1 / 변형 유형별 분해)
3.1.5 사전 측정 결과 (자체 검증)
| 항목 | 수치 |
|---|---|
| 정밀도 (precision) | 0.9840 |
| 재현율 (recall) | 0.9860 |
| F1 | 0.9850 |
| TP / FP / TN / FN | 493 / 8 / 492 / 7 |
목표 0.97 대비 여유가 있으며, 오탐 8건 중 7건이 주제 근접 시료에서 발생하여 난이도가 실제 운영 조건을 반영하고 있음을 확인하였다.
3.2 메타 데이터 추출 F1 (성능지표 #3)
KLUE NER 학습 11,000건 / 테스트 2,000건으로 상대 평가. 평가 스크립트
scripts/eval_metadata_f1.py, 평가환경 python 3.9.
확인 필요 — 성과물 목록상 요소 추출이 오투오(콘텐츠 요소 분석 모듈)와 고려대(출판콘텐츠추출모델 sLLM) 양쪽에 걸쳐 있다. 측정 주체를 컨소시엄에 확인한 뒤 본 절차서를 확정한다.
3.3 요약 성능 ROUGE (성능지표 #7)
3.3.1 시험방법
① 자체 제작된 요약 데이터셋 준비
② 요약 모델에 학습되지 않은 데이터 1,000건에 대해 모델 요약 진행
③ 생성된 결과물에 대한 N-ROUGE score 측정
평가 스크립트 scripts/eval_rouge.py. ROUGE 는 recall 기준으로 계산한다
(수식 분모가 참조 n-gram 수). 다중 참조를 전제한다.
선행 과제 — 정답셋 본 구축 전, 파일럿 20건으로 사람 간 일치도(IAA)를 측정하여 사람 상한을 먼저 확인한다(
eval_rouge.py --iaa). 상한이 목표 65 미만이면 규격 조정이 필요하며, 파일럿 단계에서의 조정은 추가 비용이 발생하지 않는다.
4.0 시험 데이터 게재에 관한 요청사항
전 차수 성적서에는 시험 데이터 원문 예시가 게재되었다(성적서 9p, 13p). 본 차수 표절 항목의 시험 데이터는 개인 자서전을 기반으로 하므로, 성적서 게재용 예시는 익명화가 완료된 생활수기 자료로 대체하여 제출한다. 접수 시 시험기관에 함께 요청한다.
5.0 일정 (안)
| 단계 | 내용 | 비고 |
|---|---|---|
| 접수 | 시험 신청 및 시험절차서 제출 | |
| 사전 협의 | 시험 항목·환경·데이터 게재 범위 확정 | 4.0 항 포함 |
| 시험 | 3개 항목 현장 시험 (1일) | 에이아이오투오 판교 연구소 |
| 성적서 발행 | 시험 후 약 5일 |
6.0 준비 현황
| 항목 | 상태 |
|---|---|
| 표절 시험셋 1,000건 | 완료 (data/eval/testset_v2/) |
| 표절 평가 스크립트 | 완료 (scripts/run_precision_eval.py) |
| 평가 전용 컨테이너 (python 3.9) | 완료 (Dockerfile.eval) |
| 표절 사전 측정 | 완료 (0.9840) |
| 메타 추출 — 측정 주체 확인 | 미완 (컨소시엄 문의 필요) |
| 요약 정답셋 — 파일럿 20건 | 미완 |
| 요약 정답셋 — 본 구축 300건 | 미완 |
| 시험 서버 확정 (A100 환경) | 미완 |