gensim - gensim 实现中 DBOW doc2vec 的 word2vec 映射来自哪里?
问题描述
我正在尝试将 gensim 用于 doc2vec 和 word2vec。
由于 PV-DM 方法可以同时生成 word2vec 和 doc2vec,我认为 PV-DM 是正确的模型。
gensim
因此,我通过指定dm=1
PV-DM创建了一个模型
我的问题如下:
train
当我调用Doc2vec 对象时,word2vec 模型与 doc2vec 一起训练是真的吗?似乎属性
wv
包含 word2vec 并且甚至在训练之前就可用。这是 word2vec 的静态版本吗?我还创建了 DBOW 模型并注意到它还包含
wv
. 这也是我在上一个问题中提到的 word2vec 的静态版本吗?
解决方案
(1) 是的,词向量在 PV-DM 模式下与 doc 向量同时训练。
(2)wv
训练发生前的属性内容是随机初始化的、未经训练的词向量。(就像在 word2vec 中一样,所有向量都获得随机的、低幅度的起始位置。)
(3) 在普通 PV-DBOW 模式 ( dm=0
) 中,由于代码共享,wv
向量仍然被分配和初始化——但从未训练过。在 PV-DBOW 训练结束时,wv
词向量将保持不变,因此是随机的/无用的。(他们根本不参加培训。)
如果启用可选dbow_words=1
参数,则 skip-gram 词向量训练将与普通 PV-DBOW 训练混合。这将以交错方式完成,因此每个目标词(要预测)将用于训练 PV-DBOW 文档向量,然后是相邻的上下文词向量。结果,wv
单词向量将被训练,并在“相同空间”中与文档向量进行有意义的比较。
使用此选项,训练将比普通 PV-DBOW 花费更长的时间(与window
大小相关的因素)。对于任何特定的最终目的,这种模式下的 doc-vectors 可能会更好(如果 word-to-word 预测有效地帮助以有用的方式扩展语料库)或更糟(如果模型在 word-to 上花费大量精力-word 预测有效地稀释/压倒了 full-doc doc-to-word 预测中的其他模式)。
推荐阅读
- java - Java 类版本显示不正确
- python - 在多标签分类中修改model.fit
- java - Java:自实例化类
- json - JSON Swift.DecodingError.keyNotFound(Swift 5.3)
- java - 加载网格时出错 - 空指针异常
- python - 将 Numpy 数组折叠为标量,例如,乘以零
- c++ - mongocxx 以微秒精度插入当前日期
- sql-server - 从 Visual Studio SSDT 运行时,SSIS 包成功完成,但从 SQL 代理失败
- nginx - Nginx SSL 初始连接时间慢
- javascript - mocha 测试的返回值