Gensim Word2Vec 模型在相同环境和平台的相同源代码的两个编辑器中的不同结果?
Different results of Gensim Word2Vec Model in two editors for the same source code in same environment and platform?
我正在尝试在 python 3.7、Windows 10 机器上应用库 gensim 3.6 中实现的 word2vec 模型。在执行预处理后,我有一个句子列表(每个句子都是一个单词列表)作为模型的输入。
我已经在 Anaconda's Spyder
和 Sublime Text
编辑器中计算了结果(使用 model.wv.most_similar
获得给定输入词的 10 个最相似的词)。
但是,对于在两个编辑器中执行的相同源代码,我得到了不同的结果。
应该选择哪个结果我需要选择,为什么?
我在spyder和sublime text中指定了运行相同代码得到的结果截图。我需要获得 10 个最相似词的输入词是 #universe#
我真的很困惑如何选择结果,依据是什么?另外,我最近开始学习Word2Vec。
如有任何建议,我们将不胜感激。
在 Spyder 中获得的结果:
使用 Sublime Text 获得的结果:
Word2Vec 算法在内部使用随机化。此外,当(通常是为了提高效率)训练分布在多个线程上时,会引入一些额外的呈现顺序随机化。这意味着即使在完全相同的环境中,两个 运行 也会有不同的结果。
如果训练有效——足够的数据、适当的参数、足够的训练次数——所有这些模型在做词相似度等事情时应该具有相似的质量,即使实际的词会在不同的地方。单词的相对排名会有一些抖动,但结果应该大致相似。
您的结果与 'universe'
有隐约的关联,但不是很明显,而且它们之间的差异很大 运行,这表明您的数据、参数或数量可能存在问题培训。 (我们预计结果会略有不同,但不会太大。)
你有多少数据? (Word2Vec 受益于大量不同的单词用法示例。)
您是否通过使 min_count
低于其默认值 5 来保留稀有词? (这样的词往往得不到好的向量,而且最终会干扰附近词向量的改进。)
您要制作非常大的矢量吗? (更小的数据集和更小的词汇表只能支持更小的向量。太大的向量允许'overfitting',其中记忆数据的特质而不是学习的一般模式。或者,它们允许模型在许多不同的非竞争方向,因此模型 end-task/similarity 结果可能与 运行 到 运行 有很大不同,即使每个模型在其 内部个单词预测任务。)
即使是小数据集,您是否坚持使用默认值 epochs=5
? (一个大的、多样化的数据集需要更少的训练次数——因为所有的词都出现了很多次,无论如何都在整个数据集中。如果你试图从更薄的数据中提取结果,更多 epochs
可能会有一点帮助——但不是与更多不同的数据一样多。)
我正在尝试在 python 3.7、Windows 10 机器上应用库 gensim 3.6 中实现的 word2vec 模型。在执行预处理后,我有一个句子列表(每个句子都是一个单词列表)作为模型的输入。
我已经在 Anaconda's Spyder
和 Sublime Text
编辑器中计算了结果(使用 model.wv.most_similar
获得给定输入词的 10 个最相似的词)。
但是,对于在两个编辑器中执行的相同源代码,我得到了不同的结果。
应该选择哪个结果我需要选择,为什么?
我在spyder和sublime text中指定了运行相同代码得到的结果截图。我需要获得 10 个最相似词的输入词是 #universe#
我真的很困惑如何选择结果,依据是什么?另外,我最近开始学习Word2Vec。
如有任何建议,我们将不胜感激。
在 Spyder 中获得的结果:
使用 Sublime Text 获得的结果:
Word2Vec 算法在内部使用随机化。此外,当(通常是为了提高效率)训练分布在多个线程上时,会引入一些额外的呈现顺序随机化。这意味着即使在完全相同的环境中,两个 运行 也会有不同的结果。
如果训练有效——足够的数据、适当的参数、足够的训练次数——所有这些模型在做词相似度等事情时应该具有相似的质量,即使实际的词会在不同的地方。单词的相对排名会有一些抖动,但结果应该大致相似。
您的结果与 'universe'
有隐约的关联,但不是很明显,而且它们之间的差异很大 运行,这表明您的数据、参数或数量可能存在问题培训。 (我们预计结果会略有不同,但不会太大。)
你有多少数据? (Word2Vec 受益于大量不同的单词用法示例。)
您是否通过使 min_count
低于其默认值 5 来保留稀有词? (这样的词往往得不到好的向量,而且最终会干扰附近词向量的改进。)
您要制作非常大的矢量吗? (更小的数据集和更小的词汇表只能支持更小的向量。太大的向量允许'overfitting',其中记忆数据的特质而不是学习的一般模式。或者,它们允许模型在许多不同的非竞争方向,因此模型 end-task/similarity 结果可能与 运行 到 运行 有很大不同,即使每个模型在其 内部个单词预测任务。)
即使是小数据集,您是否坚持使用默认值 epochs=5
? (一个大的、多样化的数据集需要更少的训练次数——因为所有的词都出现了很多次,无论如何都在整个数据集中。如果你试图从更薄的数据中提取结果,更多 epochs
可能会有一点帮助——但不是与更多不同的数据一样多。)