Hoe de levenshtein-afstand in r te berekenen (met voorbeelden)
De Levenshtein-afstand tussen twee strings is het minimum aantal wijzigingen van één teken dat nodig is om het ene woord in het andere te transformeren.
Het woord ‘wijzigingen’ omvat vervangingen, invoegingen en verwijderingen.
Stel dat we bijvoorbeeld de volgende twee woorden hebben:
- FEESTEN
- PARK
De Levenshtein-afstand tussen de twee woorden (dwz het aantal wijzigingen dat we moeten aanbrengen om het ene woord in het andere te transformeren) zou 2 zijn:
In de praktijk wordt Levenshtein-afstand in veel verschillende toepassingen gebruikt, waaronder fuzzy string matching, spellingcontrole en natuurlijke taalverwerking.
In deze tutorial wordt uitgelegd hoe u de Levenshtein-afstand tussen strings in R kunt berekenen met behulp van de stringdist()- functie van het stringdist- pakket in R.
Deze functie gebruikt de volgende basissyntaxis:
#load stringdist package library(stringdist) #calculate Levenshtein distance between two strings stringdist(" string1 ", " string2 ", method = " lv ")
Merk op dat deze functie veel verschillende afstandsmetingen kan berekenen. Door method = „lv“ op te geven, vertellen we de functie om de Levenshtein-afstand te berekenen.
Voorbeeld 1: Levenshtein-afstand tussen twee snaren
De volgende code laat zien hoe u de Levenshtein-afstand tussen de twee tekenreeksen „party“ en „park“ kunt berekenen met behulp van de functie stringdist() :
#load stringdist package library(stringdist) #calculate Levenshtein distance between two strings stringdist(' party ', ' park ', method = ' lv ') [1] 2
De Levenshtein-afstand blijkt 2 te zijn.
Voorbeeld 2: Levenshtein-afstand tussen twee vectoren
De volgende code laat zien hoe je de Levenshtein-afstand tussen elke paarsgewijze combinatie van strings in twee verschillende vectoren berekent:
#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
De manier om het resultaat te interpreteren is als volgt:
- De Levenshtein-afstand tussen “Mavs” en “Rockets” is 6 .
- De Levenshtein-afstand tussen de “Spurs” en de “Pacers” is 4 .
- De Levenshtein-afstand tussen de “Lakers” en de “Warriors” is 5 .
- De Levenshtein-afstand tussen “Cavs” en “Celtics” is 5 .
Voorbeeld 3: Levenshtein-afstand tussen kolommen van het dataframe
De volgende code laat zien hoe u de Levenshtein-afstand berekent tussen elke paarsgewijze combinatie van tekenreeksen in twee verschillende kolommen van een dataframe:
#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
We zouden dan de Levenshtein-afstand kunnen toevoegen als een nieuwe kolom in het dataframe als we dat wilden:
#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
Aanvullende bronnen
Hoe de Hamming-afstand in R te berekenen
Hoe de Euclidische afstand in R te berekenen
Hoe de afstand van Manhattan in R te berekenen