正确的输出是什么?
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
我想实现论文“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