Skip to content

Latest commit

 

History

History
301 lines (243 loc) · 12.2 KB

README_CN.md

File metadata and controls

301 lines (243 loc) · 12.2 KB

Pypi Pypi Documentation

用于归纳式知识图谱表示学习的Python工具包

❗️❗️❗️我们已经将NeuralKG-ind并入NeuralKG项目,并将于5月底删除此此仓库,请关注者移步NeuralKG❗️❗️❗️

NeuralKG-ind是一个基于python的归纳知识图表示学习工具包,它包括标准化过程丰富的现有模型解耦模块综合评估指标。我们为初学者提供了详细的文档

目录


😃最新消息

2022年2月

  • 我们发布了关于该工具包的论文 NeuralKG-ind: A Python Library for Inductive Knowledge Graph Representation Learning

工具概览

NeuralKG-ind工具包整体基于PyTorch Lightning框架,同时在NeuralKG的基础上进行开发,它提供了一个用于处理知识图谱上归纳任务的模型的通用工作流程。Neuralkg-ind具有以下特性:

  • 标准化过程。 根据现有方法,我们对构建归纳知识图谱表示学习模型的整个过程进行了标准化,包括数据处理、采样和训练以及链接预测和三元组分类任务的评估。我们还提供辅助功能,包括日志管理和超参数调整,用于模型训练和分析。

  • 丰富的现有方法。 我们重新实现了最近3年提出的5种归纳知识图谱表示学习的方法,包括GraILCoMPILESNRIRMPIMorsE,用户可以快速应用这些模型。

  • 解耦模块。 我们提供了许多解耦模块,如子图提取、节点标记、邻居聚合、图神经网络层和KGE评分方法,使用户能够快速地构建新的归纳知识图谱表示学习模型。

  • 长期支持。 我们为NeuralKG-ind提供长期的技术支持,包括维护使用文档、创建更好的使用体验、添加新的模型、解决存在的问题以及处理pull request。


运行示例

NeuralKG-ind在自定义知识图谱demo_kg上运行的示例。


实现模型

方法类别模型
传统知识图谱表示学习方法传统知识图谱嵌入TransE, TransH, TransR, ComplEx, DistMult, RotatE, ConvE, BoxE, CrossE, SimplE, HAKE, PairRE, DualE
基于图神经网络的知识图谱嵌入RGCN, KBAT, CompGCN, XTransE
基于规则的知识图谱嵌入ComplEx-NNE+AER, RUGE, IterE
归纳式知识图谱表示学习方法基于图神经网络的归纳式知识图谱嵌入GraIL, CoMPILE, SNRI, RMPI, MorsE

快速上手

下载

Step1 使用 Anaconda 创建虚拟环境,并进入虚拟环境

conda create -n neuralkg-ind python=3.8
conda activate neuralkg-ind

Step2 下载适用您CUDA版本的的PyTorch和DGL,下面我们提供一个基于CUDA 11.1的下载样例

  • 下载PyTorch
pip install torch==1.9.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html
  • 下载DGL
pip install dgl-cu111 dglgo -f https://data.dgl.ai/wheels/repo.html
  • 下载lmdb
pip install lmdb==1.4.0
  • 下载sklearn
pip install scikit-learn==1.2.1

Step3 安装NeuralKG-ind

  • From Pypi
pip install neuralkg_ind
  • From Source
git clone https://github.com/zjukg/NeuralKG-ind.git
cd NeuralKG-ind
python setup.py install

模型训练

# Use bash script
sh ./scripts/your-sh

# Use config
python main.py --load_config --config_path <your-config>

模型测试

# Testing AUC and AUC-PR 
python main.py --test_only --checkpoint_dir <your-model-path> --eval_task triple_classification 

# Testing MRR and hit@1,5,10
python main.py --test_only --checkpoint_dir <your-model-path> --eval_task link_prediction --test_db_path <your-db-path> 

超参调节

NeuralKG-ind使用Weights&Biases进行超参数调节,支持多种超参优化例如网格搜索、随机搜索和贝叶斯优化。搜索类型和搜索空间可以通过配置(*.yaml)文件进行设置。

下面展示了在FB15k-237上训练Grail,并使用贝叶斯搜索(bayes search)进行超参数调节的配置文件:

command:
  - ${env}
  - ${interpreter}
  - ${program}
  - ${args}
program: main.py
method: bayes
metric:
  goal: maximize
  name: Eval|auc
parameters:
  dataset_name:
    value: FB15K237
  model_name:
    value: Grail
  loss_name:
    values: [Margin_Loss]
  train_sampler_class:
    values: [SubSampler]
  emb_dim:
    values: [32, 64]
  lr:
    values: [1e-2, 5e-3, 1e-3]
  train_bs:
    values: [64, 128]
  num_neg:
    values: [16, 32]

复现结果

下面展示了使用NeuralKG-ind的不同模型在FB15k-237上的结果和在NELL-995上的部分结果,更多结果请访问此处

MethodFB15K-237_v1FB15K-237_v2
AUCAUC-PRMRRHits@1Hit@5Hit@10AUCAUC-PRMRRHits@1Hit@5Hit@10
GraIL0.8020.8210.4520.3590.5610.6240.8730.9000.6420.5390.7670.831
CoMPILE0.8000.8350.5160.4370.6000.6680.8760.9050.6170.5090.7410.813
SNRI0.7920.8830.4950.3900.6000.7200.8840.9060.6460.5360.7810.857
RMPI0.8030.8230.5320.4510.6200.6890.8510.8820.6320.5230.7630.830
MorsE0.8440.8470.5910.4700.7230.8330.9630.9600.7540.6430.8970.950

MethodFB15K-237_v3FB15K-237_v4
AUCAUC-PRMRRHits@1Hit@5Hit@10AUCAUC-PRMRRHits@1Hit@5Hit@10
GraIL0.8710.8990.6370.5300.7650.8280.9110.9210.6390.5210.7970.880
CoMPILE0.9060.9250.6700.5680.7960.8590.9270.9320.7040.6040.8310.894
SNRI0.8700.8840.6420.5250.7750.8710.8990.9160.6810.5730.8210.894
RMPI0.8760.8660.6620.5690.7670.8270.9050.9160.6470.5350.7870.866
MorsE0.9590.9520.7450.6370.8780.9540.9630.9520.7420.6620.8880.958

MethodNELL-995_v1NELL-995_v2
AUCAUC-PRMRRHits@1Hit@5Hit@10AUCAUC-PRMRRHits@1Hit@5Hit@10
GraIL0.8140.7500.4670.3950.5150.5750.9290.9470.7350.6240.8840.933
SNRI0.7370.7200.5230.4750.5450.5950.8640.8840.6300.5070.7740.863

Notebook教程

😃我们使用colab提供部分notebook供用户使用我们的工具包

Colab Notebook


详细文档

https://zjukg.github.io/NeuralKG-ind/neuralkg_ind.model.html


NeuralKG-ind核心团队

浙江大学: 张文,姚祯,陈名杨,黄志伟,陈华钧