Как рассчитать расстояние левенштейна в 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