首页 > 解决方案 > 使用来自两个不同字典和返回键的值进行计算

问题描述

我正在尝试计算 dict1 的所有值和 dict2 的所有值之间的余弦相似度。完成后,我想返回相似度高的字典的键。为此,我想将余弦相似度的结果保存在相似度字典中。这是我的尝试:

similarity_dictionary = {}
for x in dict1:
    for y in dict2:
        for x_key, x_val in dict1.items():
            for y_key, y_val in dict2.items():
                cos_sim =  numpy.dot(x_val, y_val)/(norm(x_val,)*norm(y_val))
                dict_of_sims[[x_key, y_key]] = cos_sim 

这给了我以下错误:

ValueError: shapes (1,300) and (1,300) not aligned: 300 (dim 1) != 1 (dim 0)

有人可以帮忙 1. 解释错误和 2. 引导我走向正确的方向吗?先感谢您!

标签: pythondictionary

解决方案


看起来您正在尝试计算两个1x300矩阵的点积。该错误只是表明这不起作用,因为您只能将m x n矩阵与n x p矩阵相乘(即“内部维度”需要相同)。

此外,如果您不提供最小的工作示例,则很难说如何改进您的代码。


推荐阅读