python中计算稀疏张量余弦相似性的有效方法?

python中计算稀疏张量余弦相似性的有效方法?,python,machine-learning,nlp,word2vec,tensor,Python,Machine Learning,Nlp,Word2vec,Tensor,我有一个单位张量列表(长度=1)。这个列表包含大约20000个这样的张量。张量有大约3000维,但非常稀疏。只有x(0

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

有关sklearn cosine_相似性函数,请参阅下面的站点 用python SciKit Learn是您的朋友:

从scipy导入稀疏
从sklearn.metrics.pairwise导入余弦_相似性
#示例测试:
T=sparse.rand(4,3,0.9)
余弦相似性(T)
#全行程(如所述的张量):
T=sparse.rand(20000,3000)
%时间余弦_相似性(T)
在我的机器上大约需要4.4秒

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

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

谢谢。如何将其用于稀疏数组?找不到示例。矢量1和矢量2是什么?如果只是numpy数组,那么这在计算上是无效的。您描述的整数范围($0from sklearn.metrics.pairwise import cosine_similarity cos_sim = cosine_similarity(vector1,vector2)
# staying sparse:
%time cosine_similarity(T, dense_output=False)