使用Count Vectorizer获得1 x N相似矩阵而不是N x N个

问题描述 投票:0回答:1

因此,我试图创建尺寸为60000 x 60000的巨大数据集的相似性矩阵,该相似性矩阵不可能存储在偶数25gb的ram中,所以我想分别创建尺寸为1 x 60000的相似性分数相似度为一篇文章和其余所有文章打分。我现在使用计数向量器,然后计算余弦相似度。示例代码可以在下面看到。

# First 20 values in the DataFrameFirst 20 values

然后我创建了一个CountVectorizer()对象并将数据放入该对象中

count_vector = CountVectorizer()
vec = count_vector.fit_transform(df['final'][:20])
vec.shape

我们得到形状为[[(535,)的矩阵,并且对象具有以下格式:

<20x448 sparse matrix of type <class numpy.int64> with 535 stored elements in Compressed Sparse Row format>
然后我们将对数据进行拟合以获得余弦相似度

cosine_sim = cosine_similarity(vec, vec) cosine_sim.shape

我们相似矩阵的形状是20 x 20。

对于较小的数据集不会有问题,但是我的整个数据集包含60,000个元素,因此将要创建的矩阵的形状为60,000 x 60,000,无法同时加载到内存中。

[请帮助我找到一种形状为1 x 60,000的相似度矩阵,这使我可以将一个元素与其余所有元素相似,而不是将所有元素与其他所有元素相似,以便我可以处理数据并使用它。

python-3.x scikit-learn nlp cosine-similarity countvectorizer
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.