正确的输出是什么?

What will be the correct output?

我想实现论文“A Three-Layered Mutually Reinforced Model for 个性化引文推荐”(第 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)

你为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