将行变成字典Python

问题描述 投票:0回答:1

对于我的项目,我必须使用两个字典作为输入进行余弦相似度计算,如下所示:

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)

任何帮助将不胜感激

python numpy cosine-similarity
1个回答
0
投票

您碰巧事先有一个标准的三字母组列表吗?

© www.soinside.com 2019 - 2024. All rights reserved.