pykeen

GitHub
2k 215 简单 1 次阅读 今天MIT数据工具开发框架
AI 解读 由 AI 自动生成,仅供参考

PyKEEN 是一个专为知识图谱嵌入(Knowledge Graph Embeddings)学习与评估打造的 Python 开源库。它旨在解决从复杂的关系数据中自动学习实体与关系向量表示的难题,帮助机器更好地理解和分析结构化知识。无论是进行模型训练、超参数优化还是最终的效果评估,PyKEEN 都提供了一套完整且高效的解决方案。

这款工具特别适合人工智能研究人员、数据科学家以及从事知识图谱开发的工程师使用。如果你需要快速复现经典算法,或是在多模态信息融合场景下探索新的模型架构,PyKEEN 都能提供强有力的支持。

在技术亮点方面,PyKEEN 内置了多达 40 种主流嵌入模型和 37 个标准数据集,让用户无需繁琐的数据预处理即可直接上手。它深度集成了 PyTorch Lightning 以简化训练流程,并原生支持 Optuna 进行自动化超参数搜索,显著提升了实验效率。此外,其独特的“管道(Pipeline)”接口设计,允许用户仅用几行代码即可完成从模型加载、训练到评估的全过程,极大地降低了研究门槛。凭借灵活的扩展性和严谨的评估体系,PyKEEN 已成为知识表示学习领域值得信赖的得力助手。

使用场景

某生物制药公司的数据科学团队正试图从分散的医学文献和实验报告中构建知识图谱,以挖掘潜在的“药物 - 靶点”相互作用关系。

没有 pykeen 时

  • 重复造轮子成本高:团队需手动编写复杂的 PyTorch 代码来实现 TransE 或 RotatE 等经典算法,耗时数周且容易引入底层 Bug。
  • 模型对比困难:缺乏统一框架,每次切换不同嵌入模型或调整训练策略(如负采样方式)都需要重构大量代码,难以快速验证哪种方案最优。
  • 评估标准不统一:自定义的评估脚本往往遗漏关键的排名指标(如 MRR、Hits@K),导致不同实验结果之间缺乏可比性,影响决策准确性。
  • 超参数调优繁琐:缺少自动化集成,研究人员只能凭经验手动网格搜索超参数,效率极低且容易陷入局部最优。

使用 pykeen 后

  • 开箱即用的模型库:直接调用内置的 40+ 种预置模型(如 TransE、ComplEx),仅需几行代码即可启动训练,将开发周期从数周缩短至数小时。
  • 灵活的流水线配置:通过 pipeline 函数一键切换模型、数据集及训练循环假设(如 sLCWA),轻松完成多模型横向对比实验。
  • 标准化的评估体系:自动输出包含 MR、MRR 及 Hits@N 在内的完整排名评估报告,确保实验结果严谨且可复现。
  • 集成自动化调优:原生集成 Optuna,自动搜索最佳超参数组合,显著提升了模型在稀疏生物医学数据上的预测精度。

pykeen 将原本繁琐的知识图谱嵌入研发流程转化为标准化的工业级流水线,让团队能专注于业务洞察而非底层算法实现。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明 (基于 PyTorch,可选支持 CUDA)

内存

未说明

依赖
notesREADME 中明确提到了支持 Windows 安装。该工具基于 PyTorch 和 PyTorch Lightning,因此 GPU 支持取决于本地 PyTorch 的安装配置(非强制必需,但推荐用于加速训练)。具体显存和内存需求取决于所选数据集大小(从几千到数千万三元组不等)及模型复杂度,文中未给出统一硬件指标。
python3.9+
torch
pytorch-lightning
optuna
scipy
pandas
numpy
click
tqdm
pykeen hero image

快速开始

PyKEEN

GitHub Actions License DOI Optuna integrated PyTorch Lightning Ruff Contributor Covenant

PyKEEN (Python KnowlEdge EmbeddiNgs) 是一个 Python 软件包,旨在训练和评估知识图嵌入模型(包含多模态信息)。

安装快速入门数据集(37个)归纳式数据集(5个)模型(40个)支持引用

安装 PyPI - Python 版本 PyPI

PyKEEN 的最新稳定版本需要 Python 3.9 或更高版本。可以通过 PyPI 下载并安装:

pip install pykeen

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

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

有关安装的更多信息(例如开发模式、Windows 安装、Colab、Kaggle、附加组件等),请参阅安装文档

快速入门 文档状态

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

最快上手的方式是使用 pipeline 函数。它提供了一个高层次的入口,用于访问该软件包的可扩展功能。以下示例展示了如何在 Nations 数据集中训练和评估 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 内置了以下 37 个数据集。每个数据集的引用分别对应于描述该数据集的论文、首次使用该数据集进行知识图嵌入模型研究的论文,或者如果前两者均不存在,则为数据集的 URL。如果您希望使用自定义数据集,请参阅自带数据集教程。如果您有其他建议希望添加到 PyKEEN 中的数据集,请在此处告知我们:这里

名称 文档 引用 实体数 关系数 三元组数
Aristo-v4 pykeen.datasets.AristoV4 Chen et al., 2021 42016 1593 279425
BioKG pykeen.datasets.BioKG Walsh et al., 2019 105524 17 2067997
临床知识图谱 pykeen.datasets.CKG Santos et al., 2020 7617419 11 26691525
CN3l 家族 pykeen.datasets.CN3l Chen et al., 2017 3206 42 21777
CoDEx (large) pykeen.datasets.CoDExLarge Safavi et al., 2020 77951 69 612437
CoDEx (medium) pykeen.datasets.CoDExMedium Safavi et al., 2020 17050 51 206205
CoDEx (small) pykeen.datasets.CoDExSmall Safavi et al., 2020 2034 42 36543
ConceptNet pykeen.datasets.ConceptNet Speer et al., 2017 28370083 50 34074917
国家 pykeen.datasets.Countries Bouchard et al., 2015 271 2 1158
常识知识图谱 pykeen.datasets.CSKG Ilievski et al., 2020 2087833 58 4598728
DB100K pykeen.datasets.DB100K Ding et al., 2018 99604 470 697479
DBpedia50 pykeen.datasets.DBpedia50 Shi et al., 2017 24624 351 34421
药物重定位知识图谱 pykeen.datasets.DRKG gnn4dr/DRKG 97238 107 5874257
FB15k pykeen.datasets.FB15k Bordes et al., 2013 14951 1345 592213
FB15k-237 pykeen.datasets.FB15k237 Toutanova et al., 2015 14505 237 310079
全球生物相互作用 pykeen.datasets.Globi Poelen et al., 2014 404207 39 1966385
Hetionet pykeen.datasets.Hetionet Himmelstein et al., 2017 45158 24 2250197
亲属关系 pykeen.datasets.Kinships Kemp et al., 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 Hu et al., 2020 93773 51 5088434
OGB WikiKG2 pykeen.datasets.OGBWikiKG2 Hu et al., 2020 2500604 535 17137181
OpenBioLink pykeen.datasets.OpenBioLink Breit et al., 2020 180992 28 4563407
OpenBioLink LQ pykeen.datasets.OpenBioLinkLQ Breit et al., 2020 480876 32 27320889
OpenEA 家族 pykeen.datasets.OpenEA Sun et al., 2020 15000 248 38265
PharMeBINet pykeen.datasets.PharMeBINet Königs et al., 2022 2869407 208 15883653
PharmKG pykeen.datasets.PharmKG Zheng et al., 2020 188296 39 1093236
PharmKG8k pykeen.datasets.PharmKG8k Zheng et al., 2020 7247 28 485787
PrimeKG pykeen.datasets.PrimeKG Chandak et al., 2022 129375 30 8100498
统一医学语言系统 pykeen.datasets.UMLS ZhenfengLei/KGDatasets 135 46 6529
WD50K (三元组) pykeen.datasets.WD50KT Galkin et al., 2020 40107 473 232344
Wikidata5M pykeen.datasets.Wikidata5M Wang et al., 2019 4594149 822 20624239
WK3l-120k 家族 pykeen.datasets.WK3l120k Chen et al., 2017 119748 3109 1375406
WK3l-15k 家族 pykeen.datasets.WK3l15k Chen et al., 2017 15126 1841 209041
WordNet-18 pykeen.datasets.WN18 Bordes et al., 2014 40943 18 151442
WordNet-18 (RR) pykeen.datasets.WN18RR Toutanova et al., 2015 40559 11 92583
YAGO3-10 pykeen.datasets.YAGO310 Mahdisoltani et al., 2015 123143 37 1089000

归纳型数据集

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

名称 文档 引用
ILPC2022 Large pykeen.datasets.ILPC2022Large Galkin , 2022
ILPC2022 Small pykeen.datasets.ILPC2022Small Galkin , 2022
FB15k-237 pykeen.datasets.InductiveFB15k237 Teru , 2020
NELL pykeen.datasets.InductiveNELL Teru , 2020
WordNet-18 (RR) pykeen.datasets.InductiveWN18RR Teru , 2020

表征方法

PyKEEN 实现了以下 22 种表征方法。

名称 参考文献
后填 pykeen.nn.BackfillRepresentation
文本编码 pykeen.nn.BiomedicalCURIERepresentation
组合 pykeen.nn.CombinedRepresentation
嵌入 pykeen.nn.Embedding
EmbeddingBag pykeen.nn.EmbeddingBagRepresentation
特征化消息传递 pykeen.nn.FeaturizedMessagePassingRepresentation
低秩嵌入 pykeen.nn.LowRankRepresentation
多重后填 pykeen.nn.MultiBackfillRepresentation
NodePiece pykeen.nn.NodePieceRepresentation
分区 pykeen.nn.PartitionRepresentation
R-GCN pykeen.nn.RGCNRepresentation
简单消息传递 pykeen.nn.SimpleMessagePassingRepresentation
CompGCN pykeen.nn.SingleCompGCNRepresentation
子集表征 pykeen.nn.SubsetRepresentation
张量训练 pykeen.nn.TensorTrainRepresentation
文本编码 pykeen.nn.TextRepresentation
分词 pykeen.nn.TokenizationRepresentation
转换 pykeen.nn.TransformedRepresentation
类型化消息传递 pykeen.nn.TypedMessagePassingRepresentation
视觉 pykeen.nn.VisualRepresentation
Wikidata 文本编码 pykeen.nn.WikidataTextRepresentation
Wikidata 视觉 pykeen.nn.WikidataVisualRepresentation

相互作用模型

PyKEEN 实现了以下 34 种相互作用模型。

名称 参考 引用
AutoSF pykeen.nn.AutoSFInteraction Zhang et al., 2020
BoxE pykeen.nn.BoxEInteraction Abboud et al., 2020
ComplEx pykeen.nn.ComplExInteraction Trouillon et al., 2016
ConvE pykeen.nn.ConvEInteraction Dettmers et al., 2018
ConvKB pykeen.nn.ConvKBInteraction Nguyen et al., 2018
Canonical Tensor Decomposition pykeen.nn.CPInteraction Lacroix et al., 2018
CrossE pykeen.nn.CrossEInteraction Zhang et al., 2019
DistMA pykeen.nn.DistMAInteraction Shi et al., 2019
DistMult pykeen.nn.DistMultInteraction Yang et al., 2014
ER-MLP pykeen.nn.ERMLPInteraction Dong et al., 2014
ER-MLP (E) pykeen.nn.ERMLPEInteraction Sharifzadeh et al., 2019
HolE pykeen.nn.HolEInteraction Nickel et al., 2016
KG2E pykeen.nn.KG2EInteraction He et al., 2015
LineaRE pykeen.nn.LineaREInteraction Peng et al., 2020
MultiLinearTucker pykeen.nn.MultiLinearTuckerInteraction Tucker et al., 1966
MuRE pykeen.nn.MuREInteraction Balažević et al., 2019
NTN pykeen.nn.NTNInteraction Socher et al., 2013
PairRE pykeen.nn.PairREInteraction Chao et al., 2020
ProjE pykeen.nn.ProjEInteraction Shi et al., 2017
QuatE pykeen.nn.QuatEInteraction Zhang et al., 2019
RESCAL pykeen.nn.RESCALInteraction Nickel et al., 2011
RotatE pykeen.nn.RotatEInteraction Sun et al., 2019
Structured Embedding pykeen.nn.SEInteraction Bordes et al., 2011
SimplE pykeen.nn.SimplEInteraction Kazemi et al., 2018
TorusE pykeen.nn.TorusEInteraction Ebisu et al., 2018
TransD pykeen.nn.TransDInteraction Ji et al., 2015
TransE pykeen.nn.TransEInteraction Bordes et al., 2013
TransF pykeen.nn.TransFInteraction Feng et al., 2016
Transformer pykeen.nn.TransformerInteraction Galkin et al., 2020
TransH pykeen.nn.TransHInteraction Wang et al., 2014
TransR pykeen.nn.TransRInteraction Lin et al., 2015
TripleRE pykeen.nn.TripleREInteraction Yu et al., 2021
TuckER pykeen.nn.TuckERInteraction Balažević et al., 2019
Unstructured Model pykeen.nn.UMInteraction Bordes et al., 2014

Models

The following 40 models are implemented by PyKEEN.

Name Model Citation
AutoSF pykeen.models.AutoSF Zhang et al., 2020
BoxE pykeen.models.BoxE Abboud et al., 2020
Canonical Tensor Decomposition pykeen.models.CP Lacroix et al., 2018
CompGCN pykeen.models.CompGCN Vashishth et al., 2020
ComplEx pykeen.models.ComplEx Trouillon et al., 2016
ComplEx Literal pykeen.models.ComplExLiteral Kristiadi et al., 2018
ConvE pykeen.models.ConvE Dettmers et al., 2018
ConvKB pykeen.models.ConvKB Nguyen et al., 2018
CooccurrenceFiltered pykeen.models.CooccurrenceFilteredModel Berrendorf et al., 2022
CrossE pykeen.models.CrossE Zhang et al., 2019
DistMA pykeen.models.DistMA Shi et al., 2019
DistMult pykeen.models.DistMult Yang et al., 2014
DistMult Literal pykeen.models.DistMultLiteral Kristiadi et al., 2018
DistMult Literal (Gated) pykeen.models.DistMultLiteralGated Kristiadi et al., 2018
ER-MLP pykeen.models.ERMLP Dong et al., 2014
ER-MLP (E) pykeen.models.ERMLPE Sharifzadeh et al., 2019
Fixed Model pykeen.models.FixedModel Berrendorf et al., 2021
HolE pykeen.models.HolE Nickel et al., 2016
InductiveNodePiece pykeen.models.InductiveNodePiece Galkin et al., 2021
InductiveNodePieceGNN pykeen.models.InductiveNodePieceGNN Galkin et al., 2021
KG2E pykeen.models.KG2E He et al., 2015
MuRE pykeen.models.MuRE Balažević et al., 2019
NTN pykeen.models.NTN Socher et al., 2013
NodePiece pykeen.models.NodePiece Galkin et al., 2021
PairRE pykeen.models.PairRE Chao et al., 2020
ProjE pykeen.models.ProjE Shi et al., 2017
QuatE pykeen.models.QuatE Zhang et al., 2019
R-GCN pykeen.models.RGCN Schlichtkrull et al., 2018
RESCAL pykeen.models.RESCAL Nickel et al., 2011
RotatE pykeen.models.RotatE Sun et al., 2019
SimplE pykeen.models.SimplE Kazemi et al., 2018
Structured Embedding pykeen.models.SE Bordes et al., 2011
TorusE pykeen.models.TorusE Ebisu et al., 2018
TransD pykeen.models.TransD Ji et al., 2015
TransE pykeen.models.TransE Bordes et al., 2013
TransF pykeen.models.TransF Feng et al., 2016
TransH pykeen.models.TransH Wang et al., 2014
TransR pykeen.models.TransR Lin et al., 2015
TuckER pykeen.models.TuckER Balažević et al., 2019
Unstructured Model pykeen.models.UM Bordes et al., 2014

损失函数

以下15种损失函数由 PyKEEN 实现。

名称 参考 描述
对抗加权二元交叉熵(带 logits) pykeen.losses.AdversarialBCEWithLogitsLoss 一种对抗加权的二元交叉熵损失。
经过 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 成对逻辑回归损失。
点式铰链 pykeen.losses.PointwiseHingeLoss 点式铰链损失。
软边界排序 pykeen.losses.SoftMarginRankingLoss 软式成对铰链损失(即软边界排序损失)。
Softplus pykeen.losses.SoftplusLoss 点式逻辑回归损失(即 Softplus 损失)。
软点式铰链 pykeen.losses.SoftPointwiseHingeLoss 软式点式铰链损失。

正则化器

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 种停止器。

名称 参考 描述
early pykeen.stoppers.EarlyStopper 用于提前停止的工具。
nop pykeen.stoppers.NopStopper 不执行任何操作的停止器。

评估器

PyKEEN 中实现了以下 5 种评估器。

名称 参考文档 描述
classification pykeen.evaluation.ClassificationEvaluator 使用分类指标的评估器。
macrorankbased pykeen.evaluation.MacroRankBasedEvaluator 基于宏平均排名的评估。
ogb pykeen.evaluation.OGBEvaluator 一种基于排名的采样评估器,应用自定义的 OGB 评估方法。
rankbased pykeen.evaluation.RankBasedEvaluator 用于 KGE 模型的基于排名的评估器。
sampledrankbased pykeen.evaluation.SampledRankBasedEvaluator 使用采样负例而非所有负例的基于排名的评估器。

指标

PyKEEN 中实现了以下 44 种指标。

名称 取值范围 方向 描述 类型
准确率 $[0, 1]$ 📈 正确分类的数量与总数量的比率。 分类
ROC曲线下面积 $[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) 排名
调整后的K位命中率 $(\frac{-E[f]}{1-E[f]}, 1]$ 📈 重新索引的调整后K位命中率 排名
调整后的倒数调和平均排名 $(\frac{-E[f]}{1-E[f]}, 1]$ 📈 重新索引的调整后MRR 排名
几何平均排名(GMR) $[1, ∞)$ 📉 所有排名的几何平均值。 排名
调和平均排名(HMR) $[1, ∞)$ 📉 所有排名的调和平均值。 排名
K位命中率 $[0, 1]$ 📈 排名不大于给定k的相对频率。 排名
倒数算术平均排名(IAMR) $(0, 1]$ 📈 所有排名的算术平均值的倒数。 排名
倒数几何平均排名(IGMR) $(0, 1]$ 📈 所有排名的几何平均值的倒数。 排名
倒数中位排名 $(0, 1]$ 📈 所有排名的中位数的倒数。 排名
平均排名(MR) $[1, ∞)$ 📉 所有排名的算术平均值。 排名
平均倒数排名(MRR) $(0, 1]$ 📈 所有排名的调和平均值的倒数。 排名
中位排名 $[1, ∞)$ 📉 所有排名的中位数。 排名
z-几何平均排名(zGMR) $(-∞, ∞)$ 📈 z-score标准化后的几何平均排名 排名
z-K位命中率 $(-∞, ∞)$ 📈 z-score标准化后的K位命中率 排名
z-平均排名(zMR) $(-∞, ∞)$ 📈 z-score标准化后的平均排名 排名
z-平均倒数排名(zMRR) $(-∞, ∞)$ 📈 z-score标准化后的平均倒数排名 排名

跟踪器

PyKEEN 中实现了以下 8 种跟踪器。

名称 参考 描述
console pykeen.trackers.ConsoleResultTracker 直接在控制台打印结果的类。
csv pykeen.trackers.CSVResultTracker 将结果跟踪到 CSV 文件中。
json pykeen.trackers.JSONResultTracker 将结果跟踪到 JSON Lines 文件中。
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。

致谢

支持者

本项目得到了多家机构的支持(按字母顺序排列):

资助

PyKEEN 的开发得到了以下资助项目的支持:

资助机构 计划 资助编号
DARPA 青年教师奖(负责人:本杰明·乔里) W911NF2010255
DARPA 自动化科学知识提取 (ASKE) HR00111990009
德国联邦教育与研究部 (BMBF) 基于知识图谱的机器学习 (MLWin) 01IS18050D
德国联邦教育与研究部 (BMBF) 慕尼黑机器学习中心 (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 = {机器学习研究期刊},
    number = {82},
    pages = {1--6},
    title = {{PyKEEN 1.0:用于训练和评估知识图嵌入的 Python 库}},
    url = {http://jmlr.org/papers/v22/20-825.html},
    volume = {22},
    year = {2021}
}

版本历史

v1.1.02021/01/20
v1.0.52020/10/21
v1.0.42020/08/25
v1.0.32020/08/13
v1.0.22020/07/10
v1.0.12020/07/02
v1.11.12025/04/24
v1.11.02024/10/29
v1.10.22024/02/19
v1.10.12023/02/22
v1.10.02023/01/31
v1.9.02022/08/04
v1.8.22022/05/24
v1.8.12022/04/20
v1.8.02022/03/22
v1.7.02022/01/11
v1.6.02021/10/18
v1.5.02021/06/13
v1.4.02021/03/04
v1.3.02021/02/15

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|2周前
Agent开发框架图像

n8n

n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。

184.7k|★★☆☆☆|今天
数据工具开发框架Agent

AutoGPT

AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。

183.6k|★★★☆☆|今天
Agent语言模型插件

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

161.1k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|2天前
开发框架图像Agent