마디맞춤법 검사기

무엇을 잡고, 무엇을 못 잡나

마디 맞춤법 검사기는 마디 형태소 분석기 위에서 돕니다. 문장을 형태소로 나눠 본 뒤 띄어쓰기·형태 규칙·오타를 따지고, 지적마다 교정안과 근거(한글 맞춤법·표준어 규정 조항, 표준국어대사전·우리말샘)를 붙입니다. 같은 입력에는 늘 같은 결과를 냅니다.

잡는 것 (1차)

띄어쓰기

조사·어미를 띄운 것(학교 에서), 의존 명사·단위 명사를 붙인 것(할수, 세개), 통계로 판단하는 붙임·띄움. 한글 맞춤법 제41~50항.

형태·어법

되/돼, 안/않, -ㄹ게, -이/-히, 률/율, 사이시옷, 웬/왠, -던/-든, 로서/로써, 활용형(오십시요 → 오십시오), 준말 등. 표준국어대사전의 비표준어 표시 8,206개 · 우리말샘 3,943개 · 관용 표기 435개를 함께 씁니다.

오타

받침·모음·자음을 잘못 친 것, 글자 순서가 바뀐 것, 소리 나는 대로 이어 쓴 것(사무시레서). 사전에 없는 꼴을 바른 낱말로 되돌립니다.

등급과 교정 수준

못 잡는 것

평가 — 공개 표

채점지 v3 는 규칙을 보지 않고 만든 눈가림 셋입니다(오류 1,000 · 정답 1,000 · 정상 1,000문장 · 문단 200). 고정 판 s8c 의 값입니다.

대상검출 F0.5R 띄어쓰기 · 규범 · 오타교정 정확률문장 정확률문단 정확률 · 오류 없는 문단 그대로정답 문장 오탐정상 1,000 오탐 (미등록 200)
madi (보통)0.9230.89 · 0.70 · 0.500.7060.5830.547 · 0.9800.5 (0.3)0.8 (0.7) · 0.8 (0.8)
madi (꼼꼼)0.9250.92 · 0.71 · 0.500.7070.5870.547 · 0.9800.5 (0.3)0.8 (0.7) · 0.8 (0.8)
Kiwi 0.24 (띄어쓰기 교정)0.4870.99 · 0.47 · 0.500.1380.0940.007 · 0.18059.4 (25.6)67.3 (29.7) · 93.0 (46.4)
hunspell-dict-ko ³0.7470.69 · 0.69 · 0.920.2980.2420.107 · 0.44021.1 (13.2)32.9 (22.2) · 93.3 (69.5)
et5 ⁴0.2970.97 · 0.60 · 0.500.0130.0100.000 · 0.000173.1 (168.6)160.4 (153.2) · 180.3 (165.8)
Claude ⓛ (claude-opus-5-5) ⁵0.9991.00 · 1.00 · 0.990.9890.9880.987 · 1.0000.4 (0.1)0.8 (0.1) · 0.8 (0.3)
Gemini ⓛ (gemini-3.1-pro-preview) ⁵0.9981.00 · 0.99 · 0.990.9860.9850.867 · 1.0003.1 (0.2)5.2 (0.2) · 7.1 (0.5)

오탐 = 1,000어절당 바뀐 어절, 괄호 = 글자가 바뀐 어절. 묶음: 띄어쓰기 = T01~T03, 오타 = T17·T18, 규범 = 나머지. 교정 정확률은 오류가 둘인 문장에서 하나만 고쳐도 틀림으로 셉니다. ⓛ = 대형 언어 모델.

합성 오류 셋 — 공개 원문에 오류를 심은 것 (9,386문장; 외부 API 대상은 1,000 표본)

대상문장PRF0.5정책뉴스 원문 오탐: 바뀐 · 판정 오탐 ⁶
madi9,3860.9680.7980.9291.55 · 1.13
Kiwi 0.249,3860.2270.8890.266197.5 · 103.5
hunspell-dict-ko1,000 표본0.1790.6530.209173.3 · 109.0
et51,000 표본0.1370.8950.165306.9 · 270.1
Claude ⓛ1,000 표본0.7690.9890.8058.4 · 3.8
Gemini ⓛ1,000 표본0.7490.9930.78855.2 · 12.5

정책뉴스 원문 오탐은 합성 셋의 정답 문장 가운데 정책뉴스 원천(4,609문장, 표본 대상은 494문장)을 그대로 넣었을 때 바뀐 어절입니다. madi 의 원문 직접 측정(정책뉴스 5,357줄)은 바뀐 1.80 · 판정 오탐 1.39 입니다.

읽는 법

비 LLM 도구(Kiwi·hunspell·et5)보다 검출·교정·오탐 모두 앞섭니다. 대형 언어 모델은 거의 다 맞히지만 고치지 않아도 되는 자리를 고칩니다 — 재현율의 상한선이자 다른 종류의 도구입니다. 마디의 자리는 빠르고, 내 컴퓨터에서 돌고, 무료이고, 결과가 늘 같고, 조항 근거를 대며, 원문을 다듬지 않는다는 데 있습니다.

  1. v1 의 낙관: 규칙을 보며 만든 채점지 v1(477·540문장)에서는 F0.5 0.978, 규범 R 0.96 이었습니다. 눈가림 v2(0.922)·v3(0.923)가 실제 수준입니다.
  2. 합성 셋의 인공성: 오류의 84% 가 띄어쓰기이고 규범 오류는 40배로 늘려 심었습니다. 원문의 띄어쓰기를 정답으로 보며, 허용 경계(명사+명사·보조 용언)는 채점에서 뺍니다. '숫자 + 만·억 + 단위'(3000만원)도 오류로 심었는데, 제43항 다만에 걸리는 자리라 마디는 지적하지 않습니다.
  3. hunspell: 사전에 없는 꼴에 밑줄을 긋는 방식이라 검출이 높아도 정상 오탐이 같이 옵니다. 교정은 첫 후보로 쟀습니다.
  4. et5: 공개 교정 생성 모델입니다. 문장을 다시 쓰는 일이 잦아 오류 자리 교정은 높아도 문장 정확률은 낮고, 긴 입력은 출력이 잘립니다.
  5. LLM: Claude 10줄, Gemini 20줄씩 묶어 고정 프롬프트(맞춤법·띄어쓰기·표준어만, 문체 유지)로 보냈습니다. 차이가 나는 곳은 문맥 어휘(T20)와 합성 셋의 '원문 다듬기'입니다(Claude 는 허용 띄어쓰기의 71% 를 띄움).
  6. 판정 오탐: 원문 자체의 비표준 붙여 쓰기(양국간·시행중)를 바르게 띄운 것까지 오탐이 되지 않도록, 표준국어대사전으로 자동 판정해 '표준 교정'을 뺀 값입니다(사람·LLM 판정 없음).
  7. 고정 판 뒤: 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 의 값입니다.
  8. 정답 확인: v2·v3 는 표준국어대사전(1순위)·우리말샘(2순위) 자료로 오프라인 검사했습니다.

브라우저 안 검사기 (시험판)

브라우저 안 검사기는 같은 검사기를 이 브라우저 안(WebAssembly)에서 돌립니다. 글과 파일이 서버로 가지 않고 길이 한도가 없으며, 텍스트 파일을 넣으면 교정한 글(.교정.txt)과 진단 목록(.진단.tsv)을 새 파일로 만들어 줍니다.

브라우저로 내려받는 양을 줄이려고 경량 모델(연도별 빈도를 뺀 사전 + 가지친 KnLM)을 씁니다. 그만큼 조금 덜 잡지만, 맞는 문장을 고치는 비율은 같습니다. 채점지 v3(눈가림), 보통 교정 수준:

검사기검출 F0.5R 띄어쓰기 · 규범 · 오타교정 정확률문장 정확률정상 1,000 오탐 (미등록 200)
서버 (/spell, 전체 모델)0.9230.88 · 0.70 · 0.500.7080.5800.3 (0.3) · 0.8 (0.8)
브라우저 안 (경량 모델)0.9130.88 · 0.66 · 0.510.6900.5480.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).

code --install-extension madi-spell-0.3.0-win32-x64.vsix

처음 문서를 열면 모델(55 MB 전송, 풀면 약 204 MB)을 받을지 묻습니다. Python 패키지 madipy 와 같은 자리를 써서 한쪽에서 받았으면 다시 받지 않습니다.

이용 조건