Doc2Vec Get most similar documents
You need to use infer_vector
to get a document vector of the new text - which does not alter the underlying model.
Here is how you do it:
tokens = "a new sentence to match".split()new_vector = model.infer_vector(tokens)sims = model.docvecs.most_similar([new_vector]) #gives you top 10 document tags and their cosine similarity
Edit:
Here is an example of how the underlying model does not change after infer_vec
is called.
import numpy as npwords = "king queen man".split()len_before = len(model.docvecs) #number of docs#word vectors for king, queen, manw_vec0 = model[words[0]]w_vec1 = model[words[1]]w_vec2 = model[words[2]]new_vec = model.infer_vector(words)len_after = len(model.docvecs)print np.array_equal(model[words[0]], w_vec0) # Trueprint np.array_equal(model[words[1]], w_vec1) # Trueprint np.array_equal(model[words[2]], w_vec2) # Trueprint len_before == len_after #True