レーベンシュタイン距離は、編集距離としても知られ、2 つの文字列間の類似性を評価するための基本的なメトリックです。ある文字列を別の文字列に変換するために必要な操作の最小数を計算します。これらの操作には次のものが含まれます:
この概念は、スペル チェック、あいまい検索、DNA 配列比較など、多くの現代アプリケーションの中心となっています。
長さ ( n ) と ( m ) の 2 つの文字列 ( A ) と ( B ) の間のレーベンシュタイン距離は、動的計画法を使用して計算できます。サイズ ((n 1) \times (m 1)) の行列 ( D ) を定義します。ここで、各エントリ ( D[i][j] ) は、 ( A ) の最初の ( i ) 文字を変換するための最小コストを表します。 ( B ).
の最初の ( j ) 文字に変換します。漸化関係は次のとおりです:
これは、レーベンシュタイン距離を計算するための簡単な Python 実装です:
def levenshtein_distance(a, b): n, m = len(a), len(b) dp = [[0] * (m 1) for _ in range(n 1)] for i in range(n 1): for j in range(m 1): if i == 0: dp[i][j] = j elif j == 0: dp[i][j] = i elif a[i - 1] == b[j - 1]: dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = 1 min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) return dp[n][m] # Example usage print(levenshtein_distance("kitten", "sitting")) # Output: 3
スペル チェッカーは、レーベンシュタイン距離を使用してタイプミスの修正を提案します。たとえば、「helo」と入力すると、「hello」または「hero」が提案される可能性があります。
検索エンジンでは、ユーザーがタイプミスやスペルミスをした場合でも、レーベンシュタインは結果を返すのに役立ちます。
バイオインフォマティクスでは、この距離は 2 つの DNA 配列間の類似性を測定するのに役立ちます。各操作は潜在的な突然変異を表します。
なりすまし詐欺を検出するシステムは、ユーザー入力を既存の記録と比較し、テキストの小さな違いを考慮できます。
古典的なアルゴリズムは完全な行列を使用するため、メモリを大量に消費する可能性があります。幸いなことに、各 ( D[i][j] ) は ( D[i-1][j] )、( D[i][j-1] ) にのみ依存するため、メモリの 2 行のみを使用するように最適化できます。 )、および ( D[i-1][j-1] ).
def optimized_levenshtein(a, b): n, m = len(a), len(b) prev = list(range(m 1)) curr = [0] * (m 1) for i in range(1, n 1): curr[0] = i for j in range(1, m 1): insert = curr[j - 1] 1 delete = prev[j] 1 substitute = prev[j - 1] (0 if a[i - 1] == b[j - 1] else 1) curr[j] = min(insert, delete, substitute) prev, curr = curr, prev return prev[m] # Example usage print(optimized_levenshtein("kitten", "sitting")) # Output: 3
レーベンシュタイン距離は、さまざまな分野で広く使用されている強力で多用途のツールです。把握するのは簡単ですが、その最適化と複雑なアプリケーションにより、最新のシステムにおけるその価値が強調されます。
さらに詳しく調べるために、転置を考慮したダメラウ・レーベンシュタイン距離などのバリアントを検討してください。これで、このツールをプロジェクトに統合したり、深い理解を示して同僚に感銘を与えたりする準備が整いました!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3