# LevenshteinDist - 스크립트 및 차트 함수

LevenshteinDist()는 두 문자열 사이의 Levenshtein 거리를 반환합니다. 이는 한 문자열을 다른 문자열로 변경하는 데 필요한 최소 단일 문자 편집 수(삽입, 삭제 또는 대체)로 정의됩니다. 이 함수는 퍼지 문자열 비교에 유용합니다.

구문:

LevenshteinDist(text1, text2)

반환 데이터 유형: 정수

인수

| 인수 | 설명 |
| --- | --- |
| text1 | 첫 번째 문자열. |
| text2 | 단일 문자 편집의 최소 횟수를 계산하기 위해 첫 번째 문자열과 비교할 두 번째 문자열. |

예: 차트 표현식

| 예 | 결과 |
| --- | --- |
| `LevenshteinDist( 'Kitten','Sitting' )` | `3`를 반환합니다. |

## 예 - LevenshteinDist 기본 사항

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

#### 차트 표현식

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 한 필드는 `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 시나리오

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

#### 차트 표현식

개요

이 예에서는 다양한 시스템의 제품 이름을 통합합니다. 제품 이름은 오타, 약어, 간격 또는 기타 변형으로 인해 항상 동일한 철자를 사용하지 않습니다. `LevenshteinDist` 함수를 사용하면 두 제품 이름 사이의 유사성을 측정하고 이름이 동일하지 않더라도 어떤 이름이 같은 제품을 가리키는지 식별할 수 있습니다.

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 필드는 다음과 같습니다.

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

Levenshtein 거리는 맞춤법 검사기, 광학 문자 인식 및 수정 시스템의 일부로 널리 사용되는 일종의 퍼지 매칭이며, 텍스트에 약간의 차이가 자주 발생하는 고객 데이터 관리, 재고 시스템 및 문서 처리 분야에서 사용됩니다.

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

#### 로드 스크립트

로드 스크립트

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

결과 테이블

| ID | 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 | 엑스 |  | 1 |
| 14 | 엑스 | - | 1 |
| 15 | 엑스 | 1 | 1 |