如何使用word2vec获取给定单词的词向量和上下文向量?

6
from gensim.models import word2vec

sentences = word2vec.Text8Corpus('TextFile')
model = word2vec.Word2Vec(sentences, size=200, min_count = 2, workers = 4)
print model['king']

输出向量是“king”的上下文向量还是词嵌入向量?如何同时获取“king”的上下文向量和词嵌入向量?谢谢!

2个回答

5

这是关于“king”的嵌入向量。

如果使用分层softmax,上下文向量如下:

model.syn1

如果您使用负采样,它们就是:

model.syn1neg

向量可以通过以下方式访问:

model.syn1[model.vocab[word].index]

1
'上下文向量'也是一个'词嵌入'向量。 词嵌入意味着将词汇映射到实数向量的方式。
当您说'词嵌入'向量时,我认为您指的是中心词的向量。
在word2vec算法中,训练模型时,它为一个单词创建两个不同的向量(当'king'用于中心词和用于上下文词时)。
我不知道gensim如何处理这两个向量,但通常人们会平均考虑上下文和中心词,或者将两个向量连接起来。 这可能不是处理向量的最美观的方式,但它以这种方式运作得非常好。
因此,当您在某个预训练向量上调用model ['king']时,您看到的向量可能是两个向量的平均版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接