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
Example | Result |
---|---|
LevenshteinDist('Kitten','Sitting') | Returns '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.
Load script
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;
Result
ID | String_1 | String_2 | LevenshteinDistance |
---|---|---|---|
1 | Silver | Sliver | 2 |
2 | Silver | SSiver | 2 |
3 | Silver | 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 |