25분
Levenshtein Distance 심화
Day 2: 문자열 유사도 & Fuzzy Matching
Levenshtein Distance 심화
Entity Resolution & 데이터 통합 > Day 2: 문자열 유사도 & Fuzzy Matching
학습 목표
Levenshtein 알고리즘의 동작 원리를 이해한다 변형 알고리즘(Damerau-Levenshtein)을 파악한다
Levenshtein Distance란?
한 문자열을 다른 문자열로 변환하는 데 필요한 최소 편집 연산 수
편집 연산:
- 삽입 (Insert): a → ab
- 삭제 (Delete): ab → a
- 치환 (Substitute): ab → ac
동적 프로그래밍으로 계산
에디터 로딩 중...
예시: "kitten" → "sitting"
에디터 로딩 중...
Damerau-Levenshtein Distance
Levenshtein + 전치(Transposition)
에디터 로딩 중...
왜 중요한가?
- 오타의 많은 부분이 전치 (타이핑 순서 실수)
- "teh" → "the" (1 전치)
- "recieve" → "receive" (1 전치)
에디터 로딩 중...
유사도(Ratio)로 변환
에디터 로딩 중...
가중치 Levenshtein
모든 연산이 동일 비용?
에디터 로딩 중...
에디터 로딩 중...
언제 Levenshtein을 쓰는가?
| 적합한 경우 | 부적합한 경우 |
|---|---|
| 짧은 문자열 | 긴 텍스트 |
| 단일 단어 | 다단어 구문 |
| 오타 탐지 | 동의어 매칭 |
| 철자 교정 | 의미적 유사도 |
한계:
- O(m*n) 시간 복잡도 → 긴 문자열에 느림
- 단어 순서에 민감 → "John Smith" vs "Smith John"
- 언어 독립적 → 발음/의미 무시