NeuralKG是一个支持多种知识图谱表示学习/知识图谱嵌入(Knowledge Graph Embedding, KGE)模型的Python工具包,其中实现了多种传统知识图谱嵌入、基于图神经网络的知识图谱嵌入以及基于规则的知识图谱嵌入方法。同时为初学者提供了详细的文档以及一个开放共享的知识图谱表示学习社区网站。
本文利用此开源工具包实现简易、方便地在生物分子领域数据集上训练,仅需提供模型要求格式的数据集,设置所需模型、超参数即可开始训练。
安装方式详见NeuralKG。
数据介绍及处理
NeuralKG需要将数据处理为如下五个文件:
entities.dict
relations.dict
train.txt
valid.txt
test.txt
其中entities.dict
和relations.dict
每行为ID\t名称
,ID为从0开始的序号;train.txt
、valid.txt
、test.txt
每行为头节点\t关系\t尾节点
Gene Ontology
Gene Ontology(GO)提供了我们当前科学知识的计算表示,这些知识涉及从人类到细菌的许多不同生物体的基因功能(或者更确切地说,是由基因产生的蛋白质和非编码RNA分子)。它被广泛用于支持科学研究,并被成千上万的出版物引用。
GO也是一项以可计算形式表示大量生物医学知识的重大努力成果。GO与许多其他生物医学本体相关联,是生物科学和医学中应用计算机科学的基础。
GO是为了生物界有一个统一的数据交流语言,可以用一套统一的词汇表来描述生物学中的分子功能、生物过程和细胞成分的数据集。共包含47229个实体、9种关系,以及由它们组成的110146个三元组。GO描述了我们对生物学领域的三个方面的知识:
- 分子功能(Molecular Function,MF):主要是指基因产物分子所执行的任务,例如一个蛋白质可能是一个转录因子或是一个载体蛋白。
- 细胞组成(Cellular Component,CC):一般用来描述基因产物的发挥作用的位置,比如一个蛋白可能定位在细胞核中,也可能定位在核糖体中。
- 生物过程(Biological Process,BP):描述的是指基因产物所联系的一个大的生物功能,或者说是它们要完成的一个大的生物目标,例如有丝分裂或嘌呤代谢。
数据集详情及下载链接见About the GO,将其转换为所需格式即可。
配置文件
NeuralKG提供了两种配置参数的方式:使用YAML格式的配置文件调整各个参数,或者训练时用命令行调整。具体参数功能可见参数描述,可以很简单地通过litmodel_name
选择传统KGE、基于GNN、基于Rule的相关KGE模型,并由model_name
选择具体模型。
YAML配置文件可以参考GitHub中config的示例编写,运行方式:
python --load_config --config_path <your-config.yaml>
命令行可以参考GitHub中script的示例编写,运行方式:
bash <your-script.sh>
这里我们选择使用KGE模型中的TransE、ComplEx和Rotate进行相关实验测试模型。
实验结果
Model | MRR | Hit@1 | Hit@3 | Hit@10 |
---|---|---|---|---|
TransE | 0.342 | 0.199 | 0.435 | 0.584 |
ComplEx | 0.391 | 0.318 | 0.432 | 0.533 |
RotatE | 0.464 | 0.393 | 0.505 | 0.601 |