Skip to main content

用于训练和评估多模态知识图嵌入的软件包

项目描述

派基恩

GitHub 操作 执照 DOI Optuna 集成 PyTorch 闪电 代码风格:黑色 贡献者契约

PyKEEN ( Python Knowl E dge E mbeddi N gs ) 是一个 Python 包,旨在训练和评估知识图谱嵌入模型(结合多模态信息)。

安装快速入门数据集 (36)归纳数据集 (5)模型 (44)支持引用

安装PyPI - Python 版本 派皮

可以从 PyPI下载和安装最新的 PyKEEN 稳定版本:

$ pip install pykeen

最新版本的 PyKEEN 可以直接从GitHub 上的源代码安装:

$ pip install git+https://github.com/pykeen/pykeen.git

有关安装的更多信息(例如,开发模式、Windows 安装、Colab、Kaggle、extras)可以在安装文档中找到。

快速开始文件状态

此示例说明如何在一个数据集上训练模型并在另一个数据集上进行测试。

启动和运行的最快方法是使用管道功能。它提供了对该包的可扩展功能的高级入口。以下示例展示了如何在国家数据集上训练和评估TransE 模型 。默认情况下,训练循环使用随机局部封闭世界假设 (sLCWA) 训练方法并使用基于等级的评估进行评估

from pykeen.pipeline import pipeline

result = pipeline(
    model='TransE',
    dataset='nations',
)

结果在PipelineResult数据类的实例中返回,该 数据类具有训练模型、训练循环、评估等的属性。请参阅有关使用您自己的数据集了解评估进行新颖的链接预测的教程。

PyKEEN 是可扩展的,因此:

  • 每个模型都有相同的 API,所以任何东西pykeen.models都可以放入
  • 每个训练循环都有相同的 API,因此pykeen.training.LCWATrainingLoop可以放入
  • 三元组工厂可以由用户生成from pykeen.triples.TriplesFactory

完整的文档可以在https://pykeen.readthedocs.io找到。

执行

以下是在pykeen.

数据集

PyKEEN 内置了以下 36 个数据集。每个数据集的引用对应于描述数据集的论文、使用具有知识图嵌入模型的数据集发表的第一篇论文,或者如果前两者都不可用,则对应于数据集的 URL。如果要使用自定义数据集,请参阅自带数据集教程。如果您对要包含在 PyKEEN 中的另一个数据集有任何建议,请 在此处告知我们。

姓名 文档 引文 实体 关系 三元组
Aristo-v4 pykeen.datasets.AristoV4 等人,2021 42016 1593 279425
生物知识库 pykeen.datasets.BioKG 沃尔什等人,2019 105524 17 2067997
临床知识图谱 pykeen.datasets.CKG 桑托斯等人,2020 7617419 11 26691525
CN3l 家族 pykeen.datasets.CN3l 等人,2017 3206 42 21777
法典(大) pykeen.datasets.CoDExLarge 萨法维等人,2020 77951 69 612437
法典(中) pykeen.datasets.CoDExMedium 萨法维等人,2020 17050 51 206205
法典(小) pykeen.datasets.CoDExSmall 萨法维等人,2020 2034 42 36543
概念网 pykeen.datasets.ConceptNet 斯佩尔等人,2017 28370083 50 34074917
国家 pykeen.datasets.Countries Bouchard等人,2015 年 271 2 1158
常识知识图谱 pykeen.datasets.CSKG 伊利耶夫斯基等人,2020 2087833 58 4598728
DB100K pykeen.datasets.DB100K 等人,2018 99604 470 697479
DBpedia50 pykeen.datasets.DBpedia50 等人,2017 24624 351 34421
药物重新定位知识图谱 pykeen.datasets.DRKG gnn4dr/DRKG 97238 107 5874257
FB15k pykeen.datasets.FB15k Bordes等人,2013 年 14951 1345 592213
FB15k-237 pykeen.datasets.FB15k237 Toutanova等人,2015 年 14505 237 310079
全球生物相互作用 pykeen.datasets.Globi Poelen等人,2014 年 404207 39 1966385
海提内 pykeen.datasets.Hetionet Himmelstein等人,2017 年 45158 24 2250197
亲属关系 pykeen.datasets.Kinships 肯普等人,2006 104 25 10686
国家 pykeen.datasets.Nations ZhenfengLei/KGDatasets 14 55 1992
国家L pykeen.datasets.NationsLiteral pykeen/pykeen 14 55 1992
OGB BioKG pykeen.datasets.OGBBioKG 等人,2020 45085 51 5088433
OGB WikiKG2 pykeen.datasets.OGBWikiKG2 等人,2020 2500604 535 17137181
开放生物链接 pykeen.datasets.OpenBioLink 布莱特等人,2020 180992 28 4563407
OpenBioLink LQ pykeen.datasets.OpenBioLinkLQ 布莱特等人,2020 480876 32 27320889
OpenEA 家族 pykeen.datasets.OpenEA 等人,2020 15000 248 38265
药学KG pykeen.datasets.PharmKG 等人,2020 188296 39 1093236
药学KG8k pykeen.datasets.PharmKG8k 等人,2020 7247 28 485787
PrimeKG pykeen.datasets.PrimeKG 钱达克等人,2022 129375 30 8100498
统一医学语言系统 pykeen.datasets.UMLS ZhenfengLei/KGDatasets 135 46 6529
WD50K(三联) pykeen.datasets.WD50KT 加尔金等人,2020 40107 473 232344
维基数据5M pykeen.datasets.Wikidata5M ,2019 4594149 822 20624239
WK3l-120k 系列 pykeen.datasets.WK3l120k 等人,2017 119748 3109 1375406
WK3l-15k 系列 pykeen.datasets.WK3l15k 等人,2017 15126 1841 209041
WordNet-18 pykeen.datasets.WN18 Bordes等人,2014 年 40943 18 151442
WordNet-18 (RR) pykeen.datasets.WN18RR Toutanova等人,2015 年 40559 11 92583
YAGO3-10 pykeen.datasets.YAGO310 Mahdisoltani等人,2015 年 123143 37 1089000

归纳数据集

PyKEEN 内置了以下 5 个归纳数据集。

姓名 文档 引文
ILPC2022 大型 pykeen.datasets.ILPC2022Large 加尔金等人,2022
ILPC2022 小型 pykeen.datasets.ILPC2022Small 加尔金等人,2022
FB15k-237 pykeen.datasets.InductiveFB15k237 泰鲁等人,2020
内尔 pykeen.datasets.InductiveNELL 泰鲁等人,2020
WordNet-18 (RR) pykeen.datasets.InductiveWN18RR 泰鲁等人,2020

楷模

PyKEEN 实现了以下 44 个模型。

姓名 模型 相互作用 引文
AutoSF pykeen.models.AutoSF pykeen.nn.AutoSFInteraction 等人。, 2020
方框E pykeen.models.BoxE pykeen.nn.BoxEInteraction 阿布德等人。, 2020
典型张量分解 pykeen.models.CP pykeen.nn.CPInteraction 拉克鲁瓦等人。, 2018
康普GCN pykeen.models.CompGCN Vashishth等人。, 2020
复杂的 pykeen.models.ComplEx pykeen.nn.ComplExInteraction 特鲁永等人。, 2016
复杂文字 pykeen.models.ComplExLiteral pykeen.nn.ComplExInteraction 克里斯蒂亚迪等人。, 2018
会议 pykeen.models.ConvE pykeen.nn.ConvEInteraction 德特默斯等人。, 2018
卷积KB pykeen.models.ConvKB pykeen.nn.ConvKBInteraction 等人。, 2018
同现过滤模型 pykeen.models.CooccurrenceFilteredModel 贝伦多夫等人。, 2022
交叉E pykeen.models.CrossE pykeen.nn.CrossEInteraction 等人。, 2019
区划 pykeen.models.DistMA pykeen.nn.DistMAInteraction 等人。, 2019
DistMult pykeen.models.DistMult pykeen.nn.DistMultInteraction 等人。, 2014
DistMult 字面量 pykeen.models.DistMultLiteral pykeen.nn.DistMultInteraction 克里斯蒂亚迪等人。, 2018
DistMult 文字(门控) pykeen.models.DistMultLiteralGated pykeen.nn.DistMultInteraction 克里斯蒂亚迪等人。, 2018
ER-MLP pykeen.models.ERMLP pykeen.nn.ERMLPInteraction 等人。, 2014
ER-MLP (E) pykeen.models.ERMLPE pykeen.nn.ERMLPEInteraction 谢里夫扎德等人。, 2019
固定模型 pykeen.models.FixedModel 贝伦多夫等人。, 2021
pykeen.models.HolE pykeen.nn.HolEInteraction 等。, 2016
感应节点片 pykeen.models.InductiveNodePiece 加尔金等人。, 2021
InductiveNodePieceGNN pykeen.models.InductiveNodePieceGNN 加尔金等人。, 2021
KG2E pykeen.models.KG2E pykeen.nn.KG2EInteraction 等人。, 2015
线性RE pykeen.nn.LineaREInteraction 等人。, 2020
穆雷 pykeen.models.MuRE pykeen.nn.MuREInteraction 巴拉热维奇等人。, 2019
多线性塔克 pykeen.nn.MultiLinearTuckerInteraction 塔克等人。, 1966
新台币 pykeen.models.NTN pykeen.nn.NTNInteraction 索切尔等人。, 2013
节点片 pykeen.models.NodePiece 加尔金等人。, 2021
对RE pykeen.models.PairRE pykeen.nn.PairREInteraction 超等人。, 2020
项目 pykeen.models.ProjE pykeen.nn.ProjEInteraction 等人。, 2017
季铵盐 pykeen.models.QuatE pykeen.nn.QuatEInteraction 等人。, 2019
R-GCN pykeen.models.RGCN Schlichtkrull等人。, 2018
重新校准 pykeen.models.RESCAL pykeen.nn.RESCALInteraction 等。, 2011
旋转 pykeen.models.RotatE pykeen.nn.RotatEInteraction 等人。, 2019
简单的 pykeen.models.SimplE pykeen.nn.SimplEInteraction 卡泽米等人。, 2018
结构化嵌入 pykeen.models.SE pykeen.nn.SEInteraction Bordes等人。, 2011
环面 pykeen.models.TorusE pykeen.nn.TorusEInteraction 惠比寿等人。, 2018
转D pykeen.models.TransD pykeen.nn.TransDInteraction 等人。, 2015
跨电 pykeen.models.TransE pykeen.nn.TransEInteraction Bordes等人。, 2013
转F pykeen.models.TransF pykeen.nn.TransFInteraction 等人。, 2016
转H pykeen.models.TransH pykeen.nn.TransHInteraction 等人。, 2014
反转录 pykeen.models.TransR pykeen.nn.TransRInteraction 等人。, 2015
变压器 pykeen.nn.TransformerInteraction 加尔金等人。, 2020
三重RE pykeen.nn.TripleREInteraction 等人。, 2021
塔克 pykeen.models.TuckER pykeen.nn.TuckerInteraction 巴拉热维奇等人。, 2019
非结构化模型 pykeen.models.UM pykeen.nn.UMInteraction Bordes等人。, 2014

损失

以下 15 种损失由 PyKEEN 实现。

姓名 参考 描述
对抗加权二元交叉熵(带 logits) pykeen.losses.AdversarialBCEWithLogitsLoss 对抗加权的 BCE 损失。
二元交叉熵(在 sigmoid 之后) pykeen.losses.BCEAfterSigmoidLoss 显式 Sigmoid + BCE 损失的数值不稳定版本。
二进制交叉熵(带 logits) pykeen.losses.BCEWithLogitsLoss 二元交叉熵损失。
交叉熵 pykeen.losses.CrossEntropyLoss 评估softmax输出后的交叉熵的交叉熵损失。
双倍保证金 pykeen.losses.DoubleMarginLoss 基于限制的评分损失,来自 [sun2018]_ 的正面和负面元素的边距分开。
焦点 pykeen.losses.FocalLoss [lin2018]_提出的focal loss。
附加边际的 InfoNCE 损失 pykeen.losses.InfoNCELoss [wang2022]_ 提出的具有附加边际的 InfoNCE 损失。
保证金排名 pykeen.losses.MarginRankingLoss 成对铰链损失(即边际排名损失)。
均方误差 pykeen.losses.MSELoss 均方误差损失。
自我对抗负采样 pykeen.losses.NSSALoss [sun2019]_提出的自对抗负采样损失函数。
成对逻辑 pykeen.losses.PairwiseLogisticLoss 成对逻辑损失。
逐点铰链 pykeen.losses.PointwiseHingeLoss 逐点铰链损失。
软保证金排名 pykeen.losses.SoftMarginRankingLoss 软成对铰链损失(即软边距排名损失)。
软加 pykeen.losses.SoftplusLoss 逐点逻辑损失(即 softplus 损失)。
软点铰链 pykeen.losses.SoftPointwiseHingeLoss 软点状铰链损失。

正则化器

PyKEEN 实现了以下 6 个正则化器。

姓名 参考 描述
结合 pykeen.regularizers.CombinedRegularizer 正则化器的凸组合。
LP pykeen.regularizers.LpRegularizer 一个简单的基于 L_p 范数的正则化器。
pykeen.regularizers.NoRegularizer 不执行任何正则化的正则化器。
规范限制 pykeen.regularizers.NormLimitRegularizer 一个正则化器,它对最大范数制定软约束。
正交性 pykeen.regularizers.OrthogonalityRegularizer 来自 [wang2014]_ 的软正交约束的正则化器。
幂和 pykeen.regularizers.PowerSumRegularizer 一个简单的基于 x^p 的正则化器。

训练循环

以下 2 个训练循环在 PyKEEN 中实现。

姓名 参考 描述
LCWA pykeen.training.LCWATrainingLoop 基于局部封闭世界假设 (LCWA) 的训练循环。
硅藻土 pykeen.training.SLCWATrainingLoop 使用随机局部封闭世界假设训练方法的训练循环。

负采样器

PyKEEN 中实现了以下 3 个负采样器。

姓名 参考 描述
基本的 pykeen.sampling.BasicNegativeSampler 一个基本的负采样器。
伯努利 pykeen.sampling.BernoulliNegativeSampler [wang2014]_提出的伯努利负采样方法的实现。
假型 pykeen.sampling.PseudoTypedNegativeSampler 一个采样器,它说明哪些实体与关系同时出现。

塞子

以下 2 个停止器在 PyKEEN 中实现。

姓名 参考 描述
早期的 pykeen.stoppers.EarlyStopper 用于提前停止的安全带。
pykeen.stoppers.NopStopper 一个什么都不做的塞子。

评价者

PyKEEN 中实现了以下 4 个评估器。

姓名 参考 描述
分类 pykeen.evaluation.ClassificationEvaluator 使用分类指标的评估器。
基于宏观等级 pykeen.evaluation.MacroRankBasedEvaluator 基于宏观平均等级的评估。
基于等级的 pykeen.evaluation.RankBasedEvaluator KGE 模型的基于等级的评估器。
以抽样为基础 pykeen.evaluation.SampledRankBasedEvaluator 使用采样负数而不是所有负数的基于等级的评估器。

指标

以下 44 个指标在 PyKEEN 中实现。

姓名 间隔 方向 描述 类型
AUC-ROC [0, 1]