도구스개발

자로-윙클러 유사도 계산기

두 문자열의 자로·자로-윙클러 유사도를 계산합니다. 매칭 창과 자리바꿈, 접두사 보정을 단계별로 보여 주고 한글은 자모 분해 여부를 골라 견줄 수 있습니다.

자로-윙클러 유사도

0.961111

자로 0.944444 · 공통 접두사 3글자 · 보정 적용됨

자로 유사도 J0.9444444444
자로-윙클러 JW0.9611111111
매칭 창 ⌊max(길이)/2⌋ − 1±2
짝지어진 글자 m6
자리바꿈 t (어긋난 자리 ÷ 2)1
길이6 · 6
공통 접두사 ℓ (최대 4)3글자
A에서 짝지어진 자리
MARTHA
B에서 짝지어진 자리
MARHTA
짝만 순서대로: MARTHA / MARHTA — 어긋난 자리 2개, 곧 자리바꿈 1
계산 근거J = ( 6/6 + 6/6 + (61)/6 ) / 3 = 0.94444444JW = 0.94444444 + 3×0.1×(1 − 0.94444444) = 0.96111111세 항은 각각 「A가 얼마나 쓰였나」「B가 얼마나 쓰였나」「순서가 얼마나 맞나」입니다.
매칭 창의 −1을 빼먹는 구현이 흔합니다. 같은 글자라도 창 밖에 있으면 짝으로 세지 않으며, 창은 ⌊max(길이)/2⌋ − 1입니다. 지금은 ±2칸이고, 이 −1이 빠지면 ±3칸이 되어 짧은 문자열에서 값이 눈에 띄게 달라집니다. 길이가 3 이하면 창이 0이 되어 «같은 자리»끼리만 짝이 됩니다.
보정 규약을 바꾸면 값이 달라질 수 있습니다. 원 논문은 자로가 0.7을 넘을 때만 접두사 보정을 겁니다. 지금 고른 규약에서 0.961111이고, 다른 규약에서는 0.961111입니다. 이 쌍에서는 두 규약이 같은 값을 냅니다.
한글은 «글자»로 볼지 «자모»로 볼지에 따라 갈립니다. 「강」과 「간」은 글자로는 겹치는 것이 없지만 자모로 풀면 ㄱ·ㅏ를 공유합니다. 다만 자모로 푼다고 «항상» 점수가 오르지는 않습니다 — 다른 글자들이 자모를 하나도 나눠 갖지 않으면 짝의 비율이 그대로여서 값이 똑같습니다. 홍길동/홍길순은 글자로 3분의 2, 자모로 9분의 6이라 둘 다 0.777778입니다.
비슷해 보이지만 다른 것을 재는 도구들 편집 «횟수»가 궁금하면 레벤슈타인, 「비슷하게 «들리는가»」가 궁금하면 사운덱스입니다. 이 계산기는 «같은 글자가 가까운 자리에 얼마나 있는가»를 봅니다. 사람 이름·주소를 맞춰 볼 때 앞부분 가중을 주고 싶은 경우에 씁니다.
유사도는 «같은 것»을 뜻하지 않습니다. 0.9가 넘어도 다른 사람일 수 있고, 낮아도 같은 사람일 수 있습니다. 어느 값부터 같은 것으로 볼지는 데이터마다 달라 직접 정해야 하며, 이 계산기는 그 문턱을 대신 정해 주지 않습니다.

사용 방법

  1. 1견줄 두 문자열을 넣습니다.
  2. 2한글이라면 글자 그대로 볼지 자모로 풀어서 볼지 고릅니다.
  3. 3윙클러 보정을 원 논문처럼 자로 0.7 초과일 때만 걸지, 언제나 걸지 고릅니다.
  4. 4짝지어진 자리와 자리바꿈 수를 확인해 값이 왜 그렇게 나왔는지 봅니다.

자주 묻는 질문

먼저 자로 유사도 J = ( m/|s₁| + m/|s₂| + (m−t)/m ) / 3을 구하고, 여기에 접두사 보정 JW = J + ℓ·p·(1−J) 를 더합니다. m은 짝지어진 글자 수, t는 자리바꿈 수, ℓ은 공통 접두사 길이(최대 4), p는 0.1입니다. 세 항은 각각 첫 문자열이 얼마나 쓰였나, 둘째가 얼마나 쓰였나, 순서가 얼마나 맞나를 나타냅니다.

같은 글자를 짝으로 인정해 주는 자리의 범위이며 ⌊max(|s₁|,|s₂|)/2⌋ − 1입니다. 이 −1을 빼먹는 구현이 흔해서 짧은 문자열에서 값이 눈에 띄게 달라집니다. 길이가 3 이하면 창이 0이 되어 같은 자리에 있는 글자끼리만 짝이 됩니다.

짝지어진 글자들을 각 문자열에서의 순서대로 늘어놓고 자리별로 견줘, 어긋난 자리의 수를 2로 나눕니다. MARTHA와 MARHTA는 T와 H가 서로 자리를 바꿔 어긋난 자리가 2개, 곧 자리바꿈 1회입니다.

윙클러 보정을 거는 조건이 서로 달라서인 경우가 대부분입니다. 원 논문은 자로가 0.7을 넘을 때만 보정을 걸지만 이 조건을 빼는 구현도 많고, 그러면 이미 많이 다른 쌍의 점수까지 올라갑니다. 이 계산기는 두 규약을 모두 고를 수 있게 하고 다른 규약의 값도 함께 보여 줍니다. 매칭 창의 −1이 빠진 구현도 흔한 원인입니다.

재는 것이 다릅니다. 레벤슈타인은 몇 번 고쳐야 하는가(편집 횟수), 사운덱스는 비슷하게 들리는가(발음), 자로-윙클러는 같은 글자가 가까운 자리에 얼마나 있는가를 봅니다. 사람 이름이나 주소처럼 앞부분이 맞으면 같은 것일 가능성이 높은 데이터에 자로-윙클러가 쓰이는 이유가 접두사 보정입니다.

오타 교정이라면 자모로 푸는 쪽이 대개 낫습니다. 「강」과 「간」은 글자로는 겹치는 것이 없지만 자모로 풀면 ㄱ·ㅏ를 공유하기 때문입니다. 다만 자모로 푼다고 항상 점수가 오르지는 않습니다. 다른 글자들이 자모를 하나도 나눠 갖지 않으면 짝의 비율이 그대로여서 값이 똑같이 나옵니다.

데이터마다 달라 직접 정해야 합니다. 0.9가 넘어도 다른 사람일 수 있고 낮아도 같은 사람일 수 있어, 실제로 맞춰 볼 자료에서 맞은 것과 틀린 것의 분포를 보고 문턱을 정하는 것이 보통입니다. 이 계산기는 값만 내고 문턱을 대신 정해 주지 않습니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 매칭 창은 ⌊max(길이)/2⌋ − 1입니다. 이 −1을 빼먹는 구현이 흔해 값이 어긋나는 원인이 됩니다.
  • 윙클러 보정은 접두사 4글자까지, 계수 0.1로 겁니다. 원 논문은 자로가 0.7을 넘을 때만 걸며 이 계산기는 두 규약을 모두 고를 수 있습니다.
  • 한글 자모 분해는 유니코드 한글 음절의 산술로 합니다. 겹받침은 하나의 기호로 셉니다.
  • 자모로 푼다고 항상 점수가 오르지는 않습니다. 다른 글자들이 자모를 공유하지 않으면 값이 그대로입니다.
  • 유사도가 높다고 같은 것을 뜻하지는 않습니다. 판정 문턱은 데이터마다 직접 정해야 합니다.
  • 200자까지만 계산합니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.