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

追加リソース

R でのハミング距離の計算方法
R でユークリッド距離を計算する方法
Rでマンハッタンからの距離を計算する方法

コメントを追加する

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