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”的词嵌入向量?如何获得“king”的上下文向量和“king”的词嵌入向量?谢谢!
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”的词嵌入向量?如何获得“king”的上下文向量和“king”的词嵌入向量?谢谢!
它是“国王”的嵌入向量。
如果使用分层 softmax,则上下文向量为:
model.syn1
如果您使用负采样,它们是:
model.syn1neg
可以通过以下方式访问向量:
model.syn1[model.vocab[word].index]
“上下文向量”也是一个“词嵌入”向量。词嵌入意味着词汇如何映射到实数向量。
当您说“词嵌入”向量时,我假设您指的是中心词的向量。
在 word2vec 算法中,当您训练模型时,它会为一个词创建两个不同的向量(当“king”用于中心词和用于上下文词时)。
我不知道 gensim 是如何处理这两个向量的,但通常人们会平均上下文和中心词,或者连接两个向量。它可能不是处理向量的最漂亮的方法,但它的效果很好。
因此,当您在某个预训练的向量上调用 model['king'] 时,您看到的向量可能是两个向量的平均版本。