Como calcular a distância de levenshtein em r (com exemplos)


A distância Levenshtein entre duas strings é o número mínimo de alterações de um único caractere necessárias para transformar uma palavra em outra.

A palavra “modificações” inclui substituições, inserções e exclusões.

Por exemplo, suponha que temos as duas palavras a seguir:

  • FESTEJAR
  • PARQUE

A distância de Levenshtein entre as duas palavras (ou seja, o número de alterações que precisamos fazer para transformar uma palavra na outra) seria 2 :

Exemplo de distância de Levenshtein

Na prática, a distância de Levenshtein é usada em muitas aplicações diferentes, incluindo correspondência difusa de strings, verificação ortográfica e processamento de linguagem natural.

Este tutorial explica como calcular a distância de Levenshtein entre strings em R usando a função stringdist() do pacote stringdist em R.

Esta função usa a seguinte sintaxe básica:

 #load stringdist package
library(stringdist)

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

Observe que esta função pode calcular muitas medidas de distância diferentes. Ao especificar method = “lv”, dizemos à função para calcular a distância de Levenshtein.

Exemplo 1: distância de Levenshtein entre duas cordas

O código a seguir mostra como calcular a distância de Levenshtein entre as duas strings “party” e “park” usando a função stringdist() :

 #load stringdist package
library(stringdist)

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

[1] 2

A distância de Levenshtein é 2 .

Exemplo 2: Distância de Levenshtein entre dois vetores

O código a seguir mostra como calcular a distância de Levenshtein entre cada combinação de strings em pares em dois vetores diferentes:

 #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

A forma de interpretar o resultado é a seguinte:

  • A distância Levenshtein entre “Mavs” e “Rockets” é 6 .
  • A distância de Levenshtein entre os “Spurs” e os “Pacers” é de 4 .
  • A distância de Levenshtein entre os “Lakers” e os “Warriors” é de 5 .
  • A distância Levenshtein entre “Cavs” e “Celtics” é 5 .

Exemplo 3: Distância Levenshtein entre colunas do quadro de dados

O código a seguir mostra como calcular a distância de Levenshtein entre cada combinação de strings em pares em duas colunas diferentes de um quadro de dados:

 #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

Poderíamos então adicionar a distância de Levenshtein como uma nova coluna no quadro de dados, se quiséssemos:

 #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

Recursos adicionais

Como calcular a distância de Hamming em R
Como calcular a distância euclidiana em R
Como calcular a distância de Manhattan em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *