무료 로컬 AI 맞춤법 교정 60번 — 심어 둔 오류 50개, 세 번씩 돌려도 절반도 못 고쳤습니다
「다음 글의 맞춤법과 띄어쓰기만 고쳐 주세요. 문장 구조와 표현은 바꾸지 말고, 고친 글만 출력해 주세요.」
이 지시와 함께 「박서연 대리님께 다음 주에 뵈요라고 메시지를 보냈다.」가 든 초안을 넣었습니다. 무료 로컬 AI qwen3-vl:8b가 돌려준 문장은 이랬습니다.
박서연 대리님께 다음 주에 뵠요라고 메시지를 보냈다.
「뵈요」의 표준 표기는 「봬요」입니다. 모델은 틀린 글자를 지우고 없는 글자를 넣었습니다. 같은 조건의 다른 회차에서는 「왠만하면 무료 요금제로」가 이렇게 돌아왔습니다.
Gwen만하면 무료 요금제로 버티려고 했다.
이 글은 무료 로컬 AI에 한국어 맞춤법 교정이나 문장 다듬기를 맡기려는 독자가 어떤 지시를 쓸지, 결과에서 무엇을 다시 확인할지, 기본 설정 그대로 돌려도 되는지를 정하도록 돕는 기록입니다. 결론부터 말하면 이번 테스트에서 맞춤법만 고치라고 했을 때 심어 둔 오류 50개를 세 번씩, 모두 150자리를 돌려 53자리를 고쳤고 71자리는 그대로 남겼습니다. 다듬어 달라고 했을 때는 30회 중 22회가 반말 초안을 「습니다」체로 바꿨습니다. 그리고 Ollama 서버 기본 설정 그대로는 대부분 빈 답이 나왔습니다.
오류 자리를 정해 두고 60번 교정시켰습니다
7월 첫 기록은 지문 하나를 「자연스럽게 다듬어줘」 지시로 4번 넣은 것이었습니다. 그래서는 모델이 무엇을 고치고 무엇을 놓쳤는지 셀 수 없습니다. 이번에는 자리를 정해 두고 셌습니다.
- 초안 10개 — 135~232자의 짧은 글입니다. 초안마다 흔히 틀리는 표준 맞춤법 오류를 5개씩 심어 모두 50자리를 만들었습니다. 첫 초안(D01)은 7월에 쓴 지문 그대로입니다.
- 조건 2개 — ①「맞춤법과 띄어쓰기만 고쳐 주세요. 문장 구조와 표현은 바꾸지 말고…」 ②「이 글을 자연스럽고 매끄럽게 다듬어줘. 의미는 바꾸지 말고.」(7월 지시문 그대로)
- 반복 3회 — 조건마다 초안 10개를 세 번씩, 모두 60회 돌렸습니다. 온도는 모델 기본값인 1이라 회차마다 답이 달라집니다.
- 채점 — 심은 오류 자리마다 세 가지로 나눴습니다. 틀린 형태가 사라지고 맞는 형태가 나오면 「고침」, 틀린 형태가 그대로면 「남김」, 틀린 형태도 맞는 형태도 없으면 「바꿔 씀」입니다. 초안마다 숫자·이름 같은 「표지」를 셋씩 정해 두고, 교정 뒤에도 글자 그대로 남았는지도 봤습니다.
모델은 qwen3-vl:8b(Q4_K_M)이고 Ollama 0.32.1, RTX 4070 Ti SUPER에서 돌렸습니다. 온도 1, top_k 20, top_p 0.95는 모델 기본값을 그대로 썼고, 생각 모드도 켜진 기본 상태로 뒀습니다. 기본값에서 바꾼 것은 하나뿐입니다. 문맥 길이(num_ctx)를 16384로 늘렸는데, 이유는 아래에 따로 적었습니다.
맞춤법만 고치라고 했을 때: 71개를 그대로 뒀습니다
| 맞춤법만 고치기 · 30회 | 결과 |
|---|---|
| 심은 오류 고침 | 53 / 150 |
| 그대로 남김 | 71 / 150 |
| 바꿔 씀 | 26 / 150 |
| 초안 하나의 오류 5개를 전부 고친 회차 | 0 / 30 |
| 표지 보존 | 29 / 30 |
| 글자 수 비율 중앙값 | 1.0 |
지시는 잘 지켰습니다. 글자 수 비율 중앙값이 1.0이라 문장을 거의 건드리지 않았고, 설명 머리말도 붙이지 않았습니다. 문제는 고친 양입니다. 150자리 가운데 절반에 가까운 71자리를 그대로 뒀고, 오류 5개를 모두 고친 회차는 한 번도 없었습니다.
첫 초안부터 그랬습니다. 「높히는데→높이는데」, 「하고있다→하고 있다」는 고쳤지만, 「되서」와 「입장으로써」는 그대로 뒀습니다. 이 회차는 생각 과정에만 2만 자 넘게 썼습니다.
잘 고치는 오류와 못 고치는 오류가 뚜렷하게 갈렸습니다.
- 세 번 모두 고친 오류(10개): 높히는, 하고있다, 댓가, 문안했다, 역활, 치뤄야, 바램대로, 않 볼, 요컨데, 됬는데
- 세 번 모두 그대로 둔 오류(15개): 되서, 금새, 곰곰히, 오랫만에, 희안하게, 틈틈히, 설레임, 삼가해야, 궁시렁거리게, 뒤쳐지지, 김치찌게, 떡볶기, 알맞는, 돌맹이처럼, 되뇌이듯
「-히/-이」로 끝나는 부사(곰곰히·틈틈히)와 음식 이름(김치찌게·떡볶기), 「설레임」 「되뇌이듯」처럼 입말로 굳은 형태는 거의 손대지 않았습니다. 초안별로도 차이가 컸습니다. 번역 이야기를 담은 D04는 15자리 중 12개를 고쳤지만, 이미지 생성 요금제를 다룬 D08과 AI 모델 비교를 다룬 D10은 15자리 중 1개씩만 고쳤습니다.
「바꿔 씀」 26자리를 원문과 대조했습니다
「바꿔 씀」에는 바르게 고친 것과 틀린 것이 섞여 있습니다. 26자리를 원문 문장과 응답 문장을 나란히 놓고 하나씩 나눴습니다.
- 다른 말로 바르게 고침 17 — 「어떻해 하나」→「어떻게 하나」, 「나을런지는」→「나은지는」처럼 채점표에 적어 둔 정답 형태와는 다르지만 맞게 고친 경우입니다.
- 여전히 틀림·새 오류 6 — 「뵠요」, 「Gwen만하면」, 「안 되요」(두 번), 「몇 일」, 그리고 「가르켰다」를 「가르쳤다」로 바꾼 경우입니다. 「가리키다」와 「가르치다」는 다른 말입니다.
- 뜻이 바뀜 3 — 아래 셋입니다.
동료 이준호 씨는 떡볶기가 먹고 싶다며 개소리를 물었다.
이 부분은 다음 주 화요일 회의에서 다시 예고하겠다.
수많은 AI 회사들이 앞다퉈 한국어 모델을 내놓고 있다.
원문은 각각 「개거품을 물었다」, 「다시 예기하겠다(→얘기하겠다)」, 「내노라하는(→내로라하는) AI 회사들」이었습니다. 「문장 구조와 표현은 바꾸지 말라」고 했는데, 모르는 단어를 만나면 비슷한 다른 말로 바꿔 버렸습니다. 첫 번째 문장에서는 바로 앞의 「떡볶기」도 고치지 않았습니다.
다듬어 달라고 했을 때: 오류는 사라지고 말투가 바뀌었습니다
| 자연스럽게 다듬기 · 30회 | 결과 |
|---|---|
| 심은 오류를 맞는 형태로 고침 | 15 / 150 |
| 그대로 남김 | 12 / 150 |
| 바꿔 씀 | 123 / 150 |
| 표지 보존(자동 채점) | 22 / 30 |
| 글자 수 비율 중앙값 | 1.1745 (범위 0.862~1.353) |
| 응답에 「습니다」가 들어간 회차 | 22 / 30 |
다듬기 지시에서는 문장을 통째로 새로 쓰는 게 기본이었습니다. 150자리 가운데 123자리가 문장째 바뀌어 오류 자리가 사라졌습니다. 그 과정에서 틀린 글자가 대부분 없어졌으니, 겉으로는 깨끗한 글이 됩니다.
그대로 남은 12자리도 있습니다. 「육계장」은 세 번 모두, 「김치찌게」 「오랫만에」 「설레임」은 두 번씩 살아남았습니다. 문장 전체를 새로 쓰면서 음식 이름만 원래 철자대로 옮겨 적은 셈입니다.
눈에 띈 것은 말투입니다. 초안 10개는 모두 「~했다」로 끝나는 반말 글이고 「습니다」가 한 번도 없습니다. 그런데 다듬기 응답 30회 중 22회에 「습니다」가 들어갔습니다. 맞춤법 조건에서는 1회였습니다. 「의미는 바꾸지 말고」라는 단서는 지켰다고 볼 수 있지만, 블로그 글이나 일기의 말투를 유지하고 싶은 독자라면 따로 지시해야 합니다.
사실을 새로 만든 대목도 있었습니다. 원문은 「김치찌게와 육계장 중에 고르라고 했더니 날씨에 알맞는 메뉴라며 국물 쪽을 골랐다」였습니다. 한 회차는 이렇게 다듬었습니다.
오늘은 김치찌게와 육계장 중에 고르라고 했지만, AI는 날씨에 맞는 국물 요리를 선택해 김치찌게를 제시했다. 이어 동료 이준호 씨가 떡볶이를 먹고 싶다는 말로 개거품을 풀며 반발했으나…
둘 다 국물 요리인데 원문에 없는 「김치찌게를 제시했다」가 생겼습니다. 「김치찌게」 철자도 그대로이고, 「개거품을 물었다」는 「개거품을 풀며」가 됐습니다.
표지 보존은 자동 채점으로 22/30이었습니다. 위 화면처럼 채점기는 D10에서 「두 곳」이 사라졌다고 표시했습니다. 표지 소실로 센 9건(맞춤법 조건 1건 포함)을 응답 원문에서 다시 찾아보니 숫자나 사실이 사라진 경우는 0건이었습니다. 「두 곳」은 「두 회사」로, 「11,000원」은 「1만 1천 원」으로, 「세 곳」은 「3곳」으로, 「15개」는 「15가지」로 표기만 바뀌어 있었습니다. 숫자를 지우는 쪽보다 앞의 김치찌게처럼 없는 내용을 보태는 쪽이 더 확인하기 어려웠습니다.
기본 설정 그대로는 대부분 빈 답이었습니다
처음에는 문맥 길이도 서버 기본값 그대로 파일럿 4회를 돌렸습니다. 파일럿은 본측정 전에 조건이 제대로 도는지 보는 짧은 시험입니다. 그중 3회는 답 본문이 빈 채로 끝났습니다(done_reason=length).
원인은 생각 모드였습니다. 135~232자 초안 하나를 두고 모델이 문장마다 띄어쓰기와 철자를 영어로 따져 보다가, 생각에만 9714~12819자를 쓰고 서버의 기본 문맥(4,096토큰)을 다 채웠습니다. 답을 쓸 자리가 남지 않았고, 빈 답 한 회에 40~55초가 걸렸습니다. 파일럿 판정은 「중단(infra_rate 3/4)」이었습니다. 이 4회는 교정 성능 측정에서 뺐고 위 표에도 넣지 않았습니다.
그래서 문맥 길이만 16384로 늘리고 새 폴더에서 파일럿부터 다시 돌렸습니다. 이번에는 60회 모두 답이 나왔고 잘린 답도 없었습니다. 16384로 돌린 60회 가운데 37회는 입력과 출력을 합쳐 4,096토큰을 넘었습니다. 기본 설정이었다면 절반 넘게 잘렸을 회차입니다.
응답 시간 중앙값은 맞춤법 조건 46.64초, 다듬기 조건 45.71초였습니다. 생각에 쓴 글자 수 중앙값은 각각 13462.5자, 10615자로, 교정할 초안(135~232자)보다 수십 배 길었습니다. 200자 교정 한 번에 45초 넘게 기다리는 셈입니다.
무료 로컬 AI에 교정을 맡길 때 저는 이렇게 합니다
- 빈 답이 오면 문맥 길이부터 봅니다. 생각 모드가 켜진 qwen3-vl:8b는 짧은 교정에도 4,096토큰을 넘겼습니다. Ollama에서는 요청의
options에num_ctx를 넣거나 Modelfile에서 늘릴 수 있습니다. 문맥을 늘리면 GPU 메모리를 더 쓰니 카드 여유를 먼저 확인합니다. - 「맞춤법만」 지시는 1차 검사로만 씁니다. 문장을 거의 안 건드리는 장점은 분명했습니다. 다만 오류의 절반 가까이를 남겼으니, 결과를 맞춤법 검사기에 한 번 더 넣는 편이 낫습니다. 특히 「-히/-이」 부사, 음식 이름, 「되서/돼서」는 거의 못 잡았습니다.
- 바뀐 단어는 원문과 나란히 놓고 봅니다. 「개거품→개소리」, 「예기→예고」, 「가르켰다→가르쳤다」처럼 철자는 맞는데 뜻이 다른 말로 바뀐 경우가 맞춤법 검사기에는 안 걸립니다.
- 다듬기를 맡길 때는 말투를 지시문에 적습니다. 「반말 그대로」, 「~했다 체 유지」를 적지 않으면 대부분 「습니다」체로 바뀌었습니다.
- 다듬은 글에서는 새로 생긴 내용을 찾습니다. 숫자는 표기만 바뀌고 남았지만, 원문에 없는 「김치찌게를 제시했다」 같은 내용이 생겼습니다. 사라진 것보다 생긴 것이 더 찾기 어렵습니다.
같은 모델에 한국 상식 질문과 거짓 전제 함정을 물은 결과는 로컬 AI 사실성 기록에 있습니다. 그 측정에서도 생각 모드가 기본 문맥을 다 써서 빈 답이 나온 회차가 있었습니다.
재현과 원자료
실행 파일은 run_proofread_bench.py, 채점은 proofread_score.py, 초안과 심은 오류·표지 목록은 proofread_bench_cases.json입니다. 하네스(같은 조건으로 교정을 반복 요청하고 채점하는 스크립트)는 --mode pilot으로 4회를 먼저 돌려 진행 여부를 판정한 뒤, 같은 실행 폴더에서 --mode full로 이어갑니다. 이번 본측정은 두 단계 모두 --num-ctx 16384를 붙였습니다.
이번 기록의 기준 파일은 test_runs/ollama-qwen3-vl-8b-proofread-ctx16k-20260923/run.yaml입니다. 오류 자리별 집계는 같은 폴더의 aggregate.json, 회차별 판정과 응답 원문은 results.json, 「바꿔 씀」 26자리·표지 소실 9건·말투 집계의 원문 대조 판정은 rewritten_audit.json에 있습니다. 기본 문맥 파일럿은 test_runs/ollama-qwen3-vl-8b-proofread-20260923/에 따로 남겼습니다. 이 경로들은 비공개 작업 폴더라 외부에서 열 수 없습니다. 본문에는 이번 실행 중에 찍힌 터미널 화면 캡처 세 장을 실었습니다.
재현: cinevyze-bench의 run_proofread_bench.py·proofread_score.py·proofread_bench_cases.json. 위 test_runs/… 실행 기록과 원문 대조 판정 파일은 공개하지 않습니다.
위의 고침·남김·바꿔 씀 수치는 심어 둔 150자리에 대한 값입니다. 원문 대조 판정의 범위는 맞춤법 조건의 「바꿔 씀」 26자리와 표지 소실 9건이고, 다듬기 조건의 사례는 응답 원문 인용으로 보여 드렸습니다. 모델 하나, 짧은 초안 10개 규모의 결과라 다른 모델이나 긴 글에 그대로 옮길 수는 없습니다.
교정 60회와 기본 문맥 파일럿 4회는 로컬 Ollama의 qwen3-vl:8b로 실제로 돌렸습니다. 초안과 오류 목록 작성, 측정 코드, 「바꿔 씀」과 표지 소실의 원문 대조 판정, 글 작성에 AI 도구를 활용했습니다. 조건과 문맥 길이 변경 승인, 발행 전 검수는 제가 합니다.
시네 · cinevyze 운영자 — AI 도구의 응답을 원출력과 검사 기준으로 대조합니다. 이번 측정은 RTX 4070 Ti SUPER가 있는 Linux PC의 Ollama 0.32.1에서 qwen3-vl:8b(Q4_K_M)로 진행했습니다. 측정 시점은 2026년 9월입니다. 운영자 소개
댓글
댓글 쓰기