LevenshteinDist — funkcja skryptu i funkcja wykresu
LevenshteinDist () zwraca odległość Levenshteina między dwoma ciągami. Jest ona definiowana jako minimalna liczba jednoznakowych edycji (wstawień, usunięć lub podstawień) wymaganych do zmiany jednego ciągu na drugi. Funkcja jest przydatna do porównań rozmytych ciągów.
Składnia:
LevenshteinDist(text1, text2)
Typ zwracanych danych: liczba całkowita
Przykład | Wynik |
---|---|
LevenshteinDist('Kitten','Sitting') | Zwraca wartość 3 |
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
-
-
Jedno pole w tabeli danych o nazwie InputText.
Skrypt ładowania
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:
-
InputText
-
=LevenshteinDist('Silver', InputText), aby obliczyć minimalną liczbę zmian pojedynczych znaków wymaganych do zmiany wartości ciągu InputText na słowo 'Silver'.
InputText | LevenshteinDist(‘Silver’, InputText) |
---|---|
Sliver | 2 |
SSiveer | 3 |
SSiver | 2 |
Dane wyjściowe funkcji LevenshteinDist zwracają liczbę zmian wymaganych do zmiany tekstu InputText na tekst oczekiwany, 'Silver'. Na przykład pierwszy wiersz wymaga dwóch zmian, aby zmienić słowo 'Sliver' na 'Silver'. Drugi wiersz wymaga 3 zmian: 1) Usunięcie nadmiarowego znaku 'S'. 2) Usunięcie nadmiarowego znaku 'e'. 3) Wstawienie nowego znaku 'l'.
Przegląd
Ten przykład konsoliduje nazwy produktów z różnych systemów. Nazwy produktów nie zawsze mają taką samą pisownię ze względu na literówki, skróty, odstępy lub inne warianty. Używając funkcji LevenshteinDist, można zmierzyć podobieństwo między dwiema nazwami produktów i określić, które z nich prawdopodobnie odnoszą się do tego samego produktu, nawet jeśli ich nazwy nie są identyczne.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
-
-
-
ProductA
-
ProductB
-
Skrypt ładowania
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
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
-
ProductA
-
ProductB
-
=LevenshteinDist(ProductA, ProductB), aby obliczyć minimalną liczbę zmian pojedynczych znaków wymaganych do zmiany wartości ciągu ProductB na dopasowanie 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 |
Odległość Levenshteina to typ dopasowania rozmytego, który jest szeroko stosowany w modułach sprawdzania pisowni, optycznego rozpoznawania znaków i systemów korekcji w obszarach takich jak zarządzanie danymi klientów, systemy inwentaryzacji i przetwarzanie dokumentów, gdzie często występują niewielkie różnice w tekście.
Skrypt ładowania
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;
Wynik
Identyfikator | String_1 | String_2 | LevenshteinDistance |
---|---|---|---|
1 | Silver | Sliver | 2 |
2 | Silver | SSiver | 2 |
3 | Silver | SSiveer | 3 |
4 | Gold | Pogrubienie | 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 |