필자는 해시 맵에서 퍼지 조회를 수행해야하는 문제가 있습니다. 즉, 필자의 경우 Levenshtein 거리로 측정 한 쿼리와 가장 유사한 키에 해당하는 값을 반환해야합니다.파이썬에서 퍼지 키 조회를 수행하는 가장 좋은 방법은 무엇입니까?
현재 나의 접근 방식은 dict
을 모든 키에 대한 Levenshtein 거리를 계산하는 특수 검색 방법으로 하위 클래스 화 한 다음 가장 낮은 점수를 갖는 키 값을 반환합니다. 기본적으로 다음과 같습니다.
import Levenshtein
class FuzzyLookupDict(dict):
def fuzzy_lookup(self, query):
levs = [(key, Levenshtein.ratio(query, key)) for key in self.keys()]
key, score = max(levs, key=lambda lev: lev[1])
return self.get(key)
이것은 좋은 접근 방법입니까, 아니면 더 좋은 해결책이 있습니까?
여분의 테이블에서 키를 색인하는 영리한 방법을 알아낼 수 없다면, 모든 키를 검색하지 않고도이를 수행 할 수 없다고 생각합니다. – Beefster