# 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

Argumentos

| Argumento | Descripción |
| --- | --- |
| text1 | La primera cadena de caracteres. |
| text2 | La segunda cadena de caracteres que se comparará con la primera para calcular el número mínimo de ediciones de un solo carácter. |

Ejemplo: expresión de gráfico

| Ejemplo | Resultado |
| --- | --- |
| `LevenshteinDist( 'Kitten','Sitting' )` | Devuelve `3` |

## Ejemplo: fundamentos de LevenshteinDist

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### Expresión de gráfico

Descripción general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* 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`

Cree la siguiente medida:

* `=LevenshteinDist('Silver', InputText)`, para calcular el número mínimo de ediciones de un solo carácter necesarias para cambiar el valor de la cadena de `InputText` a la palabra `Silver`.

Tabla de resultados

| InputText | LevenshteinDist('Silver', InputText) |
| --- | --- |
| Sliver | 2 |
| SSiveer | 3 |
| SSiver | 2 |

El resultado de la función `LevenshteinDist` devuelve el número de cambios necesarios para cambiar el texto introducido `InputText` al texto deseado, `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`.

## Ejemplo: uso de LevenshteinDist

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### Expresión de gráfico

Descripción general

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 añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `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`

Cree la siguiente medida:

* `=LevenshteinDist(ProductA, ProductB)`, para calcular el número mínimo de ediciones de un solo carácter necesarias para cambiar el valor de la cadena de caracteres `ProductB` para que coincida con `ProductA`.

Tabla de resultados

| 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.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/LevenshteinDist.htm)

#### Script de carga

Script de carga

```
Example:
Load *, recno() as ID;
Load 'Silver' as String_1,* inline [
String_2
Sliver
SSiver
SSiveer ];

Example:
Load *, recno()+3 as ID;
Load 'Gold' as String_1,* inline [
String_2
Bold
Bool
Bond ];

Example:
Load *, recno()+6 as ID;
Load 'Ove' as String_1,* inline [
String_2
Ove
Uve
Üve ];

Example:
Load *, recno()+9 as ID;
Load 'ABC' as String_1,* inline [
String_2
DEFG
abc
ビビビ ];

set nullinterpret = '<NULL>';
Example:
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 Example;

Drop table Example;
```

Tabla de resultados

| ID | String\_1 | String\_2 | LevenshteinDistance |
| --- | --- | --- | --- |
| 1 | Silver | Sliver | 2 |
| 2 | Silver | SSiver | 2 |
| 3 | Silver (plata) | SSiveer | 3 |
| 4 | Gold | Bold | 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 |