【问题标题】:Extremely slow LDA training model with large corpora python gensim具有大型语料库 python gensim 的极慢 LDA 训练模型
【发布时间】:2018-09-08 21:34:51
【问题描述】:

我目前正在处理 9600 个文档并应用 gensim LDA。对于训练部分,这个过程似乎需要很长时间才能得到模型。我也尝试过使用多核功能,但它似乎不起作用。我跑了将近 3 天,但我仍然无法获得 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 了解甚少,因此我们将不胜感激!我已经三天没睡觉来解决这个问题了!!谢谢!!

【问题讨论】:

  • 打印您的 MmCorpus 时会有一些令人惊讶的数字。它说超过 500 万个文档,尽管您只说 9600 个。此外,只有 44 个特征(不同的词?)具有超过 1100 万个非零条目。更不用说拥有超过 1200 万条条目的字典了。您确定您的gensim 字典、语料库等都正常吗?

标签: python machine-learning multiprocessing gensim lda


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多