今天我刚开始写一个脚本,使用gensim库在大型语料库(至少3000万句)上训练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)
我寻找这个问题的解决办法,但找不到任何有用的。 我认为这应该是一个常见的问题,因为我们主要在非常大的语料库(通常是维基百科文档)上训练模型。因此,它应该已经是一个解决方案
对这个问题有什么想法和解决办法吗
考虑将你的^ {}作为一个迭代来传递,而不是通过一个列表(生成器将无法工作)传递。p>
从the tutorial:
此外,Gensim还有几种不同的语料库格式,可以在API reference中找到。您可以考虑使用^ {CD2>},它应该已经很好地符合您的格式:
相关问题 更多 >
编程相关推荐