我想实现论文“三层互增强模型”中给出的以下等式 个性化引用建议”(第4页)。根据本文的描述,B应该是一个方矩阵,而我正在得到一个向量。
我尝试了以下代码:
querySplit = query.split(',')
queryText = querySplit[0]
qt_tag = word_tokenize(queryText.rstrip().lower().translate(translator))
qt_vector = model.infer_vector(qt_tag)
def eq_b(query):
vecs = np.asarray(
[spatial.distance.cosine(spatial.distance.cosine(query, model.docvecs[i]), model.docvecs[i]) for i in
range(Docs_len)])
return vecs / vecs.sum()
b = eq_b(qt_vector)
print("B", b)
答案 0 :(得分:1)
您为B编写的公式不正确。从文件上看,B * Rt_p与您所拥有的等于,但与B本身不同。这意味着矩阵的实际公式为:
B=np.matmul(eq_b(qt_vector),transpose(Rt_p))/norm(Rt_p)^2
基本上,您会添加一些额外的内容,以便在与Rt_p
进行乘法运算时,所有与Rt_p
相关的项都会被取消,而您剩下的是eq_b(qt_vector)
。取消是由于
transpose(Rt_p)*Rt_p ==norm(Rt_p)^2