python - 具有大型语料库的极其缓慢的LDA训练模型python gensim

标签 python machine-learning multiprocessing gensim lda

我目前正在处理 9600 个文档并应用 gensim LDA。对于训练部分,获得模型的过程似乎需要很长时间。我也尝试过使用多核功能,但似乎不起作用。我跑了差不多三天了,仍然无法得到lda模型。我检查了我的数据和代码的一些功能。我读了这个问题gensim LdaMulticore not multiprocessing? ,但仍然没有得到解决方案。

corpora.MmCorpus.serialize('corpus_whole.mm', corpus)
corpus = gensim.corpora.MmCorpus('corpus_whole.mm')
dictionary = gensim.corpora.Dictionary.load('dictionary_whole.dict')

dictionary.num_pos
12796870

print(corpus)
MmCorpus(5275227 documents, 44 features, 11446976 non-zero entries)

# lda model training codes
lda = models.LdaModel(corpus, num_topics=45, id2word=dictionary,\
 update_every=5, chunksize=10000,  passes=100)

ldanulti = models.LdaMulticore(corpus, num_topics=45, id2word=dictionary,\
                            chunksize=10000, passes=100, workers=3)

这是我检查 BLAS 的配置,我不确定我是否安装了正确的配置。 我在这里遇到的一件事是,我无法使用 apt-get 命令在我的 mac 上安装软件包。我已经安装了 Xcode,但它仍然给我一个错误。

python -c 'import scipy; scipy.show_config()'
lapack_mkl_info:
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/Users/misun/anaconda/lib']
include_dirs = ['/Users/misun/anaconda/include']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
lapack_opt_info:
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/Users/misun/anaconda/lib']
include_dirs = ['/Users/misun/anaconda/include']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
blas_opt_info:
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/Users/misun/anaconda/lib']
include_dirs = ['/Users/misun/anaconda/include']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
blas_mkl_info:
libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread']
library_dirs = ['/Users/misun/anaconda/lib']
include_dirs = ['/Users/misun/anaconda/include']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]

我对如何在 python 中使用 shardedcorpus 与我的字典和语料库不太了解,所以任何帮助将不胜感激!我三天没 sleep 才解决这个问题!!谢谢!!

最佳答案

我无法在我的机器上真正重现您的问题,但对我来说,您的问题似乎不是多重处理,而是您的参数passes,这对我来说似乎太高了。 尝试像 1 或 2 这样的参数,这应该是一个很好的开始参数。如果你的主题不能很好地融合,你仍然可以增加它。

lda = models.LdaModel(corpus, num_topics=45, id2word=dictionary, update_every=5, chunksize=10000,  passes=1)

这最多应该在一天内完成,可能只需几个小时(取决于您的机器)。

关于python - 具有大型语料库的极其缓慢的LDA训练模型python gensim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564330/

相关文章:

python - Flask 中尝试通过 app.open_resource() 读取文件时出现 500 HTTP 异常

machine-learning - CNN 池化层(子采样层)中的反向传播

python - Python 中的后台进程

python - os.fork 和 multiprocessing.Process 之间的行为差​​异

java - 在多处理器系统中,每个处理器都会有独立的JVM吗?

python - 为什么 PyObject* 可以指向 python 中的任何对象?

python - Django框架安装

python - 制作 python 程序来发牌时遇到问题。

matlab - MATLAB 中的神经网络

python - 在另一个训练操作中运行训练操作