我从gensim运行了两次Word2Vec实现,并且save
函数有问题:
model_ = gensim.models.Word2Vec(all_doc, size=int(config['MODEL']['embed_size']),
window=int(config['MODEL']['window']),
workers=multiprocessing.cpu_count(),
sg=1, iter=int(config['MODEL']['iteration']),
negative=int(config['MODEL']['negative']),
min_count=int(config['MODEL']['min_count']), seed=int(config['MODEL']['seed']))
model_.save(config['BASIC']['embedding_dir'])
每次运行它时,我都会获得不同的输出。第一次它给出了"output_embedding","output_embedding.trainables.syn1neg.npy"和"output_embedding.wv.vectors.npy"。但是第二次它没有给出两个 npy 文件,它只是生成"output_embedding"。
从第一次到第二次,我唯一改变的是我用作输入的句子(all_doc
)。
为什么它不生成 3 个文件?
Gensim 仅在内部 numpy 数组的大小超过某个阈值时才创建单独的文件——所以我怀疑您的all_doc
语料库在一种情况下的词汇量非常小,而在另一种情况下词汇量更典型。
当它生成多个文件时,请确保将它们全部放在一起,以便以后加载工作。
(如果出于某种紧急原因需要更改该行为,继承的.save()
方法会采用可选的sep_limit
参数来更改阈值 - 但我建议不要对此进行破坏。
另外:您的文件名中有.trainables.
表明您使用的是 4.0.0 之前的 Gensim 版本。在最新的Gensim中,Word2Vec
和相关算法已经有一些改进,一些旧的代码需要小的更改才能继续工作,所以你可能希望在旧的基础上构建更多功能之前升级到最新版本。