我有两个矩阵,每个矩阵都有多列和三行。我计算了余弦相似度(sklearn),但它以矩阵形式给出了结果。我怎样才能获得一个单一的价值?这些矩阵是每个词的嵌入,从 BERT 获得。
使用 Python 计算 3D 数组之间的余弦相似度
数据挖掘
Python
余弦距离
伯特
矩阵
2021-09-24 02:16:41
1个回答
您的输入矩阵(具有3 行和多列)说有3 个样本,具有多个属性。所以你将得到的输出将是一个 3x3 矩阵,其中每个值都是与另一个样本的相似度(有3 x 3 = 9这样的组合)
如果您要以稀疏格式打印成对的相似性,那么它可能看起来更接近您所追求的。
我创建了两个符合您描述的随机数示例矩阵:
from sklearn.metrics.pairwise import cosine_similarity
from scipy import sparse
a = np.random.random((3, 10))
b = np.random.random((3, 10))
# Create sparse matrices, which compute faster and give more understandable output
a_sparse, b_sparse = sparse.csr_matrix(a), sparse.csr_matrix(b)
sim_sparse = cosine_similarity(a_sparse, b_sparse, dense_output=False)
print(sim_sparse)
输出:
(0, 2) 0.7938732813430508
(0, 1) 0.7575978172453429
(0, 0) 0.7897664361147338
(1, 2) 0.740418315571796
(1, 1) 0.833981672896221
(1, 0) 0.7184526671218405
(2, 2) 0.8746293481677073
(2, 1) 0.6456666045233884
(2, 0) 0.7925289217609924
希望这个输出能让你更清楚地了解你实际得到的输出。
在此处查看有关性能方面的更多详细信息,有关稀疏矩阵的文档在此处。