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

[Python] difflib.SequenceMatcher 두 문자열(단어)의 유사도(Similarity) 계산하기

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

 

코딩을 하다가 파이썬(Python)으로 두 문자열(단어)의 유사도(Similarity)를 계산해야할 일이 있어서 이를 어찌할까 검색해보다가 Stackoverflow 에서 고수분이 알려주신 테크닉을 여기에 적어보려고 한다.


   두 문자열(단어) 유사도 계산

difflib은 파이썬 내장 모듈이다. 여기에 SequenceMatcher를 이용하면 두 단어의 유사도를 알 수 있다.

 

이때 두 단어의 유사도는 ratio라는 메서드를 이용하면 되는데 이를 이용하여 두 문자열(단어)의 유사도(Similarity)를 계산하는 함수를 만들었다.

 

from difflib import SequenceMatcher

def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()

 

이제 manana와 strawberry 중에서  banana랑 가장 비슷한 단어(문자열)은 무엇인지 확인해보려고 한다. 당연히 manana가 나와야한다.

 

a = 'banana'
b = 'manana'
c = 'strawberry'

print(b, similar(a,b))
print(c, similar(a,c))

 

 

예상대로 유사도가 제일 높은 manana가 banana 가장 비슷한 단어라는 것을 알 수 있다.

 

파이썬에 이렇게 유용한 내장 모듈과 함수가 있는지 처음알았다. 두고두고 써먹어야겠다. 그리고 difflib에는 어떤 함수들이 더 있는지 조사해봐야겠다.


참고자료

https://stackoverflow.com/questions/17388213/find-the-similarity-metric-between-two-strings

 


댓글


맨 위로