긴 문장 나누기, 조건어가 남았는지 검사까지
세 줄 넘는 문장을 AI 로 나누면 「경우에만」「단,」 같은 조건이 빠지거나 걸린 대상이 다른 문장으로 밀리기 쉽습니다. 길이 상한과 조건어 보존을 규칙으로 걸고, 전후 문장 길이를 스크립트로 재는 방법입니다.
「문장이 길어서 숨이 찬다」는 말을 듣고 돌아온 안내문이 있습니다. 문장마다 100자 안팎이고, 가장 긴 것은 134자입니다. 아래 글을 AI 에 맡겨 나눠 보고, 나눈 뒤에 무엇이 남았는지 확인합니다.
[1] 입력은 가상의 사무실 안내문 4문단입니다. 문장 8개, 평균 97.5자입니다. 조건을 나타내는 「경우에만」이 2번, 「경우에 한해」가 1번, 「단,」이 2번 들어 있습니다.
다음 달부터 사무실 공용 회의실은 사용하려는 날의 하루 전 오후 여섯 시까지 사내 예약표에 신청해야 하며, 신청하지 않고 들어가 쓰던 회의가 예약된 회의와 겹치면 먼저 예약한 팀이 우선하므로 나중에 온 팀은 바로 자리를 비워 주셔야 합니다. 예약은 한 번에 최대 두 시간까지만 가능하고, 같은 팀이 같은 주에 네 번째로 신청하는 경우에는 총무팀의 승인이 있어야 확정됩니다. 장비 대여는 노트북과 빔프로젝터 모두 총무팀 창구에서 이름과 반납 예정일을 적은 뒤에 가져가야 하고, 반납이 하루 늦어질 때마다 다음 대여 신청이 이틀씩 미뤄지기 때문에 일정이 바뀌었다면 반납 전에 미리 연락해 주셔야 합니다. 단, 외부 행사에 쓰는 장비는 행사 일주일 전까지 신청한 경우에만 대여가 가능하며 파손된 장비는 수리가 끝날 때까지 대여 목록에서 빠집니다. 출장비는 출장을 다녀온 날부터 열흘 안에 영수증 사진과 출장 보고서를 함께 제출한 경우에만 정산되고, 기한을 넘기면 다음 달 급여에 합산되지 않고 별도 신청서를 써야 하므로 영수증은 현지에서 바로 찍어 두시는 편이 안전합니다. 택시비는 대중교통이 끊긴 늦은 시간이거나 짐이 많은 경우에 한해 인정되며, 그 밖의 경우에는 사유서를 붙여도 승인되지 않을 수 있습니다. 이 안내는 다음 달 1일부터 적용되지만 이미 예약해 둔 회의와 대여 중인 장비는 기존 방식대로 처리되고, 새 방식에 대한 문의는 총무팀 게시판에 남기면 담당자가 확인한 뒤 평일 기준 이틀 안에 답을 드립니다. 단, 이번 달 안에 반납해야 하는 장비는 새 규정과 상관없이 월말까지 반납해 주셔야 합니다.[2] 가장 짧게 시키면 이렇습니다.
아래 글의 긴 문장을 짧게 나눠 줘.두 번 실행했습니다. 문장은 8개에서 21개·20개로 늘었고 평균은 40.6자·39.8자가 됐습니다. 두 가지가 아쉬웠습니다.
- 요청하지 않은 것이 붙었습니다. 첫 번째는 맨 앞에 「다음과 같이 짧은 문장으로 나눴습니다.」 한 줄과 제목(
**회의실**,**장비 대여**…) 네 개를 달았고, 두 번째는 제목 없이 문단만 돌려줬습니다. - 길이 목표가 없으니 두 번 모두 50자를 넘는 문장이 4개 남았고, 가장 긴 것은 68자·60자입니다.
「단,」은 두 번 모두 남았습니다. 두 번으로 안전하다고 할 수는 없습니다.
[3] 규칙을 번호로 붙여 다시 만듭니다. 순서와 빠짐이 중요한 지시는 번호 목록으로 쓰라는 Claude 프롬프트 가이드의 원칙을 따랐고, 규칙 하나가 걱정 하나에 대응합니다. 길이는 숫자로, 조건어는 낱말을 직접 적어 지정했습니다.
<document> 안의 글에서 긴 문장을 짧은 문장으로 나눠 주세요. 뜻은 바꾸지 않습니다. 규칙:1. 문장 하나는 공백 포함 50자 이하로 합니다. 마침표로 끝나는 문장마다 적용합니다.2. 원인과 결과가 한 문장에 있었다면 「그래서」「따라서」 같은 연결어로 관계를 남깁니다.3. 「~경우에만」「~경우에 한해」「단,」 같은 조건·예외 표현은 지우지 않고, 그 조건이 걸린 문장에 그대로 둡니다.4. 숫자, 기한, 이름, 부서는 원문 그대로 둡니다. 내용을 더하거나 빼지 않습니다.5. 문단 수와 순서를 유지합니다. 제목이나 머리말을 붙이지 않습니다.6. 나눈 글만 출력합니다. 설명은 쓰지 않습니다. <document>[4] 글과 닫는 태그를 붙여 실행합니다. --tools "" 는 내장 도구를, --strict-mcp-config 는 연결해 둔 MCP 도구를 끄고, --setting-sources "" 는 내 설정·지침 파일(CLAUDE.md 등)을 읽지 않게 합니다. ChatGPT 에 붙여 넣어도 같은 프롬프트입니다.
$ (cat head.ko.txt doc.ko.txt; echo "</document>") > prompt.ko.v2.txt$ claude -p --model claude-sonnet-5-5 --max-turns 1 --tools "" --setting-sources "" --strict-mcp-config < prompt.ko.v2.txt > out.ko.v2.1.txt결과는 제목이 없고, 「그래서」「따라서」로 원인과 결과가 이어집니다. 문단 수도 4개로 같습니다.
[5] 길이와 조건어는 스크립트로 잽니다. 마침표 뒤 공백에서 문장을 자르고, 인자로 준 낱말이 전후에 몇 번 나오는지 셉니다. 줄었으면 LOST 에 종료 코드 1 입니다.
#!/usr/bin/env python3"""usage: check.py before.txt after.txt marker [marker ...]"""import re, sysdef read(p): return " ".join(open(p, encoding="utf-8").read().split())def lens(t): return [len(s) for s in re.split(r"(?<=[.!?])\s+", t) if s]a, b = read(sys.argv[1]), read(sys.argv[2])for name, t in (("before", a), ("after", b)): L = lens(t) print(f"{name}: {len(L)} sentences, avg {sum(L)/len(L):.1f}, max {max(L)}, over50 {sum(x > 50 for x in L)}")lost = 0for m in sys.argv[3:]: na, nb = a.count(m), b.count(m) lost += nb < na print("OK " if nb >= na else "LOST", repr(m), f"{na} -> {nb}")sys.exit(1 if lost else 0)[6] 원문과 두 번의 결과를 같은 낱말로 대조합니다.
$ python3 -I check.py doc.ko.txt out.ko.v2.1.txt 경우에만 "경우에 한해" "단,"before: 8 sentences, avg 97.5, max 134, over50 8after: 24 sentences, avg 34.9, max 47, over50 0OK '경우에만' 2 -> 2OK '경우에 한해' 1 -> 1OK '단,' 2 -> 2두 번째 실행은 24개 문장, 평균 35.0자, 최대 47자로 역시 통과했습니다. 연결어가 「따라서」「그래서」「그러나」「하지만」으로 실행마다 조금 다릅니다. 짧은 프롬프트에서 이번에는 「단,」이 남았지만, 낱말이 빠지는 일은 언제든 있을 수 있으니 나눌 때마다 이 스크립트를 돌립니다.
[7] 스크립트가 못 잡는 것은 사람이 봅니다. 3문단 첫 문장을 원문과 놓고 보면 이렇습니다(두 번째 실행).
| 원문 | 나눈 뒤 |
|---|---|
| 열흘 안에 영수증 사진과 출장 보고서를 함께 제출한 경우에만 정산되고 | 열흘 안에 제출한 경우에만 정산됩니다. 영수증 사진과 출장 보고서를 함께 제출해야 합니다. |
「경우에만」은 남았지만 무엇을 제출해야 하는지가 다음 문장으로 밀렸습니다. 첫 문장만 읽으면 기한 안에 무엇이든 제출하기만 하면 정산되는 것처럼 보입니다(함께 내야 할 서류 두 가지가 다음 문장으로 빠졌습니다). 첫 번째 실행은 반대로 영수증·보고서는 첫 문장에 두고 「열흘 안」을 다음 문장으로 보냈습니다. 둘 다 낱말 검사로는 통과하는 변화입니다. 조건이 걸린 대상까지 문장에 남기려면 규칙 3 에 한 줄을 더합니다.
조건이 요구하는 내용(무엇을, 언제까지)은 「경우에만」이 들어 있는 문장 안에 함께 둡니다.마지막 문단에는 「이는 새 규정과 상관없이 적용됩니다」처럼 앞 문장을 가리키는 짧은 문장도 생겼습니다. 반영하기 전에 이런 문장만 따로 찾아 읽습니다.
수정 전후 차이를 단어 단위로 보려면 AI 가 고친 문장을 단어 단위 diff 로 검수 를 함께 쓸 수 있습니다.