了解word2vec中的model.similarity

时间:2018-05-07 04:37:30

标签: word2vec

您好我是word2vec的新手,我写了一个小程序来自学

import gensim
from gensim.models import Word2Vec

sentence=[['Yellow','Banana'],['Red','Apple'],['Green','Tea']]
model = gensim.models.Word2Vec(sentence, min_count=1,size=300,workers=4)
print(model.similarity('Yellow', 'Banana'))

相似之处出现了: -0.048776340629810115

我的问题是为什么香蕉和黄色之间的相似性更接近1,如.70或者其他东西。我错过了什么?请指导我。

1 个答案:

答案 0 :(得分:0)

Word2Vec在玩具大小的例子上运作不佳 - 它是将词汇向量移动到有用的相对位置的相同词语的许多不同例子的微妙推拉。

但是,尤其是,在你的小小例子中,你已经给出了模型300维向量,并且只有6个单词的词汇。有这么多的参数,很少学习,它基本上可以记住'训练任务,在其内部预测目标中迅速变得近乎完美 - 而且,它可以通过许多,许多替代方式来做到这一点,这可能不会涉及字矢量随机初始化的很多变化。因此,它永远不会被迫将向量移动到一个有用的位置,提供有关单词的广义信息。

有时,通过缩小矢量,从而缩小模型的自由参数,并为模型提供更多的训练迭代,您可以从小数据集中获得一些有意义的结果。所以你可以试试size=2, iter=20。但是你仍然需要更多的例子,而不仅仅是少数几个,而且每个词都不止一次。 (即使在较大的数据集中,仅具有少量示例的单词的向量往往较差 - 因此默认min_count=5,在较大的数据集中应该增加甚至更高。)

要真正看到word2vec在行动,瞄准数百万字的训练语料库。