LevenshteinDist - función de script y de gráfico
LevenshteinDist() devuelve la distancia Levenshtein entre dos cadenas. Se define como el número mínimo de ediciones de un solo carácter (inserciones, eliminaciones o sustituciones) necesarias para cambiar una cadena por otra. La función es útil para comparaciones de cadenas difusas.
Sintaxis:
LevenshteinDist(text1, text2)
Tipo de datos que devuelve: Entero
Ejemplo | Resultado |
---|---|
LevenshteinDist('Kitten','Sitting') | Devuelve "3" |
Descripción
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
-
-
Un campo de la tabla de datos llamado InputText.
Script de carga
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:
-
InputText
-
=LevenshteinDist('Silver', InputText), para calcular el número mínimo de ediciones de un solo carácter necesarias para cambiar los valores de la cadena de texto InputText a la palabra 'Silver'.
InputText | LevenshteinDist(‘Silver’, InputText) |
---|---|
Sliver (astilla) | 2 |
SSiveer | 3 |
SSiver | 2 |
El resultado de salida de la función LevenshteinDist devuelve el número de cambios necesarios para cambiar el InputText al texto esperado, 'Silver'. Por ejemplo, la primera fila requiere dos cambios para modificar la palabra 'Sliver' a 'Silver'. La segunda fila requiere 3 cambios: 1) Eliminar el carácter extra 'S'. 2) Eliminar el carácter adicional 'e'. 3) Insertar un nuevo carácter 'l'.
Descripción
Este ejemplo consolida nombres de productos procedentes de diferentes sistemas. Los nombres de los productos no siempre utilizan la misma ortografía debido a errores tipográficos, abreviaturas, espaciado u otras variaciones. Utilizando la función LevenshteinDist, puede medir la similitud entre dos nombres de producto e identificar cuáles se refieren probablemente al mismo producto, aunque los nombres no sean idénticos.
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
-
-
-
ProductA
-
ProductB
-
Script de carga
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
];
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
ProductA
-
ProductB
-
=LevenshteinDist(ProductA, ProductB), para calcular el número mínimo de ediciones de un solo carácter necesarias para cambiar los valores de las cadenas de ProductB para que coincidan con ProductA.
ProductoA | ProductoB | LevenshteinDist(ProductoA, ProductoB) |
---|---|---|
Coca Cola 330 ml | Coca Cola 330 ml | 2 |
Pepsi 500 ml | Pepsi 500 ml | 1 |
Red Bull 250ml | Redbull 250ml | 2 |
Sprite Cero 600 ml | Sprite Cero 600 ml | 3 |
La distancia de Levenshtein es un tipo de correspondencia difusa muy utilizada en correctores ortográficos, sistemas de reconocimiento óptico de caracteres y sistemas de corrección en ámbitos como la gestión de datos de clientes, los sistemas de inventario y el tratamiento de documentos, en los que se producen con frecuencia ligeras variaciones en el texto.
Script de carga
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;
Resultado
ID | Cadenatexto_1 | Cadenatexto_2 | Distancia Levenshtein |
---|---|---|---|
1 | Silver (plata) | Sliver (astilla) | 2 |
2 | Silver (plata) | SSiver | 2 |
3 | Silver | SSiveer | 3 |
4 | Gold (oro) | Bold (negrita) | 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 |