【问题标题】:What is the `null_word` parameter in gensim Word2Vec?gensim Word2Vec 中的“null_word”参数是什么?
【发布时间】:2017-07-11 22:54:24
【问题描述】:

gensim 中的 Word2Vec 对象有一个 null_word 参数,文档中没有解释。

class gensim.models.word2vec.Word2Vec(sentences=None, size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha= 0.0001, sg=0, hs=0,negative=5, cbow_mean=1, hashfxn=, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000)

null_word 参数是做什么用的?

检查https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py#L680的代码,它指出:

    if self.null_word:
        # create null pseudo-word for padding when using concatenative L1 (run-of-words)
        # this word is only ever input – never predicted – so count, huffman-point, etc doesn't matter
        word, v = '\0', Vocab(count=1, sample_int=0)
        v.index = len(self.wv.vocab)
        self.wv.index2word.append(word)
        self.wv.vocab[word] = v

什么是“连接 L1”?

【问题讨论】:

    标签: python null deep-learning gensim word2vec


    【解决方案1】:

    null_word 仅在使用具有串联模式的 PV-DM 时使用 - 模型初始化中的参数 dm=1, dm_concat=1

    在这种非默认模式下,目标词的window 位置内的 doctag-vector 和相邻词的向量连接到一个非常宽的输入层,而不是更典型的平均。

    此类模型比其他模式更大且速度更慢。对于文本示例开头或结尾附近的目标词,可能没有足够的相邻词来创建此输入层——但模型需要这些槽的值。所以null_word 本质上用作填充。

    虽然最初的Paragraph Vectors 论文在他们的一些实验中提到了使用这种模式,但这种模式不足以重现他们的结果。 (据我所知,没有人能够重现这些结果,并且其中一位作者的其他 cmet 暗示原始论文在其过程中存在一些错误或遗漏。)

    此外,我还没有发现这种模式提供了明显的好处来证明增加的时间/内存是合理的。 (它可能需要非常大的数据集或非常长的训练时间才能显示出任何好处。)

    因此,除非您正在使用这种不太常见的模式进行高级实验,否则您不应该太担心这个模型属性——在这种情况下,您可以查看源代码以了解有关它如何用作填充的所有详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      相关资源
      最近更新 更多