안내문의 금칙어를 찾았을 때: 문맥을 지키며 수정하는 방법
고객 안내문에서 “최고의 결과를 보장합니다” 같은 표현을 피하려고 AI에게 금칙어 검사를 맡긴다면, 발견 목록과 수정 결정을 따로 받으세요. 단어가 들어 있다는 사실은 문자열 검사로 찾을 수 있지만, 부정문·인용·직책 이름까지 모두 같은 방식으로 고치면 의미가 달라집니다. 이 글은 회사의 안내문 작성 규칙을 적용하는 사례입니다.

금칙어와 적용 범위를 먼저 정합니다
이번 내부 작성 규칙의 후보 단어는 최고와 보장입니다. 대상은 작성자가 새로 쓴 고객 안내문 본문입니다. 직접 인용, 승인된 제품·직책 이름, 파일명은 별도 검토합니다. 법적 광고 심사나 업종 규제를 판정하는 목록이 아닙니다.
문자열이 0번이어야 하는 엄격한 출력 요구라면 인용 안의 단어도 남길 수 없습니다. 반대로 “과장된 약속을 피한다”는 문체 규칙이라면 그 약속을 부정하는 설명과 승인된 직책 이름은 다르게 판단할 수 있습니다. 두 규칙을 혼합하지 않고 요청문에 어떤 기준인지 적습니다.
| ID | 가상 초안 | 문자 발견 | 문맥상 검토 |
|---|---|---|---|
| B1 | 이 절차는 초안을 검토합니다 | 없음 | 새 약속 없음 |
| B2 | 이 절차는 최고 결과를 보장합니다 | 최고·보장 | 근거 없는 우수성·결과 약속 수정 |
| B3 | 결과를 보장한다고 쓰지 않습니다 | 보장 | 부정 안내; 엄격 0회 규칙인지 확인 |
| B4 | 검토 후에 기록합니다 | 없음 | 행동 설명 보존 |
| B5 | 최고 관리자가 설정을 확인합니다 | 최고 | 승인된 직책 이름인지 확인 |
| B6 | 좋은 결과를 보 장합니다 | 없음 | 띄어쓰기 변형과 결과 약속을 사람이 확인 |
원래 네 문장 B1~B4에서는 B2·B3가 문자열 후보입니다. B5·B6를 보태면 문자열 검사의 오탐 가능성과 누락 가능성이 함께 보입니다. 한 문장에 단어 두 개가 있더라도 후보 문장 수는 한 개로 셉니다. 단어 등장이나 종류의 수와 문장 수는 따로 적습니다.
AI에 복사할 검토 요청문
고객 안내문 초안을 회사 문체 규칙으로 검토해 주세요.
후보 단어: 최고, 보장
목적: 근거 없는 우수성·결과 약속을 줄이기
범위: 작성자가 새로 쓴 안내 본문
예외 후보: 직접 인용, 승인된 직책 이름, 파일명
출력 열:
문장 ID / 원문 / 발견 단어 또는 변형 /
문장 역할 / 규칙 적용 판단 / 수정안 / 확인할 근거
문자 발견 목록과 최종 수정 대상을 구분하세요.
부정문·인용·직책 이름은 자동 삭제하지 마세요.
새 숫자·효과·보장·사실을 만들어 대체하지 마세요.
의미를 확인할 수 없으면 보류 질문을 남기세요.
원문과 수정안을 나란히 보존하세요.
B2의 수정안은 “이 절차로 초안을 검토하고 수정할 부분을 기록합니다”처럼 확인할 수 있는 행동만 남길 수 있습니다. “최고”를 “압도적”으로 바꾸면 피하려던 과장 내용이 그대로 남습니다. B3는 엄격한 문자열 0회 규칙일 때 “그 표현은 사용하지 않습니다”로 바꿀 수 있지만, 무엇을 말하는지 문맥이 사라지지 않는지도 확인해야 합니다.
같은 문자열만 찾는 간단한 코드
많은 문장에서 후보를 모을 때 다음 코드를 사용할 수 있습니다. 단어의 의미, 문장의 약속, 문체 승인까지 자동 판정하는 코드는 아닙니다. 띄어쓰기 변형은 이 예제의 한계로 드러내 둡니다.
# Literal candidates only; no judgement of sentence meaning or legal compliance.
terms = ["최고", "보장"]
texts = {
"B1": "이 절차는 초안을 검토합니다.",
"B2": "이 절차는 최고 결과를 보장합니다.",
"B3": "결과를 보장한다고 쓰지 않습니다.",
"B4": "검토 후에 기록합니다.",
"B5": "최고 관리자가 설정을 확인합니다.",
"B6": "좋은 결과를 보 장합니다.",
}
hits = {sid: [word for word in terms if word in text]
for sid, text in texts.items()}
flagged = [sid for sid, words in hits.items() if words]
assert flagged == ["B2", "B3", "B5"]
assert sum(len(words) for words in hits.values()) == 4
assert hits["B6"] == [] # A known limitation of the literal rule.
assert list(texts) == [f"B{i}" for i in range(1, 7)]
print("원문 문자열 후보3문장 / 단어종류 합계4 / B6변형은별도검토")
로컬 실행에서 B2·B3·B5 세 문장을 찾았고, 문장별 발견 단어 종류의 합은 4였습니다. B6는 찾지 못했습니다. Python 문자열 문서는 문자열 검색과 포함 비교의 기준입니다. 한국어의 어미가 붙는 “보장합니다”를 찾을 때 영문식 단어 경계를 무작정 붙이면 놓칠 수 있으므로, 후보 검색과 의미 검토를 따로 합니다.
단어 사이의 공백을 모두 제거해 검사하면 다른 말까지 합쳐져 원문에 없던 후보가 생길 수 있습니다. 변형 탐지용 사본은 별도로 만들고, 발견 후보는 원문 위치로 돌아가 확인하세요. 문장 전체를 그 사본으로 덮어쓰지 않습니다.
수정본에서 다시 볼 세 가지
첫째, 원래 문제 표현이 남았는지 다시 찾습니다. 둘째, 그 단어 대신 같은 약속을 하는 표현이 생겼는지 읽습니다. 셋째, 원래 사실과 조건이 보존됐는지 대조합니다. “검토 후에 기록”을 “즉시 해결”로 바꾸면 단어 검사는 통과해도 업무 약속이 새로 생깁니다.
문서와 버전:
작성 규칙과 적용 범위:
엄격 문자열0회 요구 여부:
문장 ID와 원문 위치:
발견 단어·변형:
원문 역할: 본문 / 부정 설명 / 인용 / 고유명사
수정 또는 보존 결정과 이유:
수정안:
보존한 사실·숫자·조건:
재검사 결과와 확인자:
작성 규칙을 바꾸면 이전의 승인 결과를 그대로 쓰지 않습니다. 어떤 단어를 왜 제한했는지, 예외가 무엇인지 최신 기준으로 확인합니다. 이 체크리스트만으로 법적 적합성이나 모든 과장 표현을 판정하지는 않습니다.
작성·기술 기준일은 2026-10-04 KST입니다. 여섯 가상 문장에 대한 문자열 후보 검사만 로컬에서 실행했습니다. 실제 고객 문서나 AI의 교정 정확도를 측정하지 않았습니다. 말투 통일은 고객 안내문의 존댓말 정리를, 사실·숫자 보존은 AI 교정 뒤 숫자·이름 대조를 함께 참고하세요.