사실 무결성 검사
원본과 파생본을 대조해 의미가 조용히 바뀐 지점을 찾는다.
왜 필요한가
구조·인용·표현 검수는 "형식이 맞는가"만 본다. 다음은 전부 통과시킨다.
- 수치가 사라짐 — "926명을 대상으로" → "연구에서"
- 결론 범위가 넓어짐 — "출혈로 인한 사망" → "사망"
- 한정어가 빠져 단정이 됨 — "대부분의 환자에서" → "환자에서"
- 역치가 올라감 — "1개를 넘겨 적심" → "1개를 흠뻑 넘겨 적실 때"
의료·법률·금융처럼 조건이 결론을 좌우하는 글에서는 이런 변화가 사실 왜곡이다. 문체를 다듬는 도구(예: humanize 계열)는 한정어를 군더더기로 볼 유인이 있어 특히 위험하다.
사용법
python3 scripts/check.py --base 원본.md --derived 윤문본.md
선택 인자
--guard <경로>— 감시 문구 JSON. 없으면 원본과 같은 폴더의fact-guard.json을 찾는다.--slug <이름>—outputs/<slug>/구조를 쓰는 저장소용 하위 호환 경로.
감시 문구 지정 (선택)
주제별로 반드시 지켜야 할 표현을 fact-guard.json에 적는다.
{
"required": ["출혈로 인한 사망", "3시간"],
"forbidden": ["완치", "무조건"],
"ignoreNumbers": ["2025", "2022"]
}
판정 읽는 법
- [확인 N건] — 일반 독자용 축약이면 정상일 수 있다. 사람이 판단한다.
- 한정어 소실은 수치 누락보다 무겁다. 조건부 서술이 단정으로 바뀌면 글의 주장이 달라진다.
- 종료 코드로 자동화 관문에 걸 수 있다.
한계
기계적 대조다. 같은 뜻을 다른 표현으로 바꾼 경우(예: "절반" ↔ "50%")는 누락으로 잡힐 수 있고, 문장을 합치며 생긴 의미 변화는 놓칠 수 있다. 사람 검토를 대체하지 않는다.