LevenshteinDist — функция скриптa и диаграммы
LevenshteinDist() возвращает расстояние Levenshtein — разность между двумя строками. Оно определяется как минимальное количество односимвольных правок (вставки, удаления или замены), требуемых для превращения одной строки в другую. Функция полезна для нечеткого сравнения строк.
Синтаксис:
LevenshteinDist(text1, text2)
Возвращаемые типы данных: целое
Пример | Результат |
---|---|
LevenshteinDist('Kitten','Sitting') | Возвращает «3» |
Обзор
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
-
-
Одно поле в таблице данных называется InputText.
Скрипт загрузки
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:
-
InputText
-
=LevenshteinDist('Silver', InputText), чтобы рассчитать минимальное количество правок одного символа, необходимое для изменения значений строки InputText на слово 'Silver'.
InputText | LevenshteinDist(‘Silver’, InputText) |
---|---|
Sliver | 2 |
SSiveer | 3 |
SSiver | 2 |
Выход функции LevenshteinDist возвращает число изменений, необходимых для преобразования текста InputText в ожидаемый текст 'Silver'. Например, в первой строке требуется два изменения, чтобы превратить слово 'Sliver' в 'Silver'. Во второй строке необходимо сделать три изменения: 1) удалить лишний символ 'S'; 2) удалить лишний символ 'e'; 3) вставить новый символ 'l'.
Обзор
В этом примере объединены названия продуктов из разных систем. В названиях продуктов не всегда используется одинаковое написание из-за опечаток, сокращений, пробелов и других вариаций. С помощью функции LevenshteinDist можно измерить сходство между двумя названиями продуктов и определить, какие из них, скорее всего, относятся к одному и тому же продукту, даже если названия не идентичны.
Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки на новую вкладку.
Скрипт загрузки содержит следующее:
-
-
-
ProductA
-
ProductB
-
Скрипт загрузки
Example:
Load * inline [
ProductA, ProductB
Coca Cola 330ml, CocaCola 330 ml
Pepsi 500 ml, Pepsi 500ml
Sprite Zero 600 ml, SpriteZero600ml
Red Bull 250ml, Redbull 250ml
];
Результаты
Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:
-
ProductA
-
ProductB
-
=LevenshteinDist(ProductA, ProductB), чтобы рассчитать минимальное количество правок одного символа, необходимое для приведения значений строки ProductB в соответствие с ProductA.
ProductA | ProductB | LevenshteinDist(ProductA, ProductB) |
---|---|---|
Coca Cola 330ml | CocaCola 330 ml | 2 |
Pepsi 500 ml | Pepsi 500ml | 1 |
Red Bull 250ml | Redbull 250ml | 2 |
Sprite Zero 600 ml | SpriteZero600ml | 3 |
Расстояние Левенштейна ― это тип нечеткого соответствия, который широко используется в программах проверки орфографии, оптического распознавания символов и системах коррекции в таких областях, как управление данными клиентов, инвентаризация и обработка документов, где часто встречаются незначительные отклонения в тексте.
Скрипт загрузки
T1:
Load *, recno() as ID;
Load 'Silver' as String_1,* inline [
String_2
Sliver
SSiver
SSiveer ];
T1:
Load *, recno()+3 as ID;
Load 'Gold' as String_1,* inline [
String_2
Bold
Bool
Bond ];
T1:
Load *, recno()+6 as ID;
Load 'Ove' as String_1,* inline [
String_2
Ove
Uve
Üve ];
T1:
Load *, recno()+9 as ID;
Load 'ABC' as String_1,* inline [
String_2
DEFG
abc
ビビビ ];
set nullinterpret = '<NULL>';
T1:
Load *, recno()+12 as ID;
Load 'X' as String_1,* inline [
String_2
''
<NULL>
1 ];
R1:
Load
ID,
String_1,
String_2,
LevenshteinDist(String_1, String_2) as LevenshteinDistance
resident T1;
Drop table T1;
Результат
Идентификатор | String_1 | String_2 | LevenshteinDistance |
---|---|---|---|
1 | Silver | Sliver | 2 |
2 | Silver | SSiver | 2 |
3 | Silver | SSiveer | 3 |
4 | Gold | Полужирный | 1 |
5 | Gold | Bool | 3 |
6 | Gold | Bond | 2 |
7 | Ove | Ove | 0 |
8 | Ove | Uve | 1 |
9 | Ove | Üve | 1 |
10 | ABC | DEFG | 4 |
11 | ABC | abc | 3 |
12 | ABC | ビビビ | 3 |
13 | X | 1 | |
14 | X | - | 1 |
15 | X | 1 | 1 |