Как рассчитать расстояние левенштейна в r (с примерами)


Расстояние Левенштейна между двумя строками — это минимальное количество односимвольных изменений, необходимое для преобразования одного слова в другое.

Слово «модификации» включает замены, вставки и удаления.

Например, предположим, что у нас есть следующие два слова:

  • НА ВЕЧЕРИНКУ
  • ПАРК

Расстояние Левенштейна между двумя словами (то есть количество изменений, которые нам нужно сделать, чтобы превратить одно слово в другое) будет равно 2 :

Пример расстояния Левенштейна

На практике расстояние Левенштейна используется во многих различных приложениях, включая нечеткое сопоставление строк, проверку орфографии и обработку естественного языка.

В этом руководстве объясняется, как вычислить расстояние Левенштейна между строками в R с помощью функции stringdist() пакета stringdist в R.

Эта функция использует следующий базовый синтаксис:

 #load stringdist package
library(stringdist)

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

Обратите внимание, что эта функция может рассчитывать множество различных измерений расстояния. Указывая метод = «lv», мы указываем функции вычислить расстояние Левенштейна.

Пример 1: Расстояние Левенштейна между двумя строками

Следующий код показывает, как вычислить расстояние Левенштейна между двумя строками «вечеринка» и «парк» с помощью функции stringdist() :

 #load stringdist package
library(stringdist)

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

[1] 2

Расстояние Левенштейна оказывается равным 2 .

Пример 2: Расстояние Левенштейна между двумя векторами

Следующий код показывает, как вычислить расстояние Левенштейна между каждой парной комбинацией строк в двух разных векторах:

 #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

Интерпретация результата следующая:

  • Расстояние Левенштейна между «Мавс» и «Рокетс» составляет 6 .
  • Расстояние Левенштейна между «Шпорами» и «Пэйсерс» составляет 4 .
  • Расстояние Левенштейна между «Лейкерс» и «Уорриорз» составляет 5,5 метра .
  • Расстояние Левенштейна между «Кавс» и «Селтикс» составляет 5 .

Пример 3: Расстояние Левенштейна между столбцами фрейма данных

Следующий код показывает, как вычислить расстояние Левенштейна между каждой парной комбинацией строк в двух разных столбцах фрейма данных:

 #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

Затем мы могли бы добавить расстояние Левенштейна в качестве нового столбца во фрейме данных, если бы захотели:

 #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

Дополнительные ресурсы

Как рассчитать расстояние Хэмминга в R
Как рассчитать евклидово расстояние в R
Как рассчитать расстояние от Манхэттена в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *