NeuralKG的安装及简单demo使用(浙江大学开源知识图谱表示学习工具)

前言

记录NeuralKG的安装和使用,以及解决windows系统下的运行demo.py出现的问题。下载NeuralKG源码:https://github.com/zjukg/NeuralKG

1.安装NeuralKG

这里是主要按照readme文档安装的。
Step1 使用 Anaconda 创建虚拟环境,并进入虚拟环境

conda create -n neuralkg python=3.8
conda activate neuralkg

Step2 下载适用您CUDA版本的的PyTorch的DGL,我下载的适用cuda10.2:
下载PyTorch

conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=10.2 -c pytorch

下载DGL

pip install dgl-cu102 dglgo -f https://data.dgl.ai/wheels/repo.html

Step3 安装NeuralKG

pip install neuralkg

2.运行demo.py出现的问题及解决方案

切换到neuralkg环境下:

conda activate neuralkg

在NeuralKG-main文件夹下运行:

python demo.py 

在这里插入图片描述因为作者提供的demo.py用本机windows会出一些问题,需要改进代码,我这里主要改了三个地方:

2.1 UnicodeDecodeError: ‘gbk’ codec can’t decode byte exad in position 4: illegal multibyte sequence

问题:
在这里插入图片描述
解决方案:根据提示找到D:\anaconda\envs\neuralkg\lib\site-packages\neuralkg\data\DataPreprocess.py文件,在打开文件时,加上encoding=‘utf-8‘:

在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.2 AttributeError: Can’t pickle local object ‘ArgumentParser.init..identity’

问题:在这里插入图片描述解决方案:
TransE_demo_kg.yaml中将num_workers值改为0
在这里插入图片描述

2.3 OSError: [Errno 22] Invalid argunent: "D:/pycharnproject/NeuralKG-nain/output/link_prediction/deno_kg/TransE/epoch=1-Eval nrr:8.181.ckpt

问题:
在这里插入图片描述
解决方案:
demo.py中将文件名Eval|mrr改为Eval_mrr(windows文件命名中不支持|):

在这里插入图片描述# 一级标题

3.向量表示与预测

3.1 获取向量表示

每轮验证完成后,NeuralKG会在主目录下的’output’文件夹按照模型类别自动生成当前实验验证效果最好的checkpoint。它包含了实验的基本信息以及模型的embedding,可以通过pytorch的load函数加载模型获取这些信息。在demo.py中加上:

    #向量表示
model = torch.load(path)# path为epoch=xxx-Eval|mrr=x.xxx.ckpt'
rel_emb = model['state_dict']['model.rel_emb.weight']
ent_emb = model['state_dict']['model.ent_emb.weight']
print(rel_emb)
print(ent_emb)

向量表示结果:
在这里插入图片描述

3.2 链接预测

demo.py文件中有预测代码,结果:
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
基于Java的开源知识图谱是一种使用Java语言开发的开放源代码项目,用于构建和管理知识图谱知识图谱是一种语义网络,用于表示实体、关系和属性之间的关联关系,以提供结构化和语义化的知识表达方式。 使用Java作为开发语言,使得开源知识图谱能够充分利用Java生态系统中丰富的开发库和工具。通过基于Java的开源知识图谱,用户可以灵活地创建、存储、查询和分析大规模的知识图谱。Java的高性能和稳定性也可以保证知识图谱系统的效率和稳定运行。 基于Java的开源知识图谱通常会提供一些常用的功能和特性,例如: 1. 图数据库:Java的开源知识图谱通常使用图数据库作为数据存储和查询引擎。图数据库能够高效地处理图结构数据,并提供强大的查询和分析能力。 2. 知识表示使用Java的开源知识图谱可以将知识以图的形式表示,这样可以更好地表达实体、关系和属性之间的关系。 3. 查询语言:通常会提供一种查询语言,用于从知识图谱中检索相关的知识。这种查询语言通常使用类似于图遍历的方式,可以方便地在知识图谱中进行复杂的查询操作。 4. 可视化工具:Java的开源知识图谱通常会提供一些可视化工具,用于展示知识图谱的结构和内容。这些工具可以帮助用户更好地理解和分析知识图谱。 总之,基于Java的开源知识图谱提供了一种方便、高效、可扩展的方式来构建和管理知识图谱。通过利用Java强大的生态系统和丰富的工具,用户可以更好地应用知识图谱来解决各种复杂的知识管理和分析问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小羊学习路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值