Как рассчитать расстояние Левенштейна в Python

Как рассчитать расстояние Левенштейна в Python

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

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

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

  • ПАРТИЯ
  • ПАРК

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

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

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

В этом руководстве объясняется, как рассчитать расстояние Левенштейна между строками в Python с помощью модуля python-Levenshtein.

Вы можете использовать следующий синтаксис для установки этого модуля:

pip install python-Levenshtein

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

from Levenshtein import distance as lev

В следующих примерах показано, как использовать эту функцию на практике.

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

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

#calculate Levenshtein distance
lev('party', 'park')

2

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

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

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

#define arrays
a = ['Mavs', 'Spurs', 'Lakers', 'Cavs']
b <- ['Rockets', 'Pacers', 'Warriors', 'Celtics']

#calculate Levenshtein distance between two arrays
for i,k in zip (a, b):
 print(lev(i, k))

6
4
5
5

Способ интерпретации вывода следующий:

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.