littlebot
Published on 2025-04-11 / 1 Visits
0

【源码】基于深度学习的实体链接预测系统

项目简介

本项目是基于深度学习的实体链接预测系统,目标是从知识图谱中预测尾实体。系统结合卷积神经网络(CNN)和图神经网络(GNN)等多种模型,支持多种实体和关系嵌入方式,可用于关系抽取、知识图谱补全等场景。

项目的主要特性和功能

  1. 模型多样性:支持Linear、LAN、GCN、GAT、R_GCN、GraphSAGE等多种实体和关系嵌入模型。
  2. 数据处理:能对数据集进行预处理,自动生成训练集、测试集和验证集。
  3. 训练与评估:支持模型训练和评估,提供Mean Rank、MRR和Hit等详细性能指标。
  4. 参数配置:参数配置灵活,支持学习率、批处理大小、早停机制等多种训练参数。

安装使用步骤

1. 安装依赖

在conda环境中,按照项目根目录下的requirements.txt文件安装所有依赖包: bash conda install --file requirements.txt

2. 安装中文版本的Elmo环境

解压ELMoForManyLangs.rar文件,在conda环境中执行以下命令安装Elmo软件: bash python setup.py install 在Elmo文件夹下放置对应语言的语言包,中文语言包可从以下链接下载: http://39.96.43.154/zhs.model.tar.bz2

3. 放置Glove文件

wiki.zh.glove.300d.txt文件放置到指定路径。

4. 数据集准备

data文件夹下建立数据集对应的文件夹,按固定格式导入名为dataset.txt的文件,同时新建ModelPredict文件夹。

5. 数据集预处理

执行dataset.py文件,生成测试集、训练集、验证集、实体和关系文件,在logs/Dataset文件夹中查看日志信息。

6. 模型训练

执行main.py文件进行模型训练,默认使用RGCN作为实体嵌入模型,训练日志信息可在logs/Model文件夹中查看。

7. 模型评估

logs/Model文件夹中查看最新的日志信息,评估模型的性能指标如Mean Rank、MRR和Hit。

8. 预测尾实体

predict.txt文件导入到Data/Predict路径中,执行test.py文件进行尾实体预测,结果文件将自动生成。

相关参数说明

  • CN:实体嵌入模型,默认RGCN,支持'Linear', 'GCN', 'LAN', 'RGCN', 'GAT'。
  • dataset:数据集,默认 'Cockpit'。
  • num_layers:GRU层的数量,默认 1。
  • nheads:多头注意力的数量,默认 3。
  • bidirectional:GRU是单向还是双向,默认 True。
  • relPoolType:关系embedding的最终获取方式,默认'last',支持'last', 'max', 'mean'。
  • entPoolType:实体embedding的初始化方式,默认'mean',支持'max', 'mean'。
  • lr:学习率,默认0.001。
  • batch_size:batch的大小,默认1024。
  • n_epochs:训练集的训练次数,默认 500。
  • eval_epoch:当训练集的训练次数是eval_epoch的倍数时,执行验证集,默认5。
  • Hits:默认[10, 30, 50]。
  • early_stop:早停,默认 10。
  • use_glove:是否用glove初始化字Embedding,默认为True。False时表示使用Elmo模型初始化Embedding。
  • n_bases:R-GCN时控制基分解的个数,默认 4。
  • predict_num:推测尾实体时,输出尾实体的数目,默认为10。
  • hidden_dim:隐藏节点的维数,默认为[300,300]。
  • num_neighbors:各层进行采样(放回式采样)的个数,默认为[10,10]。

常用命令

  • 执行训练模型: bash python main.py –CN=RGCN
  • 设置GAT中多头注意力: bash python main.py –CN=GAT –nheads=2
  • 设置RGCN中基分解的个数: bash python main.py -CN=RGCN -n_bases=3
  • 设置batch的大小: bash python main.py -batch_size=512
  • 设置GRU模型为单向: bash python main.py -bidirectional=False
  • 采用ELMO模型获取词向量: bash python main.py -use_glove=False
  • 设置GraphSAGE中,各阶的采样个数: bash python main.py -CN=GraphSAGE -num_neighbors=[5,10]

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】