0

我有一个单位张量列表(长度 = 1)。该列表包含约 20 000 个此类张量。张量有大约 3 000 个 维度,但非常稀疏。只有x (0 < x < 1)维度不是 0。我需要计算所有这些张量之间的余弦相似度。最有效的方法是什么?(这不是 NLP 任务,但我的解决方案看起来类似于word2Vect方法,这就是我添加 NLP 标记的原因。我的张量比word2vec具有更多的维度,并且更稀疏)

4

2 回答 2

1

有关 sklearn cosine_similarity 函数,请参阅以下站点

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.cosine_similarity.html

在蟒蛇

from sklearn.metrics.pairwise import cosine_similarity
cos_sim = cosine_similarity(vector1,vector2)
于 2017-07-03T13:58:41.987 回答
0

SciKit-Learncosine_similarity是您的朋友:

from scipy import sparse
from sklearn.metrics.pairwise import cosine_similarity

# example test:
T = sparse.rand(4, 3, 0.9)
cosine_similarity(T)

# full run (tensor as described in question):
T = sparse.rand(20000, 3000)
%time cosine_similarity(T)

在我的机器上大约需要 4.4 秒。

# staying sparse:
%time cosine_similarity(T, dense_output=False)

在我的机器上花费不到 2 秒(即大约 2 倍加速)。

于 2017-07-05T10:13:34.730 回答