实体对齐基础:基于Neo4j 图数据库的知识图谱的关联对齐-最小编辑距离-jacard算法

最近在做知识图谱的时候,需要用到实体对齐的方法,后面发现了用最小编辑距离和jacard可以做一个实体对齐的算法,原代码见参考文献,但是源代码写得有点粗糙,我这里重新整理了一下,最小编辑距离代码:

def edit_distance(word1, word2):
    len1 = len(word1)
    len2 = len(word2)
    dp = np.zeros((len1 + 1, len2 + 1))
    for i in range(len1 + 1):
        dp[i][0] = i
    for j in range(len2 + 1):
        dp[0][j] = j
    for i in range(1, len1 + 1):
        for j in range(1, len2 + 1):
            delta = 0 if word1[i - 1] == word2[j - 1] else 1
            dp[i][j] = min(dp[i - 1][j - 1] + delta, min(dp[i - 1][j] + 1, dp[i][j - 1] + 1))
    return dp[len1][len2]

jacard代码:

def Jaccrad(terms_model,reference):
    grams_reference = set(reference)
    grams_model = set(terms_model)
    temp = 0
    for i in grams_reference:
        if i in grams_model:
            temp = temp + 1
    fenmu = len(grams_model) + len(grams_reference) - temp
    jaccard_coefficient = float(temp / fenmu)
    return jaccard_coefficient

测试代码:

blists=["vipkid","vipki",'vip','福建省委']
for i in range(len(blists)):
    for j in range(0,i):
        a = blists[i]
        b = blists[j]
        print(blists[i],blists[j])
        td = Jaccrad(a, b)
#         print(td)
        std =edit_distance(a, b)/max(len(a),len(b))
        fy = 1-std
#         print(fy)
        huizon = (td+fy)/2
        print('avg_sim: ', huizon)

输出为:

vipki vipkid
avg_sim:  0.8166666666666667
vip vipkid
avg_sim:  0.55
vip vipki
avg_sim:  0.675
福建省委 vipkid
avg_sim:  0.0
福建省委 vipki
avg_sim:  0.0
福建省委 vip
avg_sim:  0.0

效果还是可以的,当然也可以举出反例,然后再选择合适的阈值来进行实体对齐了哈,这里阈值就自己定了,下游也就自己写咯

参考文献

[1].基于Neo4j 图数据库的知识图谱的关联对齐(实体对齐)——上篇. https://blog.csdn.net/for_yayun/article/details/100292617

 

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip、 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 基于Neo4j数据库的医疗知识图谱智能问答机器人python源码+项目说明.zip 【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也可作为大作业、课程设计、毕设项目、初期项目立项演示等,欢迎下载,互相学习,共同进步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值