25

Jaro-Winkler 유사도 심화

Day 2: 문자열 유사도 & Fuzzy Matching

학습 목표

Jaro-Winkler 공식의 구성 요소를 이해한다 이름 매칭에 효과적인 이유를 파악한다

Jaro 유사도

1970년대 미국 Census Bureau에서 개발

이름 레코드 매칭을 위해 설계된 알고리즘


Jaro 공식

에디터 로딩 중...

매칭 윈도우:

에디터 로딩 중...

예시: MARTHA vs MARHTA

에디터 로딩 중...

Winkler 보정

1990년대 William Winkler가 개선

공통 접두사(prefix)에 가중치 부여

에디터 로딩 중...

예시: MARTHA vs MARHTA (Winkler)

에디터 로딩 중...

접두사 보너스로 유사도 증가!


왜 이름에 효과적인가?

1. 이름의 특성 반영

  • 이름은 앞부분이 더 중요 (성 > 이름 끝)
  • "Kim Chulsoo" vs "Kim Cheolsu" → 접두사 "Kim" 보너스

2. 오타 패턴 고려

  • 이름 오타는 주로 중간/끝부분에 발생
  • 앞부분(성)은 정확히 입력되는 경향

3. 전치에 관대

  • "Micheal" vs "Michael" (ie 전치)
  • Levenshtein: 2, Jaro-Winkler: 0.97+

Jaro-Winkler 특성

특성설명
범위0 ~ 1 (1이 완전 일치)
대칭성JW(A,B) = JW(B,A)
삼각 부등식불만족 (metric이 아님)
빈 문자열JW("", x) = 0

Python 구현

에디터 로딩 중...

언제 Jaro-Winkler를 쓰는가?

적합한 경우부적합한 경우
이름/고유명사긴 문장
짧은 문자열단어 순서 변경
오타가 흔한 데이터동의어 매칭
접두사가 중요한 경우접미사가 중요한 경우