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

计算字符串相似度是机器学习领域的一个基本操作,主要用于信息检索、自然语言处理和生物信息学等领域。字符串相似度算法组件支持Levenshtein(Levenshtein Distance)、lCS(Longest Common SubString)、SSK(String Subsequence Kernel)、Cosine(Cosine)和Simhash_Hamming五种相似度计算方式,支持两两计算。
  • Levenshtein支持计算距离和相似度。
    • 距离在参数中表示为levenshtein
    • 相似度=1-距离。在参数中表示为levenshtein_sim
  • lCS支持计算距离和相似度。
    • 距离在参数中表示为lcs
    • 相似度=1-距离。相似度在参数中表示为lcs_sim
  • SSK支持计算相似度,在参数中表示为ssk
  • Cosine支持计算相似度,在参数中表示为cosine
  • Simhash_Hamming,其中SimHash算法是把原始的文本映射为64位的二进制指纹,Hamming Distance则是计算二进制指纹在相同位置上不同字符的个数,支持计算距离和相似度。
    • 距离在参数中表示为simhash_hamming
    • 相似度=1-距离/64.0。相似度在参数中表示为simhash_hamming_sim

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

配置组件

  • 可视化方式
    页签 参数 描述
    字段设置 输出表追加的列名 指定输出表中追加的列名。
    相似度计算中第一列的列名 默认为表中第一个STRING类型的列名。
    相似度计算中第二列的列名 默认为表中第二个STRING类型的列名。
    输出表中相似度列的列名 指定输出表中相似度列的列名。
    参数设置 相似度计算方法 指定相似度计算方法类型。取值范围为:
    • levenshtein
    • levenshtein_sim
    • lcs
    • lcs_sim
    • ssk
    • cosine
    • simhash_hamming
    • simhash_hamming_sim
    默认值为levenshtein_sim。
    子串的长度 仅当相似度计算方法取值为sskcosinesimhash_hammingsimhash_hamming_sim时,才需要配置该参数。取值范围为(0,100)。默认值为2。
    匹配字符串的权重 仅当相似度计算方法取值为ssk时,才需要配置该参数。取值范围为(0,1)。默认值为0.5。
    执行调优 计算的核心数 默认为系统自动分配。
    每个核心的内存(MB) 默认为系统自动分配。
  • PAI命令方式
    PAI -name string_similarity
        -project algo_public
        -DinputTableName="pai_test_string_similarity"
        -DoutputTableName="pai_test_string_similarity_output"
        -DinputSelectedColName1="col0"
        -DinputSelectedColName2="col1";
    参数名称 是否必选 描述 默认值
    inputTableName 输入表的名称。
    outputTableName 输出表的名称。
    inputSelectedColName1 相似度计算中第一列的列名。 表中第一个STRING类型的列名
    inputSelectedColName2 相似度计算中第二列的列名。 表中第二个STRING类型的列名
    inputAppendColNames 输出表追加的列名。
    inputTablePartitions 输入表的分区名称。 所有分区
    outputColName 输出表中相似度列的列名。列名中不能有特殊字符,只能使用英文a~z,A~Z、数字或下划线(_),且以字母开头,长度不超过128字节。 output
    method 相似度计算方法类型。取值范围为:
    • levenshtein
    • levenshtein_sim
    • lcs
    • lcs_sim
    • ssk
    • cosine
    • simhash_hamming
    • simhash_hamming_sim
    levenshtein_sim
    lambda 仅当相似度计算方法取值为ssk时,才需要配置该参数。取值范围为(0,1) 0.5
    k 仅当相似度计算方法取值为sskcosinesimhash_hammingsimhash_hamming_sim时,才需要配置该参数。取值范围为(0,100) 2
    lifecycle 输出表的生命周期。取值范围为正整数。
    coreNum 计算的核心数。 系统自动分配
    memSizePerCore 每个核心的内存数。 系统自动分配

示例

  • 输入数据
    create table pai_ft_string_similarity_input as select * from
    (select 0 as id, "北京" as col0, "北京" as col1 from dual
    union all
    select 1 as id, "北京" as col0, "北京上海" as col1 from dual
    union all
    select 2 as id, "北京" as col0, "北京上海香港" as col1 from dual
    )tmp;
  • 运行PAI命令
    PAI -name string_similarity
        -project sre_mpi_algo_dev
        -DinputTableName=pai_ft_string_similarity_input
        -DoutputTableName=pai_ft_string_similarity_output
        -DinputSelectedColName1=col0
        -DinputSelectedColName2=col1
        -Dmethod=simhash_hamming
        -DinputAppendColNames=col0,col1;
  • 输出结果
    • 使用simhash_hamming计算方法的输出结果如下。输出结果
    • 使用simhash_hamming_sim计算方法的输出结果如下。输出结果