Hello everyone,
I also asked this question on
stack overflow, however I don't know how active the gensim community is there, so I'm happy to have this as a second place to ask my question:
I need to add and subtract word vectors, for a project in which I use gensim.models.KeyedVectors
(from the word2vec-google-news-300 model)
Unfortunately, I've tried but can't manage to do it correctly.
Let's look at the poular example queen ~= king - man + woman.
When I want to subtract *man* from *king* and add *woman*,
I can do this by
# model is loaded using gensim.models.KeyedVectors.load()
model.wv.most_similar(positive=["king", "woman"], negative=["man"])[0]
which, as expected, returns ('queen', 0.7118192911148071) for the model I use.
Now, to achieve the same with adding and subtracting vectors, I've tried the following code:
vec1, vec2, vec3 = model.wv["king"], model.wv["man"], model.wv["woman"]
result = model.similar_by_vector(vec1 - vec2 + vec3)[0]
result in the code above is ('king', 0.7992597222328186) which is not what I'd expect.
What is my mistake?
Thank you!
Simon