正确的输出是什么?

时间:2019-10-30 15:02:43

标签: python-3.x matrix matrix-multiplication

我想实现论文“三层互增强模型”中给出的以下等式 个性化引用建议”(第4页)。根据本文的描述,B应该是一个方矩阵,而我正在得到一个向量。

enter image description here

我尝试了以下代码:

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)

1 个答案:

答案 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