【发布时间】:2018-09-05 11:49:19
【问题描述】:
我有 50,000k 个文件 - 总共有 1.62 亿字。我想使用 Gensim 进行主题建模,类似于本教程here
因此,LDA 需要将文档标记为单词,然后创建词频词典。
所以,我将这些文件读入 pandas 数据框(“内容”列包含文本)并执行以下操作以创建文本列表。image of dataframe attached here
texts = [[word for word in row[1]['content'].lower().split() if word not in stopwords] for row in df.iterrows()]
但是,由于字数过多,我遇到了内存错误。
我还尝试了 Python 中的 TokenVectorizer。我也遇到了内存错误。
def simple_tokenizer(str_input):
words = re.sub(r"[^A-Za-z0-9\-]", " ", str_input).lower().split()
return words
vectorizer = TfidfVectorizer(use_idf=True, tokenizer=simple_tokenizer, stop_words='english')
X = vectorizer.fit_transform(df['content'])
我如何处理对这些非常长的文档进行标记化处理,以便进行 LDA 分析?
如果重要的话,我有一个 i7、16GB 台式机。
编辑
因为 Python 无法存储非常大的列表。我实际上重写了代码,读取每个文件(最初存储为 HTML),将其转换为文本,创建文本向量,将其附加到列表中,然后将其发送到 LDA 代码。成功了!
【问题讨论】:
-
我认为 gensim 有一个在线 LDA 模型(:您应该为您提供编辑(也许还有更多细节)作为答案并接受它。顺便说一句,这样做是完全可以接受的,尽管我通常会等待也给别人一个机会。
标签: python out-of-memory gensim lda