Come calcolare la distanza di levenshtein in r (con esempi)


La distanza di Levenshtein tra due stringhe è il numero minimo di modifiche di un singolo carattere necessarie per trasformare una parola in un’altra.

La parola “modifiche” comprende sostituzioni, inserimenti e cancellazioni.

Ad esempio, supponiamo di avere le seguenti due parole:

  • FESTEGGIARE
  • PARCO

La distanza di Levenshtein tra le due parole (ovvero il numero di cambiamenti che dobbiamo fare per trasformare una parola nell’altra) sarebbe 2 :

Esempio di distanza di Levenshtein

In pratica, la distanza di Levenshtein viene utilizzata in molte applicazioni diverse, tra cui la corrispondenza fuzzy di stringhe, il controllo ortografico e l’elaborazione del linguaggio naturale.

Questo tutorial spiega come calcolare la distanza Levenshtein tra le stringhe in R utilizzando la funzione stringdist() del pacchetto stringdist in R.

Questa funzione utilizza la seguente sintassi di base:

 #load stringdist package
library(stringdist)

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

Si noti che questa funzione può calcolare molte misurazioni di distanza diverse. Specificando metodo = “lv”, diciamo alla funzione di calcolare la distanza di Levenshtein.

Esempio 1: distanza di Levenshtein tra due corde

Il codice seguente mostra come calcolare la distanza di Levenshtein tra le due stringhe “party” e “park” utilizzando la funzione stringdist() :

 #load stringdist package
library(stringdist)

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

[1] 2

La distanza di Levenshtein risulta essere 2 .

Esempio 2: distanza di Levenshtein tra due vettori

Il codice seguente mostra come calcolare la distanza di Levenshtein tra ciascuna combinazione di stringhe a coppie in due vettori diversi:

 #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

Il modo di interpretare il risultato è il seguente:

  • La distanza di Levenshtein tra “Mavs” e “Rockets” è 6 .
  • La distanza di Levenshtein tra gli “Spurs” e i “Pacers” è 4 .
  • La distanza di Levenshtein tra i “Lakers” e i “Warriors” è 5 .
  • La distanza di Levenshtein tra “Cavs” e “Celtics” è 5 .

Esempio 3: distanza Levenshtein tra le colonne del data frame

Il codice seguente mostra come calcolare la distanza di Levenshtein tra ciascuna combinazione di stringhe a coppie in due diverse colonne di un frame di dati:

 #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

Potremmo quindi aggiungere la distanza di Levenshtein come nuova colonna nel data frame se volessimo:

 #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

Risorse addizionali

Come calcolare la distanza di Hamming in R
Come calcolare la distanza euclidea in R
Come calcolare la distanza da Manhattan in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *