25분
Jaro-Winkler 유사도 심화
Day 2: 문자열 유사도 & Fuzzy Matching
Jaro-Winkler 유사도 심화
Entity Resolution & 데이터 통합 > 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를 쓰는가?
| 적합한 경우 | 부적합한 경우 |
|---|---|
| 이름/고유명사 | 긴 문장 |
| 짧은 문자열 | 단어 순서 변경 |
| 오타가 흔한 데이터 | 동의어 매칭 |
| 접두사가 중요한 경우 | 접미사가 중요한 경우 |