LevenshteinDist - 脚本和图表函数
LevenshteinDist() 返回两个字符串之间的 Levenshtein 距离。它定义为将一个字符串更改为另一个字符串所需的最小单字符编辑次数(插入、删除或替换)。 该函数用于模糊字符串比较。
语法:
LevenshteinDist(text1, text2)
返回数据类型: 整数
Example | Result |
---|---|
LevenshteinDist('Kitten','Sitting') | Returns '3' |
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
数据表中有一个名为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'。第二行需要 3 个更改:1) 删除多余的字符 'S'。2) 删除多余的字符 'e'。3) 插入新字符 'l'。
概述
此示例整合了来自不同系统的产品名称。由于拼写错误、缩写、间距或其他变化,产品名称并不总是使用相同的拼写。使用 LevenshteinDist 函数,您可以测量两个产品名称之间的相似性,并确定哪些名称可能指代同一产品,即使名称不完全相同。
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
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 |
编辑距离是一种模糊匹配,在客户数据管理、库存系统和文档处理等领域被广泛用作拼写检查器、光学字符识别和校正系统的一部分,在这些领域,文本的细微变化经常发生。
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 |