Doc2Vec Get most similar documents Doc2Vec Get most similar documents python python

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