【发布时间】:2016-06-07 03:46:20
【问题描述】:
今天我刚刚开始编写一个脚本,该脚本使用 gensim 库在大型语料库(最少 30M 句)上训练 LDA 模型。 这是我正在使用的当前代码:
from gensim import corpora, models, similarities, matutils
def train_model(fname):
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
dictionary = corpora.Dictionary(line.lower().split() for line in open(fname))
print "DOC2BOW"
corpus = [dictionary.doc2bow(line.lower().split()) for line in open(fname)]
print "running LDA"
lda = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=100, update_every=1, chunksize=10000, asses=1)
在一个小型语料库(200 万个句子)上运行这个脚本,我意识到它需要大约 7GB 的 RAM。 当我尝试在更大的语料库上运行它时,由于内存问题,它失败了。 问题显然是由于我使用以下命令加载语料库:
corpus = [dictionary.doc2bow(line.lower().split()) for line in open(fname)]
但是,我认为没有其他方法,因为我需要它来调用 LdaModel() 方法:
lda = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=100, update_every=1, chunksize=10000, asses=1)
我搜索了解决此问题的方法,但找不到任何有用的信息。 我想这应该是一个常见问题,因为我们主要在非常大的语料库(通常是维基百科文档)上训练模型。所以,它应该已经是一个解决方案了。
对这个问题有什么想法和解决方案吗?
【问题讨论】:
标签: python nlp gensim lda topic-modeling