이번 포스팅에서는 여러 단어 집합(리스트, 튜플)에서 특정 단어와 가장 유사한 단어를 파이썬(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)
'leaning'과 가장 비슷한 단어는 'lean'으로 선택됐다.
difflib은 간단한 문자 매칭과 필요한 강력한 기능을 제공하고 있어서 알아두면 요긴하게 쓸 수 있을 것 같다. 부디 이 포스팅이 도움이 되셨으면 좋겠다.
'프로그래밍 > Python' 카테고리의 다른 글
[Python] shutil을 이용한 파일 복사(File Copy), 폴더 복사(Folder Copy) 하기 (feat. distutils) (404) | 2022.05.07 |
---|---|
[Python] 리스트(튜플, 배열)에서 비복원(without replacement) 추출과 복원(with replacement) 추출하기 (402) | 2022.05.07 |
[Python] difflib.SequenceMatcher 두 문자열(단어)의 유사도(Similarity) 계산하기 (422) | 2022.05.01 |
[Python] iter함수와 itertools를 이용하여 메모리를 절약하면서 배열을 순서대로 그룹화(Grouping)하기 (417) | 2022.04.23 |
[Python] 순열(Permutation)과 조합(Combination) 구하기 - itertools (421) | 2022.04.22 |
댓글