gpt4 book ai didi

google-bigquery - Bigquery 中数组对之间的余弦相似度

转载 作者:行者123 更新时间:2023-12-02 00:14:15 24 4
gpt4 key购买 nike

我创建了一个表,其中有一对 ID 和每个 ID 的坐标,以便我可以计算它们之间的成对余弦相似度。

表格看起来像这样 enter image description here

坐标的维度数当前为 128,但可能会有所不同。但同一个表中一对ID的数字维度总是相同的。

coord1coord2 是具有浮点值的重复字段(数组)。

有没有办法计算它们之间的余弦相似度?

我的预期输出将包含三列:id1id2cosine_similarity

最佳答案

以下适用于 BigQuery 标准 SQL

#standardSQL
SELECT id1, id2, (
SELECT
SUM(value1 * value2)/
SQRT(SUM(value1 * value1))/
SQRT(SUM(value2 * value2))
FROM UNNEST(coord1) value1 WITH OFFSET pos1
JOIN UNNEST(coord2) value2 WITH OFFSET pos2
ON pos1 = pos2
) cosine_similarity
FROM `project.dataset.table`

下面是供您玩的虚拟示例

#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 id1, [1.0, 2.0, 3.0, 4.0] coord1, 2 id2, [1.0, 2.0, 3.0, 4.0] coord2 UNION ALL
SELECT 3, [2.0, 0.0, 1.0, 1.0, 0, 2.0, 1.0, 1.0], 4, [2.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0]
)
SELECT id1, id2, (
SELECT
SUM(value1 * value2)/
SQRT(SUM(value1 * value1))/
SQRT(SUM(value2 * value2))
FROM UNNEST(coord1) value1 WITH OFFSET pos1
JOIN UNNEST(coord2) value2 WITH OFFSET pos2
ON pos1 = pos2
) cosine_similarity
FROM `project.dataset.table`

结果

Row id1 id2 cosine_similarity    
1 1 2 1.0
2 3 4 0.8215838362577491

关于google-bigquery - Bigquery 中数组对之间的余弦相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53927630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com