중복 제거를 텍스트만 보고 하던 것을 작성자까지 보게 고친다. 저자가 같으면
같은 사람 글이 두 번 적재된 것이라 침해가 아니지만, 저자가 다르면 그 중복
자체가 침해 후보다. 앞서는 이를 구분하지 않아 256건을 모두 뺐고, 그중
17건이 서로 다른 작성자의 글이었다.
같은 작성자 그룹만 제외하도록 목록을 다시 만들어(239건) 재실행하니 검사
대상 6104건, 침해의심 106건이다. 80 -> 106 의 증가분은 되살린 17건 전부와,
그 17건이 색인에 돌아오며 새로 매칭된 9건이다. 빠진 건은 없다.
106건 전수 확인 결과 매칭 상대의 작성자는 모두 다르다.
판정 사유 표기도 바로잡는다. 행 단위 대표값으로 재현하면 서로 다른 후보가
각기 다른 조건을 충족한 3건이 '사유 미상' 으로 빠졌다. 후보 판정재료를
쓰도록 고쳤다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
기준을 9어절(35자)로 확정하고 문서를 그 기준으로 다시 만든다.
중복 제거 + 9어절 재실행 결과는 검사 대상 6087건, 침해의심 80건이다.
9어절 근거는 문서쌍 전수 대조다. 545문서 148,240쌍을 모두 대조하니
100어절(390자)까지 올려도 18쌍이 계속 겹친다. 겹침이 0이 되는 어절 수는
없다. 10~15어절에서 27쌍으로 고정되어 더 줄지 않는데, 오탐이라면 기준을
올릴수록 계속 줄어야 한다. 즉 그 지점부터 남는 것은 실제 유사 원고다.
상투어 노이즈는 4->5어절에서 대부분 걷히므로 9어절이 실질적 하한이다.
배포 파일을 하나로 합친다. 원문 대조 시트를 결과보고에 넣어 의심 80건의
원문을 같은 파일에서 볼 수 있게 하고, 숫자가 맞지 않는 중복 제거 전
파일 두 개는 배포 위치에서 내린다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
상무님 요청대로 어절 기준을 3~9로 바꿔가며 재판정한다. 기준값은 검색
후보를 바꾸지 않고 채택 여부만 정하므로, 후보 판정재료를 한 번 남겨두면
7회 실행 없이 오프라인에서 전부 계산할 수 있다. 27자로 재계산한 값이
실제 실행 결과 85건과 일치해 방식을 검증했다.
배치 스크립트에 하드코딩돼 있던 80 을 걷어낸다. --min-exact-span 을 줘도
이 줄이 설정을 읽지 않아 값이 적용되지 않았다.
겹침률 측정도 바로잡는다. 앞서 7어절 0% 로 봤던 것은 4만 쌍에서 히트가
0~1건이라 해상도가 없었고, 그 1건조차 같은 문서 내부의 반복이었다.
15만 쌍으로 늘리고 엔진과 같이 자기 문서 쌍을 빼면 9어절에서도 4.0% 다.
겹침이 사라지는 지점은 없으므로 '오탐 0 인 최저점' 논리는 성립하지 않는다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
별도 파일을 늘리지 않고 기존 결과보고 워크북에 '중복 원고' 시트로 넣는다.
중복 제거 후 재실행하면 28건이 결과에서 사라지므로, 사라지기 전에 어떤
문서 사이의 중복이었는지 원문째로 남겨야 나중에 같은 제출자의 재제출인지
다른 제출자의 표절인지 확인할 수 있다.
--no-excerpt-sheet 로 원문 대조 시트 없이 중복 시트만 붙일 수 있게 했다.
결과보고는 원문 없는 배포판이라 이 경로를 쓴다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
상무님 지적 두 가지를 검증 가능한 형태로 만든다.
1) 중복 원고: 코퍼스 6343건 중 247그룹 503건이 중복이고, 침해의심 103건
중 28건이 여기서 비롯됐다. 다만 247그룹 중 234그룹이 서로 다른 문서
사이의 중복이라 같은 제출자의 재제출인지 다른 제출자의 표절인지 아직
모른다. 지우기 전에 원문째로 남기도록 build_duplicate_report.py 를 둔다.
2) 연속 일치 기준 80자: 근거 없이 잡힌 초기값이다. 무관한 원고 4만 쌍을
대조해 재보니 3어절 100%, 4어절 99.8%, 5어절 47%, 7어절 0% 오탐이다
(한 건을 6343건과 대조하는 효과 반영). 관행인 3~5어절은 쓸 수 없고
7어절 = 공백 포함 27자가 오탐 0% 를 유지하는 최저점이다.
배치에 --exclude-segments 와 --min-exact-span 을 추가한다. 중복은 질의와
색인 양쪽에서 함께 빼야 한다. 한쪽만 빼면 지운 원고가 여전히 상대로 잡힌다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
검토자가 침해 여부를 눈으로 판별하려면 원문이 있어야 하고, 어떤 조건으로
걸렸는지 알아야 한다. 두 가지를 워크북에 싣는다.
- extract_suspected_excerpts.py: 코퍼스 DB(읽기 전용)에서 질의·상대 원문과
일치 구간을 뽑는다. 킹서버 기본 python 이 3.6 이라 이 파일만 구문을 맞췄다.
- '판정 기준' 시트: 3개 OR 조건과 결합유사도 가중치, 조건별 충족 현황
- '원문 대조' 시트: 판정 사유 컬럼으로 각 건이 걸린 조건을 표시
판례 표기도 바로잡는다. USE_LLM_LEGAL_JUDGE=false 는 LLM 법적 판단만
끈 것이고 판례 검색은 규칙 기반으로 늘 동작한다. legal_risk.assess() 가
점수 하한 없이 상위 5건을 붙이므로 매칭 미탐지 건에도 판례가 채워진다.
한 줄에 뭉쳐 두면 모순으로 읽혀 판례 검색과 법적 판단을 분리해 적었다.
원문이 담긴 산출물은 gitignore 로 제외한다. 필요하면 위 스크립트로
코퍼스에서 다시 뽑을 수 있어 저장소에 영구 보존할 이유가 없다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2차 GPU 임베딩(KoSimCSE) 배치 6343건 전수 결과와, 이를 보고용으로
재구성한 워크북을 추가한다. 모든 문서는 가명 처리되어 있으며 원문
텍스트와 실명은 포함하지 않는다.
1차 대비: 의심 81 -> 103 (공통 77, 2차 신규 26, 1차에서만 4).
다만 임베딩 교체로 전 건 결합유사도가 평균 +0.0914 상승한 반면
임계값은 동일하므로, 신규 26건 중 17건은 근거 스팬이 0이다.
건수 증가를 곧바로 탐지력 향상으로 해석하면 안 된다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>