用于训练和评估多模态知识图嵌入的软件包
项目描述
派基恩
PyKEEN ( Python Knowl E dge E mbeddi N gs ) 是一个 Python 包,旨在训练和评估知识图谱嵌入模型(结合多模态信息)。
安装• 快速入门• 数据集 (36) • 归纳数据集 (5) • 模型 (44) • 支持• 引用
安装

可以从 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 中的另一个数据集有任何建议,请 在此处告知我们。
归纳数据集
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 个模型。
损失
以下 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] |