본문 바로가기
프로그래밍/Python

[Python] 단어 집합(리스트, 튜플)에서 특정 단어와 가장 유사한 단어 찾기 difflib.get_close_matches

by 부자 꽁냥이 2022. 5. 1.

이번 포스팅에서는 여러 단어 집합(리스트, 튜플)에서 특정 단어와 가장 유사한 단어를 파이썬(Python)을 이용해서 찾는 방법을 소개한다. 이전 포스팅에서는 단어와 단어의 유사도를 계산하는 방법을 알아보았는데 이번에는 단어 집합 속에서 특정 단어와 가장 유사한 단어를 찾는다는 점에서 차이가 있다.

 

파이썬 내장 모듈 difflib의 get_close_matches를 이용하면 특정 단어와 가장 유사한 단어를 집합에서 빼내올 수 있다.


   difflib.get_close_matches 사용법

get_close_matches는 word, possibilities, n, cutoff 총 4개의 인자를 가지며 의미는 다음과 같다.


word = 비교 기준이 되는 단어

possibilities = 비교하려는 단어 집합

n = 최대 근접 일치 문자 개수, 디폴트 3

cutoff = 유사도 하한, 디폴트 0.6


cutoff는 말 그대로 유사도가 0.6 이하인 단어는 무시한다는 것이다.

 

이제 코드를 통해 알아보자. 아래 코드는 단어 집합(candidates) 중에서 'leaning'과 가장 비슷한 단어를 get_close_matches를 통해 찾아주는 코드이다.

 

from difflib import get_close_matches

word = 'leaning'

candidates = ['lear', 'learn', 'lean', 'love']
n = 3 # 최대 문자 매칭 개수
cutoff = 0.7 # 유사도 하한

close_matches = get_close_matches(word, candidates, n, cutoff)

print(close_matches)

 

get_close_matches 결과

'leaning'과 가장 비슷한 단어는 'lean'으로 선택됐다.

 


 

difflib은 간단한 문자 매칭과 필요한 강력한 기능을 제공하고 있어서 알아두면 요긴하게 쓸 수 있을 것 같다. 부디 이 포스팅이 도움이 되셨으면 좋겠다.


댓글


맨 위로