25분
문자열 유사도: 얼마나 비슷한가?
Day 1: Entity Resolution 개론
문자열 유사도: 얼마나 비슷한가?
Entity Resolution & 데이터 통합 > Day 1: Entity Resolution 개론
학습 목표
주요 문자열 유사도 알고리즘을 이해한다 각 알고리즘의 특성과 적용 상황을 파악한다
"비슷하다"를 숫자로 표현하기
에디터 로딩 중...
1. 편집 거리 (Edit Distance)
Levenshtein Distance
한 문자열을 다른 문자열로 바꾸는데 필요한 최소 편집 연산 수 (삽입, 삭제, 치환)
에디터 로딩 중...
유사도로 변환:
에디터 로딩 중...
Python 구현
에디터 로딩 중...
장점: 직관적, 널리 사용됨 단점: 글자 순서에 민감, 느림
2. Jaro-Winkler 유사도
이름 매칭에 최적화된 알고리즘 앞부분 일치에 더 높은 가중치
에디터 로딩 중...
Python 구현
에디터 로딩 중...
장점: 이름/고유명사에 효과적, 오타에 강함 단점: 긴 문자열에 부적합
3. Token 기반 유사도
Jaccard Similarity
두 집합의 교집합 / 합집합
에디터 로딩 중...
Cosine Similarity (TF-IDF)
에디터 로딩 중...
장점: 단어 순서 무관, 긴 텍스트에 적합 단점: 오타에 취약
4. 음성 유사도 (Phonetic Matching)
Soundex
발음이 비슷한 단어를 같은 코드로 변환
에디터 로딩 중...
장점: 발음 오류/변형에 강함 단점: 영어 중심, 한국어 부적합
알고리즘 선택 가이드
| 상황 | 추천 알고리즘 |
|---|---|
| 이름 매칭 | Jaro-Winkler |
| 일반 문자열 | Levenshtein |
| 주소 매칭 | Token-based (Jaccard, TF-IDF) |
| 영어 이름 (발음) | Soundex, Metaphone |
| 긴 텍스트 | Cosine Similarity |
실무 팁
1. 전처리가 반이다
에디터 로딩 중...
2. 여러 알고리즘 조합
에디터 로딩 중...
3. 임계값(Threshold) 튜닝
에디터 로딩 중...