对于我的项目,我必须使用两个字典作为输入进行余弦相似度计算,如下所示:
table1 = {"<he": 2, "het": 1}
table2 = {"<he": 2, "hem": 1}
哪个返回两个字典之间的余弦相似度。上面给定示例的结果应等于0.8。作为提示,我们收到以下提示:我们的计算仅需考虑出现在表之一中的三字组:点积(分子)是两边都存在的三字组的和(因为其他乘积为零),并且每个向量(分母)的大小均由其自身的三元组计算得出。示例:
{'<hi': 2, 'hie': 2, 'iep': 2, 'ep>': 2, '<ho': 1, 'hoe': 1, 'oer': 1, 'era': 1, 'ra>': 1}
我已经编写了一些代码,但是我找不到要使其正常工作的内容。这是我当前的代码:
import math
import numpy as np
def cosine_similarity(known, unknown):
i = 0
j = 0
waardesknown = list(known.values())
waardesunknown = list(unknown.values())
itemsknown = list(known.items())
itemsunknown = list(unknown.items())
for j in range(j < len(itemsunknown)):
for i in range(i < len(itemsknown)):
if itemsunknown[i] == itemsknown[j]:
i = i+1
dotproduct = np.dot(waardesknown, waardesunknown)
normknown = np.linalg.norm(waardesknown)
normunknown = np.linalg.norm(waardesunknown)
return dotproduct / (normknown*normunknown)
table1 = {"<he": 2, "het": 1}
table2 = {"<he": 2, "hem": 1}
cosine_similarity(table1, table2)
任何帮助将不胜感激
您碰巧事先有一个标准的三字母组列表吗?