语义向量距离算法通过计算词嵌入模型(如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 |