python import Levenshtein import numpy as np Levenshtein._levenshtein.distance = Levenshtein._levenshtein.distance_cython def levenshtein_distance(a, b): return np.sum(np.array(list(a)) != np.array(list(b))) from multiprocessing.dummy import Pool as ThreadPool def calculate_distance(pair): return Levenshtein.distance(pair[0], pair[1]) def parallel_levenshtein(pairs): results = pool.map(calculate_distance, pairs) pool.close() pool.join() return results from functools import lru_cache @lru_cache(maxsize=None) def cached_levenshtein(a, b): return Levenshtein.distance(a, b) def jaro_winkler_similarity(a, b): return Levenshtein.jaro_winkler(a, b) pair = ("kitten", "sitting") print("Levenshtein distance:", Levenshtein.distance(*pair)) print("NumPy-accelerated distance:", levenshtein_distance(*pair)) pairs = [("kitten", "sitting"), ("moon", "moat"), ("cat", "bat")] print("Parallel Levenshtein distance:", parallel_levenshtein(pairs)) print("Cached Levenshtein distance:", cached_levenshtein(*pair)) print("Jaro-Winkler similarity:", jaro_winkler_similarity(*pair))


上一篇:
下一篇:
切换中文