R のレーベンシュタイン距離を計算する方法 (例付き)
2 つの文字列間のレーベンシュタイン距離は、ある単語を別の単語に変換するために必要な 1 文字の変更の最小数です。
「改変」という言葉には、置換、挿入、および削除が含まれる。
たとえば、次の 2 つの単語があるとします。
- パーティーする
- 公園
2 つの単語間のレーベンシュタイン距離 (つまり、ある単語を別の単語に変換するために必要な変更の数) は2になります。
実際には、レーベンシュタイン距離は、ファジー文字列マッチング、スペル チェック、自然言語処理など、さまざまなアプリケーションで使用されます。
このチュートリアルでは、R のstringdistパッケージのstringdist()関数を使用して、R の文字列間のレーベンシュタイン距離を計算する方法を説明します。
この関数は次の基本構文を使用します。
#load stringdist package library(stringdist) #calculate Levenshtein distance between two strings stringdist(" string1 ", " string2 ", method = " lv ")
この関数はさまざまな距離測定値を計算できることに注意してください。 Method = “lv” を指定することで、レーベンシュタイン距離を計算するように関数に指示します。
例 1: 2 つの文字列間のレーベンシュタイン距離
次のコードは、 stringdist()関数を使用して、2 つの文字列「party」と「park」の間のレーベンシュタイン距離を計算する方法を示しています。
#load stringdist package library(stringdist) #calculate Levenshtein distance between two strings stringdist(' party ', ' park ', method = ' lv ') [1] 2
レーベンシュタイン距離は2であることがわかります。
例 2: 2 つのベクトル間のレーベンシュタイン距離
次のコードは、2 つの異なるベクトル内の文字列のペアごとの組み合わせ間のレーベンシュタイン距離を計算する方法を示しています。
#load stringdist package library(stringdist) #definevectors a <- c('Mavs', 'Spurs', 'Lakers', 'Cavs') b <- c('Rockets', 'Pacers', 'Warriors', 'Celtics') #calculate Levenshtein distance between two vectors stringdist(a, b, method=' lv ') [1] 6 4 5 5
結果を解釈する方法は次のとおりです。
- 「マブス」と「ロケッツ」の間のレーベンシュタイン距離は6です。
- 「スパーズ」と「ペイサーズ」の間のレーベンシュタイン距離は4です。
- 「レイカーズ」と「ウォリアーズ」の間のレーベンシュタイン距離は5です。
- 「キャブス」と「セルティックス」の間のレーベンシュタイン距離は5です。
例 3: データ フレームの列間のレーベンシュタイン距離
次のコードは、データ フレームの 2 つの異なる列内の文字列のペアごとの組み合わせ間のレーベンシュタイン距離を計算する方法を示しています。
#load stringdist package library(stringdist) #define data data <- data.frame(a = c('Mavs', 'Spurs', 'Lakers', 'Cavs'), b = c('Rockets', 'Pacers', 'Warriors', 'Celtics')) #calculate Levenshtein distance stringdist(data$a, data$b, method=' lv ') [1] 6 4 5 5
必要に応じて、レーベンシュタイン距離をデータ フレーム内の新しい列として追加できます。
#save Levenshtein distance as vector lev <- stringdist(data$a, data$b, method=' lv ') #append Levenshtein distance as new column data$lev <- lev #view data frame data ab lev 1 Mavs Rockets 6 2 Spurs Pacers 4 3 Lakers Warriors 5 4 Cavs Celtics 5