字符串相似度-topN算法组件用于计算字符串相似度,并筛选出最相似的Top N个数据。本文为您介绍字符串相似度-topN算法组件的配置方法。
组件配置
您可以使用以下任意一种方式,配置字符串相似度-topN组件参数。
方式一:可视化方式
在Designer工作流页面配置组件参数。
页签 | 参数 | 描述 |
字段设置 | 输入表在输出表追加的列名 | 输入表中需要在输出表中追加的列名。 |
映射表在输出表追加的列名 | 映射表中需要在输出表中追加的列名。 | |
相似度计算中左表的列名 | 在相似度计算中,左表的列名。 | |
相似度计算中映射表的列名 | 在相似度计算中,映射表的列名。左表中的每一行都会和映射表中所有的字符串计算出相似度,并最终以Top N的方式输出计算结果。 | |
输出表中相似度列的列名 | 输出表中相似度列的列名。列名中不能有特殊字符,只能使用英文a~z、A~Z、数字或下划线(_),且以字母开头,长度不超过128字节。默认值为output。 | |
参数设置 | 最终给出的相似度最大值的个数 | 输出Top相似度的个数。取值范围为正整数,默认值为10。 |
相似度计算方法 | 指定相似度计算方法类型。取值范围为:
| |
子串的长度 | 仅当相似度计算方法取值为ssk、cosine或simhash_hamming_sim时,才需要配置该参数。取值范围为(0,100)。默认值为2。 | |
匹配字符串的权重 | 仅当相似度计算方法取值为ssk或simhash_hamming_sim时,才需要配置该参数。取值范围为(0,1)。默认值为0.5。 | |
执行调优 | 计算的核心数 | 默认为系统自动分配。 |
每个核心的内存(MB) | 默认为系统自动分配。 |
方式二:PAI命令方式
使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本。
PAI -name string_similarity_topn
-project algo_public
-DinputTableName="pai_test_string_similarity_topn"
-DoutputTableName="pai_test_string_similarity_topn_output"
-DmapTableName="pai_test_string_similarity_map_topn"
-DinputSelectedColName="col0"
-DmapSelectedColName="col1";
参数名称 | 是否必选 | 描述 | 默认值 |
inputTableName | 是 | 输入表的名称。 | 无 |
mapTableName | 是 | 映射表的名称。 | 无 |
是 | 输出表的名称。 | 无 | |
inputSelectedColName1 | 否 | 在相似度计算中,左表的列名。 | 表中第一个STRING类型的列名 |
inputSelectedColName2 | 否 | 在相似度计算中,映射表的列名。 | 表中第一个STRING类型的列名 |
inputAppendColNames | 否 | 输入表中需要在输出表追加的列名。 | 无 |
inputAppendRenameColNames | 否 | 输入表中需要在输出表追加的列名的别名。 | 无 |
mapSelectedColName | 是 | 相似度计算中字典表的列名。 | 无 |
mapAppendColNames | 否 | 映射表中需要在输出表追加的列名。 | 无 |
mapAppendRenameColNames | 否 | 映射表中需要在输出表追加的列名的别名。 | 无 |
inputTablePartitions | 否 | 输入表的分区名称。 | 所有分区 |
mapTablePartitions | 否 | 映射表的分区名称。 | 所有分区 |
outputColName | 否 | 输出表中相似度列的列名。列名中不能有特殊字符,只能使用英文a~z,A~Z、数字或下划线(_),且以字母开头,长度不超过128字节。 | output |
method | 否 | 相似度计算方法类型。取值范围为:
| levenshtein_sim |
lambda | 否 | 仅当相似度计算方法取值为ssk或simhash_hamming_sim时,才需要配置该参数。取值范围为(0,1)。 | 0.5 |
k | 否 | 仅当相似度计算方法取值为ssk、cosine或simhash_hamming_sim时,才需要配置该参数。取值范围为(0,100)。 | 2 |
lifecycle | 否 | 输出表的生命周期。取值范围为正整数。 | 无 |
coreNum | 否 | 计算的核心数。 | 系统自动分配 |
memSizePerCore | 否 | 每个核心的内存数。 | 系统自动分配 |
示例
输入数据
使用ODPS SQL节点创建表pai_ft_string_similarity_topn_input。命令如下:
CREATE TABLE pai_ft_string_similarity_topn_input AS SELECT * FROM ( SELECT 0 AS id, '北京' AS col0 UNION ALL SELECT 1 AS id, '北京上海' AS col0 UNION ALL SELECT 2 AS id, '北京上海深圳' AS col0 ) tmp;
执行成功后,pai_ft_string_similarity_topn_input表数据如下:
id
col0
0
北京
1
北京上海
2
北京上海深圳
运行PAI命令
您可以使用SQL脚本执行如下PAI命令,也可以使用ODPS SQL节点执行如下PAI命令。
PAI -name string_similarity_topn -project algo_public -DinputTableName=pai_ft_string_similarity_topn_input -DmapTableName=pai_ft_string_similarity_topn_input -DoutputTableName=pai_ft_string_similarity_topn_output -DinputSelectedColName=col0 -DmapSelectedColName=col0 -DinputAppendColNames=col0 -DinputAppendRenameColNames=input_col0 -DmapAppendColNames=col0 -DmapAppendRenameColNames=map_col0 -Dmethod=simhash_hamming_sim
输出结果
input_col0
map_col0
output
北京
北京
1.0
北京
北京上海
0.90625
北京
北京上海深圳
0.796875
北京上海
北京上海
1.0
北京上海
北京
0.90625
北京上海
北京上海深圳
0.828125
北京上海深圳
北京上海深圳
1.0
北京上海深圳
北京上海
0.828125
北京上海深圳
北京
0.796875
资源使用及费用预估
由于string_similarity_topn是一个M*N计算复杂度的算法(在M条记录中为N条记录找到最接近的字符串,需要计算两两样本的距离,因此需要计算M*N次),因此运行该算法时申请使用的资源和M*N成正比关系。
如果要在M条记录中为N条记录找到距离最近的记录,则申请的worker数量为M*N/(1024*1024*32),最大为1000;每个worker的内存为N/8 MB,取值范围为4~64 GB;按照计量模型的一个CU提供4 GB内存来计算,该算法最大CU申请量为1000*64/4=16000 CU。
相关文档
关于Designer更详细的内容介绍,请参见Designer概述。
您可以在信息检索、自然语言处理和生物信息学等领域,使用字符串相似度组件来计算字符串相似度。关于该组件的使用详情,请参见字符串相似度。