繁体   English   中英

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

[英]Effective way to compute cosine similarity for sparse tensors in python?

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

有关sklearn cosine_similarity函数的信息,请参见以下网站

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

在python中

from sklearn.metrics.pairwise import cosine_similarity
cos_sim = cosine_similarity(vector1,vector2)

SciKit-Learn的cosine_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倍)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM