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 :
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