我正在运行层次化Dirichlet进程,HDP使用Python中的gensim,但是由于我的语料库太大,它会抛出以下错误:
model = gensim.models.HdpModel(corpus, id2word=corpus.id2word, chunksize=50000)
File "/usr/cluster/contrib/Enthought/Canopy_64/User/lib/python2.7/site-packages/gensim/models/hdpmodel.py", line 210, in __init__
self.update(corpus)
File "/usr/cluster/contrib/Enthought/Canopy_64/User/lib/python2.7/site-packages/gensim/models/hdpmodel.py", line 245, in update
self.update_chunk(chunk)
File "/usr/cluster/contrib/Enthought/Canopy_64/User/lib/python2.7/site-packages/gensim/models/hdpmodel.py", line 313, in update_chunk
self.update_lambda(ss, word_list, opt_o)
File "/usr/cluster/contrib/Enthought/Canopy_64/User/lib/python2.7/site-packages/gensim/models/hdpmodel.py", line 415, in update_lambda
rhot * self.m_D * sstats.m_var_beta_ss / sstats.m_chunksize
MemoryError我使用以下声明加载我的语料库:
corpus = gensim.corpora.MalletCorpus('chunk5000K_records.mallet')我用来加载语料库的数据有五百万条记录。这是我的工作,当我只加载50K记录。因此,我添加了块状选项HdpModel,但它仍然给了我一个错误。
请告诉我如何解决这个问题。我正在高性能计算上运行这个程序,所以我认为应该有一个解决方案来解决这个问题,因为这个集群具有非常大的内存和磁盘容量。
发布于 2020-02-25 11:22:52
您可以使用HDP的另一种选择,即LDA。HDP不会提供分层输出。HDP和LDA都在创建一个平面层次结构。唯一的区别是,HDP是基于在透光迭代中生成的主题生成的。在线LDA是相当有效的内存,以及善于捕捉主题。
发布于 2020-07-25 21:58:08
如果可能的话升级到Python3.x。它比Python2.7具有更高的内存效率。
此外,genism还提供了提高代码性能的指南。它被称为分布式计算,但有一节讨论如何提高单个节点的性能。一个建议是确保正确安装和使用用于NumPy的快速BLAS (基本线性代数)库。
https://datascience.stackexchange.com/questions/11496
复制相似问题