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