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