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:

Voorbeeld van Levenshtein-afstand

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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert