如何使用word2vec计算向量

时间:2019-07-18 20:33:38

标签: gensim

假设我有很多照片。假设有10张图片,每张图片由50个人注释。 因此,图1可能是“海滩,度假,放松,沙滩,阳光……”,我现在用特定领域的内容训练了word2vec。我有每个单词的向量,可以代表它们。但是我现在想要的是创建一个代表每个图片的最终矢量。因此,一个向量代表了50个注释(海滩,度假,放松,沙滩,太阳...)

让我们假设每个向量都用100个维度表示–我只添加所有50个向量的第一个维度(100个维度),而不是所有50个向量的第二个维度……等等。

我非常感谢任何可能对我有帮助的评论!

我尝试过,但是我不确定这是否是正确的方法。 我也尝试过doc2vec,但是我猜想这是有问题的,因为注释的单词顺序无关紧要-但与doc2vec有关。???

1 个答案:

答案 0 :(得分:0)

一些想法:

注释列表与自然语言叙事文本不同,不是相当-在标记的相对频率或相邻标记的重要性方面。因此,您可能想尝试更广泛的训练参数。例如,使用巨大的window(远大于您的每个文本)实际上可以消除注释的(可能任意)排序,从而将每个单词置于每个其他单词的上下文中。 (这会增加训练时间,但可能会以其他方式有所帮助。)此外,研究一下新可调的ns_exponent参数-gensim docs引用的论文建议与默认值有很大差异的值可能会有所帮助在某些推荐环境中。

也就是说,将多个向量组合为一个的最简单方法是将所有向量平均在一起。这样做是否适合您的目的,您必须进行测试。 (它不可避免地会丢失大量独立向量的信息,但是,如果建模的其他方面足够强大(足够的训练数据,足够的维度),那么真正重要的共享方面可能会保留在摘要向量中。)

(您可以看到一些用于对另一个recent answer中的单词向量求平均的代码。)

您也可以尝试Doc2Vec。与Word2Vec相比,它与排序没有更多关系,某些模式使用window大小的上下文,其中相邻单词会相互影响。 (但是,其他模式则不会,或者如上所述,过大的window会使相邻距离的相关性降低)。