【发布时间】:2020-05-12 03:21:04
【问题描述】:
我正在尝试使用 Gensim 在由 1000 个文件组成的海量数据集上构建 Word2vec(或 FastText)模型,每个文件包含约 210,000 个句子,每个句子包含约 1000 个单词。培训是在 185gb RAM、36 核机器上进行的。 我验证了这一点
gensim.models.word2vec.FAST_VERSION == 1
首先,我尝试了以下方法:
files = gensim.models.word2vec.PathLineSentences('path/to/files')
model = gensim.models.word2vec.Word2Vec(files, workers=-1)
但 13 小时后,我认为它运行时间过长并停止了它。
然后我尝试基于单个文件构建词汇表,并基于所有 1000 个文件进行如下训练:
files = os.listdir['path/to/files']
model = gensim.models.word2vec.Word2Vec(min_count=1, workers=-1)
model.build_vocab(corpus_file=files[0])
for file in files:
model.train(corpus_file=file, total_words=model.corpus_total_words, epochs=1)
但是我检查了训练前后的词向量样本,没有任何变化,这意味着没有进行实际的训练。
我可以就如何快速成功地运行它提出一些建议。谢谢!
更新 #1:
这是检查向量更新的代码:
file = 'path/to/single/gziped/file'
total_words = 197264406 # number of words in 'file'
total_examples = 209718 # number of records in 'file'
model = gensim.models.word2vec.Word2Vec(iter=5, workers=12)
model.build_vocab(corpus_file=file)
wv_before = model.wv['9995']
model.train(corpus_file=file, total_words=total_words, total_examples=total_examples, epochs=5)
wv_after = model.wv['9995']
所以向量:wv_before 和 wv_after 完全相同
【问题讨论】: