Python:Gensim内存错误

时间:2015-09-12 20:09:36

标签: python windows gensim

import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
from gensim import corpora, models, similarities
from nltk.corpus import stopwords
import codecs

documents = []
with codecs.open("Master_File_for_Docs.txt", encoding = 'utf-8', mode= "r") as fid:
   for line in fid:
       documents.append(line)
stoplist = []
x = stopwords.words('english')
for word in x:
    stoplist.append(word)

#Removes Stopwords
texts = [[word for word in document.lower().split() if word not in stoplist]
for document in documents]


dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]

lda = models.LdaModel(corpus, id2word=dictionary, num_topics=100)
lda.print_topics(20)
#corpus_lda = lda[corpus]
#for doc in corpus_lda:
 #   print(doc)

我正在运行Gensim进行主题建模并尝试使上述代码正常工作。我知道这段代码有效,因为我的朋友从mac计算机运行它并且它成功运行但是当我从windows计算机运行它时代码给了我一个

MemoryError

我在第二行上设置的日志记录也没有出现在我的Windows计算机上。 Windows中是否需要修复以便gensim工作?

2 个答案:

答案 0 :(得分:0)

我已经成功地在我的Windows计算机上安装了gensim,但是当我为大数据设置更大的主题数时,它也会出现memoryError。因为gensim的空间复杂度是O(K * V),其中K是主题数字,V是字典的大小,它取决于你的计算机RAM。所以你可以将主题数设置为50或小于100,这可以解决它。 也许首先你应该在genism官方网站上测试这个例子:http://radimrehurek.com/gensim/index.html

答案 1 :(得分:0)

出现MemoryError的原因是Gensim试图在分析数据时将所需的所有数据保留在内存中。 解决方案很简单:

  • 使用具有更多内存的服务器(AWS计算机,比您的PC更强大的功能)
  • 尝试使用64位python解释器
  • 尝试减少size中的model.save()参数。这样会减少代表您的单词的功能
  • 尝试增加min_count中的model.save()参数。这将使模型仅考虑出现至少min_count次的单词

但是请注意,这最后两个建议会修改模型的特征