字符串相似度-topN

字符串相似度-topN算法组件用于计算字符串相似度,并筛选出最相似的Top N个数据。本文为您介绍字符串相似度-topN算法组件的配置方法。

组件配置

您可以使用以下任意一种方式,配置字符串相似度-topN组件参数。

方式一:可视化方式

Designer工作流页面配置组件参数。

页签

参数

描述

字段设置

输入表在输出表追加的列名

输入表中需要在输出表中追加的列名。

映射表在输出表追加的列名

映射表中需要在输出表中追加的列名。

相似度计算中左表的列名

在相似度计算中,左表的列名。

相似度计算中映射表的列名

在相似度计算中,映射表的列名。左表中的每一行都会和映射表中所有的字符串计算出相似度,并最终以Top N的方式输出计算结果。

输出表中相似度列的列名

输出表中相似度列的列名。列名中不能有特殊字符,只能使用英文a~z、A~Z、数字或下划线(_),且以字母开头,长度不超过128字节。默认值为output。

参数设置

最终给出的相似度最大值的个数

输出Top相似度的个数。取值范围为正整数,默认值为10。

相似度计算方法

指定相似度计算方法类型。取值范围为:

  • levenshtein_sim(默认值)

  • lcs_sim

  • ssk

  • cosine

  • simhash_hamming_sim

子串的长度

仅当相似度计算方法取值为ssk、cosinesimhash_hamming_sim时,才需要配置该参数。取值范围为(0,100)。默认值为2。

匹配字符串的权重

仅当相似度计算方法取值为ssksimhash_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

  • lcs_sim

  • ssk

  • cosine

  • simhash_hamming_sim

levenshtein_sim

lambda

仅当相似度计算方法取值为ssksimhash_hamming_sim时,才需要配置该参数。取值范围为(0,1)

0.5

k

仅当相似度计算方法取值为ssk、cosinesimhash_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概述

  • 您可以在信息检索、自然语言处理和生物信息学等领域,使用字符串相似度组件来计算字符串相似度。关于该组件的使用详情,请参见字符串相似度