我想为法语创建一个大的gensim字典,尝试在主题检测、文本间的相似性以及其他类似的方面获得更好的结果。 因此,我计划使用维基百科转储,并按以下方式进行处理:
由于语料库非常大,我不在内存中存储任何内容,并通过smart_open访问语料库,但gensim短语模型似乎消耗了太多的内存来完成第三步。在
下面是我的示例代码:
corpus = smart_open(corpusFile, "r")
phrases = gensim.models.Phrases()
with smart_open(phrasesFile, "wb") as phrases_file:
chunks_size = 10000
texts, i = [], 0
for text in corpus:
texts.append(text.split())
i += 1
if i % chunks_size == 0:
phrases.add_vocab(texts)
texts = []
phrases.save(phrases_file)
corpus.close()
有没有一种方法可以在不冻结我的计算机的情况下完成这个操作呢?还是只能在语料库的一个子集上训练短语模型?在
我自己回答是因为我意识到我忘了处理短语类中一些与内存相关的参数。在
所以,首先我把max_vocab_size除以2,这样它应该会消耗更少的内存,而且我决定每隔10万篇文章保存一次Phrases对象,然后从保存的文件中重新加载它,因为这些技巧已经显示了它们对gensim库中的其他类有帮助。。。在
以下是新代码,可能稍慢,但它已成功完成任务:
在我的例子中,在把所有这些放在一个Phraser对象中之后,我得到了412816个短语。在
相关问题 更多 >
编程相关推荐