# 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 시현 절차
```bash
# ① 시험셋 구성 확인
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 환경) | 미완 |