무엇을 잡고, 무엇을 못 잡나
마디 맞춤법 검사기는 마디 형태소 분석기 위에서 돕니다. 문장을 형태소로 나눠 본 뒤 띄어쓰기·형태 규칙·오타를 따지고, 지적마다 교정안과 근거(한글 맞춤법·표준어 규정 조항, 표준국어대사전·우리말샘)를 붙입니다. 같은 입력에는 늘 같은 결과를 냅니다.
잡는 것 (1차)
띄어쓰기
조사·어미를 띄운 것(학교 에서), 의존 명사·단위 명사를 붙인 것(할수, 세개), 통계로 판단하는 붙임·띄움. 한글 맞춤법 제41~50항.
형태·어법
되/돼, 안/않, -ㄹ게, -이/-히, 률/율, 사이시옷, 웬/왠, -던/-든, 로서/로써, 활용형(오십시요 → 오십시오), 준말 등. 표준국어대사전의 비표준어 표시 8,206개 · 우리말샘 3,943개 · 관용 표기 435개를 함께 씁니다.
오타
받침·모음·자음을 잘못 친 것, 글자 순서가 바뀐 것, 소리 나는 대로 이어 쓴 것(사무시레서). 사전에 없는 꼴을 바른 낱말로 되돌립니다.
등급과 교정 수준
- 오류 — 규정 위반이 확실하고 교정이 하나. 경고 — 문맥 판단이 들어가거나 교정이 둘 이상. 제안 — 허용 범위 안이거나 문체.
- 교정 수준 — 보통(기본)은 확실한 것만 짚습니다. 꼼꼼은 띄어쓰기를 더 민감하게 보고 외래어 관용 표기도 오류로 올립니다.
- "모두 적용" 은 교정안이 하나뿐인 지적만 고칩니다. 교정안이 여럿이면 직접 고르세요.
못 잡는 것
- 사전에 있는 낱말로 잘못 친 오타(실사 오타: 박으로 → 밖으로 류)는 대부분 놓칩니다. 문맥 모델이 필요한 일이라 다음 판의 과제입니다.
- 뜻으로 가르는 낱말(맞추다/맞히다, 붙이다/부치다, 반드시/반듯이)은 거의 보지 않습니다.
- 문장 다듬기·문체·호응·높임법은 하지 않습니다. 원문을 고쳐 쓰지 않는 것이 이 검사기의 원칙입니다.
- 사전에 없는 이름(회사·제품·사람)을 잘못 띄우거나 오타로 볼 때가 있습니다. VS Code 확장에서는 "내 단어" 로 막을 수 있습니다.
평가 — 공개 표
채점지 v3 는 규칙을 보지 않고 만든 눈가림 셋입니다(오류 1,000 · 정답 1,000 · 정상 1,000문장 · 문단 200). 고정 판 s8c 의 값입니다.
| 대상 | 검출 F0.5 | R 띄어쓰기 · 규범 · 오타 | 교정 정확률 | 문장 정확률 | 문단 정확률 · 오류 없는 문단 그대로 | 정답 문장 오탐 | 정상 1,000 오탐 (미등록 200) |
|---|---|---|---|---|---|---|---|
| madi (보통) | 0.923 | 0.89 · 0.70 · 0.50 | 0.706 | 0.583 | 0.547 · 0.980 | 0.5 (0.3) | 0.8 (0.7) · 0.8 (0.8) |
| madi (꼼꼼) | 0.925 | 0.92 · 0.71 · 0.50 | 0.707 | 0.587 | 0.547 · 0.980 | 0.5 (0.3) | 0.8 (0.7) · 0.8 (0.8) |
| Kiwi 0.24 (띄어쓰기 교정) | 0.487 | 0.99 · 0.47 · 0.50 | 0.138 | 0.094 | 0.007 · 0.180 | 59.4 (25.6) | 67.3 (29.7) · 93.0 (46.4) |
| hunspell-dict-ko ³ | 0.747 | 0.69 · 0.69 · 0.92 | 0.298 | 0.242 | 0.107 · 0.440 | 21.1 (13.2) | 32.9 (22.2) · 93.3 (69.5) |
| et5 ⁴ | 0.297 | 0.97 · 0.60 · 0.50 | 0.013 | 0.010 | 0.000 · 0.000 | 173.1 (168.6) | 160.4 (153.2) · 180.3 (165.8) |
| Claude ⓛ (claude-opus-5-5) ⁵ | 0.999 | 1.00 · 1.00 · 0.99 | 0.989 | 0.988 | 0.987 · 1.000 | 0.4 (0.1) | 0.8 (0.1) · 0.8 (0.3) |
| Gemini ⓛ (gemini-3.1-pro-preview) ⁵ | 0.998 | 1.00 · 0.99 · 0.99 | 0.986 | 0.985 | 0.867 · 1.000 | 3.1 (0.2) | 5.2 (0.2) · 7.1 (0.5) |
오탐 = 1,000어절당 바뀐 어절, 괄호 = 글자가 바뀐 어절. 묶음: 띄어쓰기 = T01~T03, 오타 = T17·T18, 규범 = 나머지. 교정 정확률은 오류가 둘인 문장에서 하나만 고쳐도 틀림으로 셉니다. ⓛ = 대형 언어 모델.
합성 오류 셋 — 공개 원문에 오류를 심은 것 (9,386문장; 외부 API 대상은 1,000 표본)
| 대상 | 문장 | P | R | F0.5 | 정책뉴스 원문 오탐: 바뀐 · 판정 오탐 ⁶ |
|---|---|---|---|---|---|
| madi | 9,386 | 0.968 | 0.798 | 0.929 | 1.55 · 1.13 |
| Kiwi 0.24 | 9,386 | 0.227 | 0.889 | 0.266 | 197.5 · 103.5 |
| hunspell-dict-ko | 1,000 표본 | 0.179 | 0.653 | 0.209 | 173.3 · 109.0 |
| et5 | 1,000 표본 | 0.137 | 0.895 | 0.165 | 306.9 · 270.1 |
| Claude ⓛ | 1,000 표본 | 0.769 | 0.989 | 0.805 | 8.4 · 3.8 |
| Gemini ⓛ | 1,000 표본 | 0.749 | 0.993 | 0.788 | 55.2 · 12.5 |
정책뉴스 원문 오탐은 합성 셋의 정답 문장 가운데 정책뉴스 원천(4,609문장, 표본 대상은 494문장)을 그대로 넣었을 때 바뀐 어절입니다. madi 의 원문 직접 측정(정책뉴스 5,357줄)은 바뀐 1.80 · 판정 오탐 1.39 입니다.
읽는 법
비 LLM 도구(Kiwi·hunspell·et5)보다 검출·교정·오탐 모두 앞섭니다. 대형 언어 모델은 거의 다 맞히지만 고치지 않아도 되는 자리를 고칩니다 — 재현율의 상한선이자 다른 종류의 도구입니다. 마디의 자리는 빠르고, 내 컴퓨터에서 돌고, 무료이고, 결과가 늘 같고, 조항 근거를 대며, 원문을 다듬지 않는다는 데 있습니다.
- v1 의 낙관: 규칙을 보며 만든 채점지 v1(477·540문장)에서는 F0.5 0.978, 규범 R 0.96 이었습니다. 눈가림 v2(0.922)·v3(0.923)가 실제 수준입니다.
- 합성 셋의 인공성: 오류의 84% 가 띄어쓰기이고 규범 오류는 40배로 늘려 심었습니다. 원문의 띄어쓰기를 정답으로 보며, 허용 경계(명사+명사·보조 용언)는 채점에서 뺍니다. '숫자 + 만·억 + 단위'(3000만원)도 오류로 심었는데, 제43항 다만에 걸리는 자리라 마디는 지적하지 않습니다.
- hunspell: 사전에 없는 꼴에 밑줄을 긋는 방식이라 검출이 높아도 정상 오탐이 같이 옵니다. 교정은 첫 후보로 쟀습니다.
- et5: 공개 교정 생성 모델입니다. 문장을 다시 쓰는 일이 잦아 오류 자리 교정은 높아도 문장 정확률은 낮고, 긴 입력은 출력이 잘립니다.
- LLM: Claude 10줄, Gemini 20줄씩 묶어 고정 프롬프트(맞춤법·띄어쓰기·표준어만, 문체 유지)로 보냈습니다. 차이가 나는 곳은 문맥 어휘(T20)와 합성 셋의 '원문 다듬기'입니다(Claude 는 허용 띄어쓰기의 71% 를 띄움).
- 판정 오탐: 원문 자체의 비표준 붙여 쓰기(양국간·시행중)를 바르게 띄운 것까지 오탐이 되지 않도록, 표준국어대사전으로 자동 판정해 '표준 교정'을 뺀 값입니다(사람·LLM 판정 없음).
- 고정 판 뒤: v3 뒤에 고친 판(s8d)은 정상 오탐 0.8 → 0.3, 교정 0.706 → 0.708 입니다. 이 서버와 VS Code 확장 0.3.0 은 분석기와 같은 A2 엔진(3p 가중 + 전후향 가지치기)을 쓰며, 같은 셋에서 v3 F0.5 0.923, 정상 오탐 0.3/1,000 으로 같은 수준입니다. 표는 고정 판 s8c 의 값입니다.
- 정답 확인: v2·v3 는 표준국어대사전(1순위)·우리말샘(2순위) 자료로 오프라인 검사했습니다.
브라우저 안 검사기 (시험판)
브라우저 안 검사기는 같은 검사기를 이 브라우저 안(WebAssembly)에서 돌립니다. 글과 파일이 서버로 가지 않고 길이 한도가 없으며, 텍스트 파일을 넣으면 교정한 글(.교정.txt)과 진단 목록(.진단.tsv)을 새 파일로 만들어 줍니다.
브라우저로 내려받는 양을 줄이려고 경량 모델(연도별 빈도를 뺀 사전 + 가지친 KnLM)을 씁니다. 그만큼 조금 덜 잡지만, 맞는 문장을 고치는 비율은 같습니다. 채점지 v3(눈가림), 보통 교정 수준:
| 검사기 | 검출 F0.5 | R 띄어쓰기 · 규범 · 오타 | 교정 정확률 | 문장 정확률 | 정상 1,000 오탐 (미등록 200) |
|---|---|---|---|---|---|
| 서버 (/spell, 전체 모델) | 0.923 | 0.88 · 0.70 · 0.50 | 0.708 | 0.580 | 0.3 (0.3) · 0.8 (0.8) |
| 브라우저 안 (경량 모델) | 0.913 | 0.88 · 0.66 · 0.51 | 0.690 | 0.548 | 0.3 (0.3) · 0.8 (0.8) |
둘 다 A2 엔진 판(2026-10-18)으로 같은 날 잰 값입니다. 위 공개 표(고정 판 s8c)와는 판이 달라 칸 값이 조금 다릅니다. 시험판이라 다음 판에서 모델과 함께 바뀝니다.
VS Code 확장
markdown·텍스트 문서를 쓰는 동안 밑줄로 짚고, 빠른 수정으로 교정안을 적용합니다. 이 쪽과 같은 검사기가 내 컴퓨터에서 돌아 글이 밖으로 나가지 않고 길이 한도도 없습니다. 교정 수준(madi.strictness)과 "내 단어"(~/.madi/words.txt, 작업 영역 .madi/words.txt)를 쓸 수 있습니다.
madi-release 의 Release 에서 자기 플랫폼의 .vsix 하나를 받아 설치합니다(Windows x64 · macOS Apple Silicon·Intel · Linux x64·arm64).
처음 문서를 열면 모델(55 MB 전송, 풀면 약 204 MB)을 받을지 묻습니다. Python 패키지 madipy 와 같은 자리를 써서 한쪽에서 받았으면 다시 받지 않습니다.
이용 조건
- 이 쪽의 검사기는 누구나 개인·교육·연구·업무에 무료로 쓸 수 있습니다.
- 넣은 글은 저장하지 않습니다. 서버 기록에는 글의 길이·처리 시간·지적 수만 남습니다.
- 서버 검사기는 한 번에 10 KB 까지, 동시에 몰리면 잠시 기다려 달라고 할 수 있습니다(브라우저 안 검사기는 한도 없음). 프로그램으로 자동·대량 호출하거나 다른 서비스·편집기에 넣으려면 따로 협의해 주세요(GitHub p14jeffwest).
- 교정 결과는 참고용이며 정확성을 보증하지 않습니다.
- 브라우저 안 검사기는 검사기 프로그램(WASM 바이너리)을 이 브라우저로 내려보내 돌립니다. 이 쪽에서 쓰는 것은 자유이지만, 그 파일을 떼어 다시 배포하거나 다른 서비스에 넣는 것, 역컴파일은 허용하지 않습니다.
- 검사기 프로그램은 실행 파일로만 배포합니다(재배포·역컴파일·재판매 금지 — VS Code 확장의
LICENSE.txt). 형태소 분석기 부분은 공개 코드(MIT 또는 Apache-2.0)이고, 모델·사전과 맞춤법 자료 표(우리말샘·표준국어대사전에서 만든 표)는 CC BY-SA 2.0 KR 입니다. 모델은 국립국어원 모두의 말뭉치·우리말샘을 활용했습니다(자세히).