一个用于训练和评估多模态知识图谱嵌入的软件包
项目描述
PyKEEN
PyKEEN (Python KnowlEdge Embdedgms) 是一个Python包,用于训练和评估知识图谱嵌入模型(包含多模态信息)。
安装 • 快速入门 • 数据集(37个) • 归纳数据集(5个) • 模型(40个) • 支持 • 引用
安装

PyKEEN的最新稳定版本需要Python 3.8以上。可以从PyPI下载并安装。
pip install pykeen
可以从GitHub的源代码直接安装PyKEEN的最新版本。
pip install git+https://github.com/pykeen/pykeen.git
有关安装的更多信息(例如,开发模式、Windows安装、Colab、Kaggle、附加功能)可以在安装文档中找到。
快速入门 
此示例展示了如何在数据集上训练模型并在另一个数据集上测试。
最快的方式是使用管道函数。它为该包的可扩展功能提供了一个高级入口。以下示例展示了如何在TransE模型上训练和评估Nations数据集。默认情况下,训练循环使用随机局部封闭世界假设(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
中实现的模型、数据集、训练模式、评估器和指标。
数据集
以下37个数据集内置在PyKEEN中。每个数据集的引用对应于描述数据集的论文、使用知识图谱嵌入模型首次发布的数据集的论文,或如果前两者都不可用,则为数据集的URL。如果您想使用自定义数据集,请参阅Bring Your Own Dataset教程。如果您建议将其他数据集包含在PyKEEN中,请告知我们此处。
归纳数据集
以下5个归纳数据集是PyKEEN内置的。
名称 | 文档 | 引用 |
---|---|---|
ILPC2022大型 | pykeen.datasets.ILPC2022Large |
加尔金等,2022 |
ILPC2022小型 | pykeen.datasets.ILPC2022Small |
加尔金等,2022 |
FB15k-237 | pykeen.datasets.InductiveFB15k237 |
特鲁等,2020 |
NELL | pykeen.datasets.InductiveNELL |
特鲁等,2020 |
WordNet-18(RR) | pykeen.datasets.InductiveWN18RR |
特鲁等,2020 |
表示
以下20种表示由PyKEEN实现。
交互
以下 34 个交互由 PyKEEN 实现。
模型
以下 40 个模型由 PyKEEN 实现。
损失函数
PyKEEN实现了以下15个损失函数。
名称 | 参考 | 描述 |
---|---|---|
对抗加权二元交叉熵(带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]_提出的焦点损失。 |
带加性边缘的InfoNCE损失 | pykeen.losses.InfoNCELoss |
[wang2022]_提出的带加性边缘的InfoNCE损失。 |
边缘排序 | pykeen.losses.MarginRankingLoss |
成对余弦损失(即边缘排序损失)。 |
均方误差 | pykeen.losses.MSELoss |
均方误差损失。 |
自我对抗负采样 | pykeen.losses.NSSALoss |
[sun2019]_提出的自我对抗负采样损失函数。 |
成对逻辑 | pykeen.losses.PairwiseLogisticLoss |
成对逻辑损失。 |
点wise Hinge | pykeen.losses.PointwiseHingeLoss |
点wise hinge损失。 |
软边缘排序 | pykeen.losses.SoftMarginRankingLoss |
软成对余弦损失(即软边缘排序损失)。 |
Softplus | pykeen.losses.SoftplusLoss |
点wise逻辑损失(即Softplus损失)。 |
Soft Pointwise Hinge | pykeen.losses.SoftPointwiseHingeLoss |
软点wise hinge损失。 |
正则化器
PyKEEN实现了以下6个正则化器。
名称 | 参考 | 描述 |
---|---|---|
combined | pykeen.regularizers.CombinedRegularizer |
正则化器的凸组合。 |
lp | pykeen.regularizers.LpRegularizer |
基于L_p范数的简单正则化器。 |
no | pykeen.regularizers.NoRegularizer |
不执行任何正则化的正则化器。 |
normlimit | pykeen.regularizers.NormLimitRegularizer |
对最大范数进行软约束的正则化器。 |
orthogonality | pykeen.regularizers.OrthogonalityRegularizer |
来自[wang2014]_的软正交约束的正则化器。 |
powersum | pykeen.regularizers.PowerSumRegularizer |
基于x^p的简单正则化器。 |
训练循环
PyKEEN实现了以下3个训练循环。
名称 | 参考 | 描述 |
---|---|---|
lcwa | pykeen.training.LCWATrainingLoop |
基于局部封闭世界假设(LCWA)的训练循环。 |
slcwa | pykeen.training.SLCWATrainingLoop |
使用随机局部封闭世界假设训练方法的训练循环。 |
symmetriclcwa | pykeen.training.SymmetricLCWATrainingLoop |
同时进行“对称”LCWA评分头和尾。 |
负采样器
PyKEEN实现了以下3个负采样器。
名称 | 参考 | 描述 |
---|---|---|
basic | pykeen.sampling.BasicNegativeSampler |
一个基本的负采样器。 |
bernoulli | pykeen.sampling.BernoulliNegativeSampler |
对[wang2014]_提出的伯努利负采样方法的实现。 |
pseudotyped | pykeen.sampling.PseudoTypedNegativeSampler |
一种考虑与关系共现的实体的采样器。 |
停止器
PyKEEN中实现了以下2个停止器。
名称 | 参考 | 描述 |
---|---|---|
早期 | pykeen.stoppers.EarlyStopper |
早期停止的 harness。 |
无操作 | pykeen.stoppers.NopStopper |
一个什么也不做的停止器。 |
评估器
PyKEEN中实现了以下5个评估器。
名称 | 参考 | 描述 |
---|---|---|
分类 | pykeen.evaluation.ClassificationEvaluator |
使用分类指标的评估器。 |
宏平均基于排名 | pykeen.evaluation.MacroRankBasedEvaluator |
宏平均排名评估。 |
ogb | pykeen.evaluation.OGBEvaluator |
应用自定义 OGB 评估的采样排名评估器。 |
基于排名 | pykeen.evaluation.RankBasedEvaluator |
用于 KGE 模型的排名评估器。 |
采样排名基于 | pykeen.evaluation.SampledRankBasedEvaluator |
使用采样负样本而不是所有负样本的排名评估器。 |
度量
PyKEEN中实现了以下44个度量。
名称 | 区间 | 方向 | 描述 | 类型 |
---|---|---|---|---|
准确率 | $[0, 1]$ | 📈 | 正确分类的数量与总数之比。 | 分类 |
受试者操作特征曲线下面积 | $[0, 1]$ | 📈 | 受试者操作特征曲线下的面积。 | 分类 |
平均精确度得分 | $[0, 1]$ | 📈 | 不同阈值下的平均精确度。 | 分类 |
平衡准确度得分 | $[0, 1]$ | 📈 | 每个类获得的召回率的平均值。 | 分类 |
诊断优势比 | $[0, ∞)$ | 📈 | 正似然比与负似然比之比。 | 分类 |
F1 分数 | $[0, 1]$ | 📈 | 精确率和召回率的调和平均数。 | 分类 |
假发现率 | $[0, 1]$ | 📉 | 预测为负的预测中为真阳性的比例。 | 分类 |
假阴性率 | $[0, 1]$ | 📉 | 一个真正阳性的三元组被预测为负的概率。 | 分类 |
假遗漏率 | $[0, 1]$ | 📉 | 预测为正的预测中为真阴性的比例。 | 分类 |
假阳性率 | $[0, 1]$ | 📉 | 一个真正负的三元组被预测为正的概率。 | 分类 |
福克斯-马洛斯指数 | $[0, 1]$ | 📈 | 福克斯-马洛斯指数。 | 分类 |
信息度 | $[-1, 1]$ | 📈 | 信息度指标。 | 分类 |
马修斯相关系数 | $[-1, 1]$ | 📈 | 马修斯相关系数(MCC)。 | 分类 |
负似然比 | $[0, ∞)$ | 📉 | 假阳性率与真阳性率之比。 | 分类 |
负预测值 | $[0, 1]$ | 📈 | 预测为负的预测中为真阴性的比例。 | 分类 |
得分数量 | $[0, ∞)$ | 📈 | 得分的数量。 | 分类 |
正似然比 | $[0, ∞)$ | 📈 | 真阳性率与假阳性率之比。 | 分类 |
正预测值 | $[0, 1]$ | 📈 | 预测为正的预测中为真阳性的比例。 | 分类 |
患病率阈值 | $[0, ∞)$ | 📉 | 患病率阈值。 | 分类 |
威胁分数 | $[0, 1]$ | 📈 | 精确率和召回率的调和平均数。 | 分类 |
真阴性率 | $[0, 1]$ | 📈 | 一个真正错误的三元组被预测为负的概率。 | 分类 |
真阳性率 | $[0, 1]$ | 📈 | 一个真正阳性的三元组被预测为正的概率。 | 分类 |
调整后的算术平均秩(AAMR) | $[0, 2)$ | 📉 | 所有秩的平均值除以它的期望值。 | 排名 |
调整后的算术平均秩指数(AAMRI) | $[-1, 1]$ | 📈 | 重新索引的调整后平均秩(AAMR) | 排名 |
调整后的几何平均秩指数(AGMRI) | $(\frac{-E[f]}{1-E[f]}, 1]$ | 📈 | 重新索引的调整后的几何平均秩(AGMRI) | 排名 |
调整后的 hits at K | $(\frac{-E[f]}{1-E[f]}, 1]$ | 📈 | 重新索引的调整后的 hits at K | 排名 |
调整后的逆调和平均秩 | $(\frac{-E[f]}{1-E[f]}, 1]$ | 📈 | 重新索引的调整后的 MRR | 排名 |
几何平均秩(GMR) | $[1, ∞)$ | 📉 | 所有秩的几何平均数。 | 排名 |
调和平均秩(HMR) | $[1, ∞)$ | 📉 | 所有秩的调和平均数。 | 排名 |
Hits @ K | $[0, 1]$ | 📈 | 不超过给定 k 的秩的相对频率。 | 排名 |
逆算术平均秩(IAMR) | $(0, 1]$ | 📈 | 所有秩的算术平均数的倒数。 | 排名 |
逆几何平均秩(IGMR) | $(0, 1]$ | 📈 | 所有秩的几何平均数的倒数。 | 排名 |
逆中位数秩 | $(0, 1]$ | 📈 | 所有秩的中位数的倒数。 | 排名 |
平均秩(MR) | $[1, ∞)$ | 📉 | 所有秩的算术平均数。 | 排名 |
平均倒数秩(MRR) | $(0, 1]$ | 📈 | 所有排名的调和平均的倒数。 | 排名 |
中值排名 | $[1, ∞)$ | 📉 | 所有排名的中值。 | 排名 |
z-几何平均排名(zGMR) | (-∞, ∞) | 📈 | z分数几何平均排名 | 排名 |
z-Hits at K | (-∞, ∞) | 📈 | z分数的hits at K | 排名 |
z-平均排名(zMR) | (-∞, ∞) | 📈 | z分数的平均排名 | 排名 |
z-平均倒数排名(zMRR) | (-∞, ∞) | 📈 | z分数的平均倒数排名 | 排名 |
跟踪器
PyKEEN实现了以下8个跟踪器。
名称 | 参考 | 描述 |
---|---|---|
控制台 | pykeen.trackers.ConsoleResultTracker |
一个直接打印到控制台的类。 |
csv | pykeen.trackers.CSVResultTracker |
将结果跟踪到CSV文件。 |
json | pykeen.trackers.JSONResultTracker |
将结果跟踪到JSON行文件。 |
mlflow | pykeen.trackers.MLFlowResultTracker |
MLflow的跟踪器。 |
neptune | pykeen.trackers.NeptuneResultTracker |
Neptune.ai的跟踪器。 |
python | pykeen.trackers.PythonResultTracker |
一个将所有内容存储在Python字典中的跟踪器。 |
tensorboard | pykeen.trackers.TensorBoardResultTracker |
TensorBoard的跟踪器。 |
wandb | pykeen.trackers.WANDBResultTracker |
Weights and Biases的跟踪器。 |
实验
重现
PyKEEN包含了一组经过精心挑选的实验设置,用于重现过去的里程碑式实验。它们可以像这样访问和运行
pykeen experiments reproduce tucker balazevic2019 fb15k
其中三个参数是模型名称、参考和数据集。输出目录可以可选地使用-d
设置。
消融
PyKEEN包括使用超参数优化模块指定消融研究的能力。它们可以像这样运行
pykeen experiments ablation ~/path/to/config.json
大规模重现性和基准测试研究
我们使用PyKEEN进行了一次大规模的重现性和基准测试研究,这些研究在我们的文章中进行了描述
@article{ali2020benchmarking,
author={Ali, Mehdi and Berrendorf, Max and Hoyt, Charles Tapley and Vermue, Laurent and Galkin, Mikhail and Sharifzadeh, Sahand and Fischer, Asja and Tresp, Volker and Lehmann, Jens},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
title={Bringing Light Into the Dark: A Large-scale Evaluation of Knowledge Graph Embedding Models under a Unified Framework},
year={2021},
pages={1-1},
doi={10.1109/TPAMI.2021.3124805}}
}
我们将所有代码、实验配置、结果和分析都发布在https://github.com/pykeen/benchmarking上,以支持我们对这些解释。
贡献
贡献,无论是通过提交问题、提出拉取请求还是通过分叉,都是受欢迎的。有关参与的信息,请参阅CONTRIBUTING.md。
如果您有任何问题,请使用GitHub讨论功能,在https://github.com/pykeen/pykeen/discussions/new上创建新讨论。
致谢
支持者
该项目得到了以下组织的支持(按字母顺序排列)
- Bayer
- CoronaWhy
- Enveda Biosciences
- Fraunhofer Institute for Algorithms and Scientific Computing
- Fraunhofer Institute for Intelligent Analysis and Information Systems
- Fraunhofer Center for Machine Learning
- Harvard Program in Therapeutic Science - Laboratory of Systems Pharmacology
- Ludwig-Maximilians-Universität München
- Munich Center for Machine Learning (MCML)
- Siemens
- Smart Data Analytics Research Group (University of Bonn & Fraunhofer IAIS)
- 丹麦技术大学 - DTU Compute - 认知系统部门
- 丹麦技术大学 - DTU Compute - 统计与分析部门
- 波恩大学
资助
PyKEEN的开发得到了以下资助的资助
资助机构 | 项目 | 拨款 |
---|---|---|
DARPA | 青年学者奖(PI:Benjamin Gyori) | W911NF2010255 |
DARPA | 自动化科学知识提取(ASKE) | HR00111990009 |
德国联邦教育与研究部(BMBF) | 基于知识图谱的机器学习(MLWin) | 01IS18050D |
德国联邦教育与研究部(BMBF) | Munich Center for Machine Learning (MCML) | 01IS18036A |
丹麦创新基金(Innovationsfonden) | 丹麦大数据分析驱动的创新中心(DABAI) | Grand Solutions |
徽标
PyKEEN徽标由Carina Steinborn设计。
引用
如果您在工作中发现PyKEEN很有用,请考虑引用我们的文章。
@article{ali2021pykeen,
author = {Ali, Mehdi and Berrendorf, Max and Hoyt, Charles Tapley and Vermue, Laurent and Sharifzadeh, Sahand and Tresp, Volker and Lehmann, Jens},
journal = {Journal of Machine Learning Research},
number = {82},
pages = {1--6},
title = {{PyKEEN 1.0: A Python Library for Training and Evaluating Knowledge Graph Embeddings}},
url = {http://jmlr.org/papers/v22/20-825.html},
volume = {22},
year = {2021}
}
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
pykeen-1.10.2.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6423f097e7c5785de6f0a88c84f79a77c7bc9667a4a83afdd0511a5a1f43a02c |
|
MD5 | 0e27711d43f40a38a81a9a463dbd3a0d |
|
BLAKE2b-256 | 28ed29eeebfdfaca210b8d78844a847c55cda0d7a2cf18a90f79c81f7ed67a7a |
pykeen-1.10.2-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fea286efbeb5d7d0905cd8a2e809d065f59459ba82a68cbcb9bcd3eaa055cb9b |
|
MD5 | bc97850dfafb1bc47ce0525ee4bf47da |
|
BLAKE2b-256 | 5411e9020e984ecdb5f16bb13fb4ab0f31c24a3b65de430bfe3893f8515a0c20 |