【问题标题】:Default estimation method of Gensim's Word2vec Skip-gram?Gensim的Word2vec Skip-gram的默认估计方法?
【发布时间】:2023-10-21 23:20:01
【问题描述】:

我现在尝试使用 word2vec,通过 NCE(噪声对比估计)而不是传统的负采样方法来估计 skipgram 嵌入,就像最近的一篇论文所做的那样 (https://asistdl.onlinelibrary.wiley.com/doi/full/10.1002/asi.24421?casa_token=uCHp2XQZVV8AAAAA%3Ac7ETNVxnpqe7u9nhLzX7pIDjw5Fuq560ihU3K5tYVDcgQEOJGgXEakRudGwEQaomXnQPVRulw8gF9XeO)。论文有一个复制的GitHub仓库(https://github.com/sandeepsoni/semantic-progressiveness),主要依赖gensim实现word2vec,但是仓库组织不好,乱七八糟,所以我不知道作者是如何通过gensim的word2vec实现NCE估计的.

作者只是使用了 gensim 的 word2vec 作为默认状态,没有包含任何选项,所以我的问题是在 Skip-gram 嵌入下 gensim 的 word2vec 的默认估计方法是什么。新华网?根据您的手册,它只是说有一个负采样选项,如果设置为 0,则不使用负采样。但是那么使用什么估计方法呢? 负(int,可选)——如果 > 0,将使用负采样,负的 int 指定应该绘制多少“噪声词”(通常在 5-20 之间)。如果设置为 0,则不使用负采样。

在此先感谢您,并期待尽快收到您的来信!

【问题讨论】:

    标签: python nlp gensim word2vec


    【解决方案1】:

    您可以在未修改的 Gensim 库中的 Gensim 文档中查看 Gensim Word2Vec 模型的默认参数。这是Word2Vec构造函数方法的当前版本(4.1)文档的链接,显示了所有默认参数值:

    https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec

    class gensim.models.word2vec.Word2Vec(sentences=None, corpus_file=None, vector_size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None,样本=0.001,种子=1,工人=3,min_alpha=0.0001,sg=0,hs=0,负=5,ns_exponent=0.75,cbow_mean=1,hashfxn=,epochs=5,null_word=0,trim_rule=None , sorted_vocab=1, batch_words=10000, compute_loss=False, callbacks=(), comment=None, max_final_vocab=None, shrink_windows=True)

    其中两个参数 - hs=0, negative=5 - 表示默认模式禁用了分层softmax,并启用了带有 5 个否定词的负采样。对于许多版本,这些是 Gensim 的 Word2Vec 的默认值,因此即使其他代码也使用旧版本,这很可能是使用的模式(除非参数或修改/覆盖的代码更改了它们)。

    【讨论】: