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工作?
答案 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试图在分析数据时将所需的所有数据保留在内存中。
解决方案很简单:
size
中的model.save()
参数。这样会减少代表您的单词的功能min_count
中的model.save()
参数。这将使模型仅考虑出现至少min_count
次的单词但是请注意,这最后两个建议会修改模型的特征