理解 word2vec 中的 model.similarity
Understanding model.similarity in 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,比如 0.70 之类的。我错过了什么?请指导我。
Word2Vec 在玩具大小的示例上效果不佳 – 它是将单词向量移动到有用的相对位置的相同单词的许多不同示例的微妙推拉。
而且,尤其是在您的小例子中,您为模型提供了 300 维向量供其使用,并且只有 6 个单词的词汇表。参数如此之多,需要学习的东西却如此之少,它基本上可以 'memorize' 训练任务,在其内部预测目标中迅速变得近乎完美——而且,它可以通过许多许多替代方式来做到这一点,这可能不涉及词向量随机初始化的太多变化。因此,它永远不会被迫将向量移动到提供有关单词的一般信息的有用位置。
您有时可以通过缩小向量从小型数据集中获得一些有意义的结果,从而缩小模型的自由参数,并为模型提供更多的训练迭代。所以你可以试试size=2, iter=20
。但是你仍然需要更多的例子,而不是几个,每个词不止一次出现。 (即使在较大的数据集中,只有少量示例的单词的向量也往往很差 - 因此默认值 min_count=5
,在较大的数据集中应该增加得更高。)
要真正了解 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,比如 0.70 之类的。我错过了什么?请指导我。
Word2Vec 在玩具大小的示例上效果不佳 – 它是将单词向量移动到有用的相对位置的相同单词的许多不同示例的微妙推拉。
而且,尤其是在您的小例子中,您为模型提供了 300 维向量供其使用,并且只有 6 个单词的词汇表。参数如此之多,需要学习的东西却如此之少,它基本上可以 'memorize' 训练任务,在其内部预测目标中迅速变得近乎完美——而且,它可以通过许多许多替代方式来做到这一点,这可能不涉及词向量随机初始化的太多变化。因此,它永远不会被迫将向量移动到提供有关单词的一般信息的有用位置。
您有时可以通过缩小向量从小型数据集中获得一些有意义的结果,从而缩小模型的自由参数,并为模型提供更多的训练迭代。所以你可以试试size=2, iter=20
。但是你仍然需要更多的例子,而不是几个,每个词不止一次出现。 (即使在较大的数据集中,只有少量示例的单词的向量也往往很差 - 因此默认值 min_count=5
,在较大的数据集中应该增加得更高。)
要真正了解 word2vec 的实际应用,请瞄准包含数百万个单词的训练语料库。