def cosine(vector1,vector2):
cosV12 = np.dot(vector1, vector2) / (linalg.norm(vector1) * linalg.norm(vector2))
return cosV12
model=gensim.models.doc2vec.Doc2Vec.load('Model_D2V_Game')
string='民生 为了 父亲 我 要 坚强 地 ...'
list=string.split(' ')
vector1=model.infer_vector(doc_words=list,alpha=0.1, min_alpha=0.0001,steps=5)
vector2=model.docvecs.doctag_syn0[0]
print cosine(vector2,vector1)
-0.0232586
我使用训练数据来训练doc2vec
模型。然后,我用infer_vector()
给定一个训练数据中的文档来生成一个向量。但它们是不同的。cosine 的值是如此之小( )保存在模型中的 与生成的-0.0232586
之间的距离。但这不合理啊……vector2
doc2vec
vector1
infer_vector()
我找到我的错误。我应该使用'string=u'民生为了父亲我要坚强地...''而不是'string='民生为了父亲我要坚强地...''。当我以这种方式纠正时,余弦距离达到 0.889342。