代码之家  ›  专栏  ›  技术社区  ›  MMM

使用大型语料库python gensim的极慢LDA训练模型

  •  0
  • MMM  · 技术社区  · 7 年前

    我目前正在处理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的配置,我不确定是否安装了正确的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与我的字典和语料库一起使用知之甚少,因此,如果有任何帮助,我将不胜感激!为了解决这个问题,我已经三天没睡了!!谢谢

    1 回复  |  直到 7 年前
        1
  •  3
  •   Jérôme Bau    7 年前

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

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

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