티스토리 뷰
파이썬(Python)&판다스(Pandas)&Polars
한글 문자열 유사도 매칭 (diff vs. fuzzywuzzy vs.rapidfuzz)
송채채 2024. 6. 25. 10:24다양한 라이브러리를 활용하여 문자열 유사도를 측정할 수 있지만, 각 라이브러리마다 성능과 결과가 다를 수 있음
diff
, fuzzywuzzy
, rapidfuzz
라이브러리를 사용하여 한글 문자열 유사도를 비교함
비교 대상 라이브러리
- diff (공식문서: https://docs.python.org/3/library/difflib.html#difflib.get_close_matches)
- fuzzywuzzy (공식문서: https://github.com/seatgeek/thefuzz)
- rapidfuzz (공식문서: https://rapidfuzz.github.io/RapidFuzz/Usage/process.html#rapidfuzz.process.extractOne)
코드 비교
- df라는 데이터프레임은 기관코드 데이터(code.go.kr)로 전체기관명에 대한 데이터
1. diff
from difflib import get_close_matches
cutoff = 0.65
get_close_matches("서울요양원", df['전체기관명'], n=1, cutoff=cutoff)
diff 라이브러리는 간단한 문자열 매칭을 제공하지만, 매칭되는 값이 없는 경우 빈값을 반환함
2. fuzzywuzzy
from fuzzywuzzy import process
process.extractOne("서울요양원", df['전체기관명'], score_cutoff=cutoff*100)
fuzzywuzzy는 Levenshtein Distance를 기반으로 문자열 유사도를 측정합니다. 정확도는 높지만, 속도 면에서 느릴 수 있습니다. 아래는 실행 결과입니다:
('국민건강보험공단 분부 서울요양원', 90, 112425)
3. rapidfuzz
from rapidfuzz import process
process.extractOne("서울요양원", df['전체기관명'], score_cutoff=cutoff*100)
rapidfuzz는 fuzzywuzzy와 유사한 기능을 제공하지만, 더 빠른 성능을 자랑합니다. 실행 결과는 아래와 같습니다:
('국민건강보험공단 분부 서울요양원', 90.0, 112425)
실행 시간 비교
diff 라이브러리는 매칭된 값이 없고, rapidfuzz가 월등히 빠른 속도를 보여줌
결론
rapidfuzz가 높은 정확도와 빠른 속도를 제공함. 단, 띄어쓰기가 포함될 경우, diff의 성능이 더 나을 수 있음. 비교대상에 따라 적절히 테스트 해보는 것을 추천함
diff는 게슈탈트 알고리즘을 사용하고, rapidfuzz는 레벤슈타인 알고리즘을 사용하므로 작동방식이 다름
반응형
'파이썬(Python)&판다스(Pandas)&Polars' 카테고리의 다른 글
[Python] 파이썬으로 특정 컬럼 기준으로 CSV 파일 분리 (0) | 2024.08.13 |
---|---|
[Pandas] get_close_matches 함수를 사용한 유사한 데이터 값 매핑하기 (1) | 2024.06.14 |
[Python] JSON의 모든 key, value를 재귀적으로 탐색해서 데이터프레임으로 만들기 (0) | 2024.04.24 |
[polars] 데이터프레임의 결측값을 리스트 형태로 추출하고 변환 (null_count, to_list) (0) | 2024.04.09 |
[polars] 데이터 EDA 코드 만들기 (컬럼수, 행수, 결측값 등) (0) | 2024.04.09 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- pandas
- LLM
- cursorai
- vervel
- ChatGPT
- python
- TextRank
- writerow
- pdfmathtranslate
- PEFT
- python'
- psycopg
- Claude
- Encoding
- hadoop
- rdffox
- 키워드추출
- vscode
- SPARQL
- Postgis
- polars
- 지식그래프임베딩
- MongoDB
- geospy
- rdflib
- PostgreSQL
- deepseek
- Vue3
- 지식그래프
- knowledgegraph
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함