gpt4 book ai didi

python - 从字典的子集中有效地填充 SciPy 稀疏矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:55 28 4
gpt4 key购买 nike

我需要在几个 14000x10000 矩阵中存储单词共现计数。因为我知道矩阵是稀疏的,而且我没有足够的 RAM 来将它们全部存储为密集矩阵,所以我将它们存储为 scipy.sparse 矩阵。

我发现收集计数的最有效方法是使用 Counter 对象。现在我需要将计数从 Counter 对象转移到稀疏矩阵,但这需要很长时间。目前,填充矩阵大约需要 18 个小时。

我使用的代码大致如下:

for word_ind1 in range(len(wordlist1)):
for word_ind2 in range(len(wordlist2)):
word_counts[word_ind2, word_ind1]=word_counters[wordlist1[word_ind1]][wordlist2[word_ind2]]

其中 word_counts 是一个 scipy.sparse.lil_matrix 对象,word_counters 是一个计数器字典,wordlist1wordlist2 是字符串列表。

有什么方法可以更有效地做到这一点?

最佳答案

您正在使用 LIL 矩阵,它(不幸的是)具有线性时间插入算法。因此,以这种方式构建它们需要二次方时间。尝试使用 DOK 矩阵,它们使用哈希表进行存储。

但是,如果您对 bool 术语的出现感兴趣,那么如果您有一个稀疏的术语文档矩阵,则计算共现矩阵会快得多。令A为这样一个形状为(n_documents, n_terms)的矩阵,则共现矩阵为

A.T * A

关于python - 从字典的子集中有效地填充 SciPy 稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22796118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com