字串相似性計算是機器學習中的一個基礎操作,旨在評估兩個字串之間的相似性或差異。這種計算在資訊檢索、自然語言處理和生物資訊學等領域廣泛應用,通過使用不同的演算法和度量方法(如Levenshtein Distance、Cosine Similarity等),協助識別、匹配或聚類相似文本資料。
演算法說明
字串相似性演算法組件支援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。
組件配置
方式一:可視化方式
在Designer工作流程頁面添加字串相似性組件,並在介面右側配置相關參數:
參數類型 | 參數 | 描述 |
欄位設定 | 輸出表追加的列名 | 指定輸出表中追加的列名。 |
相似性計算中第一列的列名 | 預設為表中第一個STRING類型的列名。 | |
相似性計算中第二列的列名 | 預設為表中第二個STRING類型的列名。 | |
輸出表中相似性列的列名 | 指定輸出表中相似性列的列名。 | |
參數設定 | 相似性計算方法 | 指定相似性計算方法類型。取值範圍為:
預設值為levenshtein_sim。 |
子串的長度 | 僅當相似性計算方法取值為ssk、cosine、simhash_hamming或simhash_hamming_sim時,才需要配置該參數。取值範圍為(0,100)。預設值為2。 | |
匹配字串的權重 | 僅當相似性計算方法取值為ssk、simhash_hamming或simhash_hamming_sim時,才需要配置該參數。取值範圍為(0,1)。預設值為0.5。 | |
執行調優 | 計算的核心數 | 預設為系統自動分配。 |
每個核心的記憶體(MB) | 預設為系統自動分配。 |
方式二:PAI命令方式
使用PAI命令配置字串相似性組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼。
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 | 否 | output | 輸出表中相似性列的列名。列名中不能有特殊字元,只能使用英文a~z,A~Z、數字或底線(_),且以字母開頭,長度不超過128位元組。 |
method | 否 | levenshtein_sim | 相似性計算方法類型。取值範圍為:
|
lambda | 否 | 0.5 | 僅當相似性計算方法取值為ssk時,才需要配置該參數。取值範圍為(0,1)。 |
k | 否 | 2 | 僅當相似性計算方法取值為ssk、cosine、simhash_hamming或simhash_hamming_sim時,才需要配置該參數。取值範圍為(0,100)。 |
lifecycle | 否 | 無 | 輸出表的生命週期。取值範圍為正整數。 |
coreNum | 否 | 系統自動分配 | 計算的核心數。 |
memSizePerCore | 否 | 系統自動分配 | 每個核心的記憶體數。 |
相關文檔
關於Designer更詳細的內容介紹,請參見Designer概述。
您也可以使用字串相似性-topN演算法組件計算字串相似性,並篩選出最相似的Top N個資料。關於該組件的使用詳情,請參見字串相似性-topN。