25

문자열 유사도: 얼마나 비슷한가?

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) 튜닝

에디터 로딩 중...