# LevenshteinDist Função de script e de gráfico

LevenShteInst() retorna a distância Levenshtein entre duas strings. Ela é definida como o número mínimo de edições de caractere único (inserções, exclusões ou substituições) necessárias para transformar uma string na outra. Essa função é útil para comparações de strings difusas.

Sintaxe:

LevenshteinDist(text1, text2)

Tipo de dados de retorno: inteiro

Argumentos

| Argumento | Descrição |
| --- | --- |
| text1 | A primeira string. |
| text2 | A segunda string que será comparada com a primeira string para calcular o número mínimo de edições de um único caractere. |

Exemplo: expressão de gráfico

| Exemplo | Resultado |
| --- | --- |
| `LevenshteinDist( 'Kitten','Sitting' )` | Retorna `3` |

## Exemplo - Fundamentos de LevenshteinDist

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

#### Expressão de gráfico

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Um campo na tabela de dados chamado `InputText`.

Script de carregamento

```
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

* `InputText`

Crie a seguinte medida:

* `=LevenshteinDist('Silver', InputText)`, para calcular o número mínimo de edições de caractere único necessárias para alterar o valor da string para `InputText` para a palavra `Silver`.

Tabela de resultados

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

A saída da função `LevenshteinDist` retorna o número de alterações necessárias para alterar o `InputText` para o texto esperado, `Silver`. Por exemplo, a primeira linha requer duas alterações para modificar a palavra `Sliver` para `Silver`. A segunda linha requer 3 alterações: 1) Exclua o caractere extra `S`. 2) Exclua o caractere extra `e`. 3) Insira um novo caractere `l`.

## Exemplo - Cenário de LevenshteinDist

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

#### Expressão de gráfico

Visão geral

Este exemplo consolida nomes de produtos de diferentes sistemas. Os nomes dos produtos nem sempre usam a mesma grafia devido a erros de digitação, abreviações, espaçamento ou outras variações. Usando a função `LevenshteinDist`, você pode medir a similaridade entre dois nomes de produtos e identificar quais provavelmente se referem ao mesmo produto, mesmo que os nomes não sejam idênticos.

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Os campos a seguir na tabela de dados:

  * `ProductA`

  * `ProductB`

Script de carregamento

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

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `ProductA`

* `ProductB`

Crie a seguinte medida:

* `=LevenshteinDist(ProductA, ProductB)`, para calcular o número mínimo de edições de caracteres individuais necessárias para alterar o valor da string para `ProductB` para corresponder a `ProductA`.

Tabela de resultados

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

A distância de Levenshtein é um tipo de correspondência difusa amplamente usada como parte de verificadores ortográficos, reconhecimento óptico de caracteres e sistemas de correção em áreas como gerenciamento de dados de clientes, sistemas de inventário e processamento de documentos, onde pequenas variações no texto ocorrem com frequência.

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

#### Script de carregamento

Script de carregamento

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

Tabela de resultados

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