語義向量距離演算法通過計算詞嵌入模型(如Word2Vec)產生的詞向量之間的距離來評估詞或文本片段在語義空間中的相似性。常用的距離度量方法包括歐氏距離、餘弦相似性、曼哈頓距離。該演算法廣泛應用於自然語言處理任務,如同義字產生、文本相似性計算和語義搜尋等。
組件配置
方式一:可視化方式
在Designer工作流程頁面添加語義向量距離組件,並在介面右側配置相關參數:
參數類型 | 參數 | 描述 |
欄位設定 | id所在列名 |
|
向量的列名列表 | 如f1,f2,表示每個詞語或文本段的向量表示由這兩列的資料群組成。 | |
參數設定 | 輸出的距離最近的向量的數目 | 預設值為5,表示演算法將返回與目標向量最相似的5個向量。 |
距離的計算方式 | 支援如下計算方式,取值:
| |
距離的閾值 | 當兩個向量的距離小於此值時輸出,預設值為+∞。 用於篩選相似向量的閾值參數。只有距離小於或等於該閾值的向量才會被認為是相似的並被輸出。例如,如果設定一個餘弦相似性閾值為0.8,只有相似性大於或等於0.8的向量才會被認為是相似向量。 | |
執行調優 | 計算的核心數 | 預設自動分配。 |
每個核心的記憶體(MB) | 預設自動分配。 |
方式二:PAI命令方式
使用PAI命令配置詞頻統計組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見情境4:在SQL指令碼組件中執行PAI命令。
PAI -name SemanticVectorDistance
-project algo_public
-DinputTableName="test_input"
-DoutputTableName="test_output"
-DidColName="word"
-DvectorColNames="f0,f1,f2,f3,f4,f5"
-Dlifecycle=30
參數名稱 | 是否必選 | 預設值 | 描述 |
inputTableName | 是 | 無 | 輸入表名。 |
inputTablePartitions | 否 | 輸入表的所有分區 | 輸入表中指定參與計算的分區。 |
outputTableName | 是 | 無 | 輸出表名。 |
idTableName | 否 | 無 | 需要計算相近向量的ID的列表所在表名。格式為一列,每一行一個ID。預設為空白,即輸入表中的所有向量參與計算。 |
idTablePartitions | 否 | 無 | ID表中參與計算的分區列表,預設為所有分區。 |
idColName | 是 | 3 | ID所在列名。 |
vectorColNames | 否 | 無 | 向量的列名列表,如f1,f2。 |
topN | 否 | 5 | 輸出的距離最近的向量的數目。取值範圍[1,+∞]。 |
distanceType | 否 | euclidean | 距離的計算方式。 |
distanceThreshold | 否 | +∞ | 距離的閾值。當兩個向量的距離小於此值時輸出。取值範圍(0,+∞)。 |
lifecycle | 否 | 無 | 輸出表的生命週期,取值為正整數。 |
coreNum | 否 | 系統自動計算 | 參與計算的核心數,取值為正整數。 |
memSizePerCore | 否 | 系統自動計算 | 每個核心需要的記憶體,取值為正整數。 |
輸出樣本
輸出表為四列,分別是original_id、near_id、distance、rank:
original_id | near_id | distance | rank |
hello | hi | 0.2 | 1 |
hello | xxx | xx | 2 |
Man | Woman | 0.3 | 1 |
Man | xx | xx | 2 |