o2o-plagiarism-ai/docs/RECEIVED_DATA_PIPELINE.md

60 lines
3.1 KiB
Markdown

# 컴북스 수령 데이터 처리 및 AI 대조문 구축
## 1. 2026-08-20 수령 현황
| 파일 | 확인 내용 | 현재 쓰임 |
|---|---|---|
| `자서전.net-에피소드.xlsx` | 실제 사람 작성, 6,651건의 본문 | human 정답 코퍼스, AI 의심도 비교 기준, 요약·표절 튜닝 |
| `한국인 생활 수기집 _ 파일 목록.xlsx` | 30건의 원본 파일/링크 목록 | 수령 provenance 목록. 본문 파일 확보·OCR 후 코퍼스 적재 |
자서전 원고는 `combooks_confirmed_human`, `human_verified=true`,
`ai_assistance=false`로 기록한다. 두 번째 파일은 본문이 아니므로 목록만으로
학습·탐지에 쓰지 않는다.
## 2. 익명화와 누출 방지
- `id`(이메일)는 운영 비밀 salt로 HMAC 가명화한다. 원본 ID는 DB와 학습셋에 저장하지 않는다.
- 같은 작성자의 에피소드는 같은 `source_group`으로 묶어 train/val/test 누출을 막는다.
- 본문의 이메일·휴대전화·주민번호 형식은 적재 전 치환한다.
- AI 대조문 생성기는 본문 컬럼을 프롬프트로 지정하면 실패한다. 제목·키워드 컬럼만 허용한다.
- `DATA_ANONYMIZATION_SALT`는 코드·문서·산출물에 넣지 않는다.
## 3. 검증된 실행 결과
2026-08-20 원본 XLSX 로컬 드라이런 결과:
- 운영 코퍼스 적재: 533문서, 6,331개 익명 에피소드, 5,048,397자
- 학습 적합 human 표본: 200자 이상 6,139건 → 중복 560건 제거 → 5,579건
- 작성자 그룹: 290개, train/val/test 그룹 교차 0건
- 분할: train 3,946 / val 729 / test 904
- 길이: 평균 847.1자; AI 생성 목표는 human 길이 분포에서 표본화
human 데이터만으로는 이진 AI 생성 판별기를 학습할 수 없다. 다음 단계에서 적어도
2개 생성 모델로 순수 AI 대조문을 생성하고, 독립된 사람 검토용 세트는 별도 보존한다.
## 4. 실행 순서
```bash
export DATA_ANONYMIZATION_SALT='<운영 비밀값>'
python scripts/ingest_o2o_xlsx.py '자서전.net-에피소드.xlsx' \
--database data/runtime/corpus.sqlite3 \
--book-column '자서전 제목' --text-column '에피소드 본문' \
--author-column id --episode-title-column '에피소드 제목' --anonymize
python scripts/generate_ai_samples.py \
--xlsx '자서전.net-에피소드.xlsx' --text-column '에피소드 본문' \
--meta-column '자서전 제목' --meta-column '에피소드 제목' --group-column id \
--model '<생성모델-1>' --model '<생성모델-2>' \
--limit 5600 --out data/training/ai_samples.jsonl
python scripts/build_ai_training_dataset.py \
--xlsx '자서전.net-에피소드.xlsx' --text-column '에피소드 본문' \
--book-column '자서전 제목' --id-column id --group-column id --anonymize \
--ai-jsonl data/training/ai_samples.jsonl --ai-group-field source_group \
--out data/training/ai_dataset.jsonl
```
AI 대조문은 AI 의심도 부가 기능을 개선하기 위한 것이다. 과업 공식 성능지표인
`표절 정밀도 97%`는 AI 대조문이 아니라 별도의 실제 표절/비표절 정답쌍으로 평가한다.