私は、ハッシュマップでファジールックアップを行う必要がある、すなわち、私の場合、Levenshtein距離で測定されたクエリに最もよく似ているそのキーに対応する値を返す必要があるという問題があります。Pythonでファジーキールックアップを行う最も良い方法は?
私の現在のアプローチは、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