Jak obliczyć odległość levenshteina w r (z przykładami)


Odległość Levenshteina między dwoma ciągami znaków to minimalna liczba zmian pojedynczych znaków wymagana do przekształcenia jednego słowa w drugie.

Słowo „modyfikacje” obejmuje podstawienia, insercje i skreślenia.

Załóżmy na przykład, że mamy następujące dwa słowa:

  • IMPREZOWAĆ
  • PARK

Odległość Levenshteina między dwoma słowami (tj. liczba zmian, które musimy wprowadzić, aby przekształcić jedno słowo w drugie) wyniosłaby 2 :

Przykład odległości Levenshteina

W praktyce odległość Levenshteina jest wykorzystywana w wielu różnych zastosowaniach, w tym w dopasowywaniu ciągów rozmytych, sprawdzaniu pisowni i przetwarzaniu języka naturalnego.

W tym samouczku wyjaśniono, jak obliczyć odległość Levenshteina między ciągami w języku R przy użyciu funkcji stringdist() pakietu stringdist w języku R.

Ta funkcja wykorzystuje następującą podstawową składnię:

 #load stringdist package
library(stringdist)

#calculate Levenshtein distance between two strings
stringdist(" string1 ", " string2 ", method = " lv ")

Należy pamiętać, że ta funkcja może obliczać wiele różnych pomiarów odległości. Podając metodę = „lv”, nakazujemy funkcji obliczenie odległości Levenshteina.

Przykład 1: Odległość Levenshteina pomiędzy dwiema strunami

Poniższy kod pokazuje, jak obliczyć odległość Levenshteina między dwoma ciągami „impreza” i „park” za pomocą funkcji stringdist() :

 #load stringdist package
library(stringdist)

#calculate Levenshtein distance between two strings
stringdist(' party ', ' park ', method = ' lv ')

[1] 2

Okazuje się, że odległość Levenshteina wynosi 2 .

Przykład 2: Odległość Levenshteina między dwoma wektorami

Poniższy kod pokazuje, jak obliczyć odległość Levenshteina pomiędzy każdą kombinacją parami ciągów w dwóch różnych wektorach:

 #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

Sposób interpretacji wyniku jest następujący:

  • Odległość Levenshteina pomiędzy „Mavami” i „Rakietami” wynosi 6 .
  • Odległość Levenshteina pomiędzy „Spurs” i „Pacers” wynosi 4 .
  • Odległość Levenshteina pomiędzy „Lakerami” i „Wojownikami” wynosi 5 .
  • Odległość Levenshteina pomiędzy „Cavs” i „Celtics” wynosi 5 .

Przykład 3: Odległość Levenshteina pomiędzy kolumnami ramki danych

Poniższy kod pokazuje, jak obliczyć odległość Levenshteina pomiędzy każdą parą kombinacji ciągów w dwóch różnych kolumnach ramki danych:

 #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

Gdybyśmy chcieli, moglibyśmy następnie dodać odległość Levenshteina jako nową kolumnę w ramce danych:

 #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

Dodatkowe zasoby

Jak obliczyć odległość Hamminga w R
Jak obliczyć odległość euklidesową w R
Jak obliczyć odległość od Manhattanu w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *