我正在使用word2vec(和doc2vec)来获取句子的嵌入,但是我想完全忽略单词顺序。我目前正在使用gensim,但必要时可以使用其他软件包。
作为示例,我的文字看起来像这样:
[
['apple', 'banana','carrot','dates', 'elderberry', ..., 'zucchini'],
['aluminium', 'brass','copper', ..., 'zinc'],
...
]
[我有意希望将'apple'与'zucchini'视为与'banana'相似,因此我将窗口大小设置为非常大的数字,例如1000。我知道与此有关的2个问题。
问题1:窗口的开头可能是roll,它会创建以下训练对:最终到达正确的('apple', ('banana')), ('apple', ('banana', 'carrot')), ('apple', ('banana', 'carrot', 'date'))
之前的('apple', ('banana','carrot', ..., 'zucchini'))
。这似乎使“苹果”比“南瓜”更接近“香蕉”,因为它们包含“ apple”和“ banana”的对比包含“ apple”和“ zucchini”的对多。
问题2:我听说成对的采样与从目标单词到上下文单词的距离成反比-这也引起了一个问题,即附近的单词似乎比我想要的更紧密。]
是否有解决问题1和2的方法?我应该使用cbow而不是sgns吗?还有其他我应该注意的超参数吗?在这种情况下,删除/忽略订单的最佳方法是什么?
谢谢
我正在使用word2vec(和doc2vec)来获取句子的嵌入,但是我想完全忽略单词顺序。我目前正在使用gensim,但如有必要可以使用其他软件包。例如,我的...
我不确定您所说的“问题1”是什么意思-在word2vec样式算法的window
参数的常规解释中没有“滚动”或“环绕”。所以我不会为此担心。