Cómo calcular la distancia de Levenshtein en R (con ejemplos)

La distancia de Levenshtein entre dos cadenas es el número mínimo de ediciones de un solo carácter necesarias para convertir una palabra en la otra.

La palabra «ediciones» incluye sustituciones, inserciones y eliminaciones.

Por ejemplo, supongamos que tenemos las siguientes dos palabras:

  • FIESTA
  • PARQUE

La distancia de Levenshtein entre las dos palabras (es decir, el número de ediciones que tenemos que hacer para convertir una palabra en la otra) sería 2 :

Ejemplo de distancia de Levenshtein

En la práctica, la distancia de Levenshtein se utiliza en muchas aplicaciones diferentes, incluida la coincidencia aproximada de cadenas, la revisión ortográfica y el procesamiento del lenguaje natural.

Este tutorial explica cómo calcular la distancia de Levenshtein entre cadenas en R usando la función stringdist () del paquete stringdist en R.

Esta función utiliza la siguiente sintaxis básica:

#cargar paquete stringdist
biblioteca (stringdist)

#calcular la distancia de Levenshtein entre dos cadenas 
stringdist (" cadena1 ", " cadena2 ", método = " lv ")

Tenga en cuenta que esta función puede calcular muchas métricas de distancia diferentes. Especificando method = «lv», le decimos a la función que calcule la distancia de Levenshtein.

Ejemplo 1: distancia de Levenshtein entre dos cadenas

El siguiente código muestra cómo calcular la distancia de Levenshtein entre las dos cadenas «party» y «park» usando la función stringdist () :

#cargar paquete stringdist
biblioteca (stringdist)

#calcular la distancia de Levenshtein entre dos cadenas 
stringdist (' fiesta ', ' parque ', método = ' lv ')

[1] 2

La distancia de Levenshtein resulta ser 2 .

Ejemplo 2: distancia de Levenshtein entre dos vectores

El siguiente código muestra cómo calcular la distancia de Levenshtein entre cada combinación de cadenas por pares en dos vectores diferentes:

#cargar paquete stringdist
biblioteca (stringdist)

#define los vectores
 a <- c ('Mavs', 'Spurs', 'Lakers', 'Cavs')
b <- c ('Rockets', 'Pacers', 'Warriors', 'Celtics')

#calcular la distancia de Levenshtein entre dos vectores 
stringdist (a, b, method = ' lv ')

[1] 6 4 5 5

La forma de interpretar la salida es la siguiente:

  • La distancia de Levenshtein entre ‘Mavs’ y ‘Rockets’ es 6 .
  • La distancia de Levenshtein entre ‘Spurs’ y ‘Pacers’ es 4 .
  • La distancia de Levenshtein entre ‘Lakers’ y ‘Warriors’ es 5 .
  • La distancia de Levenshtein entre ‘Cavs’ y ‘Celtics’ es 5 .

Ejemplo 3: Distancia de Levenshtein entre columnas de marcos de datos

El siguiente código muestra cómo calcular la distancia de Levenshtein entre cada combinación de cadenas por pares en dos columnas diferentes de un marco de datos:

#cargar paquete stringdist
biblioteca (stringdist)

#define data
 data <- data.frame (a = c ('Mavs', 'Spurs', 'Lakers', 'Cavs'),
                   b = c ('Rockets', 'Pacers', 'Warriors', 'Celtics'))

#calcular la distancia de Levenshtein 
stringdist (datos $ a, datos $ b, método = ' lv ')

[1] 6 4 5 5

Luego, podríamos agregar la distancia de Levenshtein como una nueva columna en el marco de datos si quisiéramos:

#save la distancia de Levenshtein como vector 
lev <- stringdist (data $ a, data $ b, method = ' lv ')
 
#append Levenshtein distance as new column
datos $ lev <- lev

#ver datos del marco de
 datos

       ab lev
1 Mavs Rockets 6
2 Spurs Pacers 4
3 Lakers Warriors 5
4 Cavs Celtics 5

Recursos adicionales

Cómo calcular la distancia de Hamming en R
Cómo calcular la distancia euclidiana en R
Cómo calcular la distancia de Manhattan en R

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Supongamos que realizamos una encuesta en la que preguntamos a 15 hogares cuántas mascotas tienen en su hogar. Los resultados…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!