本文为您介绍PAI-Studio提供的字符串相似度-topN算法组件。

字符串相似度-topN算法组件用于计算字符串相似度并筛选出最相似的Top N个数据。

PAI-Studio支持通过可视化或PAI命令方式,配置字符串相似度-topN算法组件相关参数。

配置组件

  • 可视化方式
    页签 参数 描述
    字段设置 输入表在输出表追加的列名 输入表中需要在输出表中追加的列名。
    映射表在输出表追加的列名 映射表中需要在输出表中追加的列名。
    相似度计算中左表的列名 在相似度计算中,左表的列名。
    相似度计算中映射表的列名 在相似度计算中,映射表的列名。左表中的每一行都会和映射表中所有的字符串计算出相似度,并最终以Top N的方式输出计算结果。
    输出表中相似度列的列名 输出表中相似度列的列名。列名中不能有特殊字符,只能使用英文a~z、A~Z、数字或下划线(_),且以字母开头,长度不超过128字节。默认值为output。
    参数设置 最终给出的相似度最大值的个数 输出Top相似度的个数。取值范围为正整数,默认值为10。
    相似度计算方法 指定相似度计算方法类型。取值范围为:
    • levenshtein_sim
    • lcs_sim
    • ssk
    • cosine
    • simhash_hamming_sim
    默认值为levenshtein_sim。
    子串的长度 仅当相似度计算方法取值为ssk、cosine或simhash_hamming_sim时,才需要配置该参数。取值范围为(0,100)。默认值为2。
    匹配字符串的权重 仅当相似度计算方法取值为ssk时,才需要配置该参数。取值范围为(0,1)。默认值为0.5。
    执行调优 计算的核心数 默认为系统自动分配。
    每个核心的内存(MB) 默认为系统自动分配。
  • PAI命令方式
    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 映射表的名称。
    outputTableName 输出表的名称。
    inputSelectedColName1 在相似度计算中,左表的列名。 表中第一个STRING类型的列名
    inputSelectedColName2 在相似度计算中,映射表的列名。 表中第一个STRING类型的列名
    inputAppendColNames 输入表中需要在输出表追加的列名。
    inputAppendRenameColNames 输入表中需要在输出表追加的列名的别名。
    mapAppendColNames 映射表中需要在输出表追加的列名。
    mapAppendRenameColNames 映射表中需要在输出表追加的列名的别名。
    inputTablePartitions 输入表的分区名称。 所有分区
    mapTablePartitions 映射表的分区名称。 所有分区
    outputColName 输出表中相似度列的列名。列名中不能有特殊字符,只能使用英文a~z,A~Z、数字或下划线(_),且以字母开头,长度不超过128字节。 output
    method 相似度计算方法类型。取值范围为:
    • levenshtein_sim
    • lcs_sim
    • ssk
    • cosine
    • simhash_hamming_sim
    levenshtein_sim
    lambda 仅当相似度计算方法取值为ssk时,才需要配置该参数。取值范围为(0,1) 0.5
    k 仅当相似度计算方法取值为ssk、cosine或simhash_hamming_sim时,才需要配置该参数。取值范围为(0,100) 2
    lifecycle 输出表的生命周期。取值范围为正整数。
    coreNum 计算的核心数。 系统自动分配
    memSizePerCore 每个核心的内存数。 系统自动分配

示例

  • 输入数据
    create table pai_ft_string_similarity_topn_input as select * from
    (select 0 as id, "北京" as col0 from dual
    union all
    select 1 as id, "北京上海" as col0 from dual
    union all
    select 2 as id, "北京上海香港" as col0 from dual
    )tmp
  • 运行PAI命令
    PAI -name string_similarity_topn
        -project sre_mpi_algo_dev
        -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
  • 输出结果输出结果