Python でレーベンシュタイン距離を計算する方法


2 つの文字列間のレーベンシュタイン距離は、ある単語を別の単語に変換するために必要な 1 文字の変更の最小数です。

「改変」という言葉には、置換、挿入、および削除が含まれる。

たとえば、次の 2 つの単語があるとします。

  • パーティーする
  • 公園

2 つの単語間のレーベンシュタイン距離 (つまり、ある単語を別の単語に変換するために必要な変更の数) は2になります。

レーベンシュタイン距離の例

実際には、レーベンシュタイン距離は、ファジー文字列マッチング、スペル チェック、自然言語処理など、さまざまなアプリケーションで使用されます。

このチュートリアルでは、Python-Levenshtein モジュールを使用して Python で文字列間のレーベンシュタイン距離を計算する方法を説明します。

このモジュールをインストールするには、次の構文を使用できます。

 pip install python-Levenshtein

次に、レーベンシュタイン距離を計算する関数をロードできます。

 from Levenshtein import distance as lev

次の例は、この関数を実際に使用する方法を示しています。

例 1: 2 つの文字列間のレーベンシュタイン距離

次のコードは、2 つの文字列「party」と「park」の間のレーベンシュタイン距離を計算する方法を示しています。

 #calculate Levenshtein distance
lev(' party ', ' park ')

2

レーベンシュタイン距離は2であることがわかります。

例 2: 2 つのテーブル間のレーベンシュタイン距離

次のコードは、2 つの異なる配列内の文字列のペアごとの組み合わせ間のレーベンシュタイン距離を計算する方法を示しています。

 #define arrays
a = ['Mavs', 'Spurs', 'Lakers', 'Cavs']
b <- ['Rockets', 'Pacers', 'Warriors', 'Celtics']

#calculate Levenshtein distance between two arrays
for i,k in zip (a,b):
  print (lev(i, k))

6
4
5
5

結果を解釈する方法は次のとおりです。

  • 「マブス」と「ロケッツ」の間のレーベンシュタイン距離は6です。
  • 「スパーズ」と「ペイサーズ」の間のレーベンシュタイン距離は4です。
  • 「レイカーズ」と「ウォリアーズ」の間のレーベンシュタイン距離は5です。
  • 「キャブス」と「セルティックス」の間のレーベンシュタイン距離は5です。

追加リソース

Python でハミング距離を計算する方法
Pythonでユークリッド距離を計算する方法
Python でマハラノビス距離を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です