模型

知识图谱嵌入模型能够计算表示三元组\((h,r,t) \in \mathbb{K}\)合理性的实值分数,其中较大的分数表示较高的合理性。分数的解释依赖于模型,通常不能直接解释为概率。

在 PyKEEN 中,模型的 API 定义在 Model 中,其中评分函数通过 Model.score_hrt() 暴露,可用于计算(一批)三元组的合理性分数。此外,Model 类还提供了额外的评分方法,可用于(高效地)计算共享某些部分的大量三元组的分数,例如,计算给定 \((h, r)\) 对和所有可用实体 \(e \in \mathcal{E}\) 的三元组 \((h, r, e)\) 的分数。

注意

这里提供的知识图谱嵌入模型的实现都基于实体/关系索引,而不是字符串表示,参见这里

在这些评分方法之上,还有相应的预测方法,例如, Model.predict_hrt()。这些方法通过确保模型处于评估模式来扩展评分方法,参见 torch.nn.Module.eval(),并可选地在分数上应用sigmoid激活以确保值范围在 \([0, 1]\) 之间。

警告

根据手头的模型,直接应用sigmoid可能并不总是合理的。例如,基于距离的交互函数,如pykeen.nn.modules.TransEInteraction,会产生非正分数(因为它们使用距离作为评分函数),因此sigmoid的输出仅覆盖区间\([0.5, 1]\)

大多数模型都源自ERModel,这是一个知识图谱嵌入模型的通用实现。 它结合了实体和关系的可变数量的表示,参见 pykeen.nn.representation.Representation,以及一个交互函数,参见 pykeen.nn.modules.Interaction。表示模块将整数实体或关系索引转换为 数字表示,例如向量。交互函数将头实体、关系和尾实体的表示作为输入,并计算三元组的标量合理性分数。

注意

关于表示模块的深入讨论可以在 相应的教程中找到。

注意

此模块中的特定模型,例如RESCAL,使用交互函数打包特定的实体和关系表示。对于更灵活的组合,考虑直接使用ERModel

函数

make_model(dimensions, interaction[, ...])

从交互类提示(名称或类)构建模型。

make_model_cls(dimensions, interaction[, ...])

从交互类提示(名称或类)构建模型类。

Model(*, triples_factory[, loss, ...])

KGE模型的基础模块。

ERModel(*, triples_factory, interaction[, ...])

使用嵌入和交互模块的KGEMs的一个常用且有用的基础。

InductiveERModel(*, triples_factory[, ...])

归纳模型的一个基类。

LiteralModel(triples_factory, interaction[, ...])

使用来自pykeen.nn.combinations组合的实体字面量模型的基类。

EvaluationOnlyModel(triples_factory)

一个仅实现用于评估的方法的模型。

AutoSF([embedding_dim, num_components, ...])

来自[zhang2020]的AutoSF实现。

BoxE(*, embedding_dim, tanh_map, p, ...)

BoxE的实现来自[abboud2020]

CompGCN(*, triples_factory[, embedding_dim, ...])

来自[vashishth2020]的CompGCN实现。

ComplEx(*, embedding_dim, ...)

ComplEx 的一个实现 [trouillon2016]

ComplExLiteral(triples_factory[, ...])

一个实现了LiteralE模型的实现,使用了来自[kristiadi2018]的ComplEx交互。

ConvE(triples_factory, input_channels, ...)

ConvE 的实现来自 [dettmers2018]

ConvKB(*, embedding_dim, ...)

ConvKB的实现来自[nguyen2018]

CP([embedding_dim, rank, ...])

CP的实现如[lacroix2018]中所述,基于[hitchcock1927]

CrossE(*, embedding_dim, ...)

CrossE 的实现来自 [zhang2019b]

DistMA([embedding_dim, entity_initializer, ...])

来自[shi2019]的DistMA实现。

DistMult(*, embedding_dim, ...)

来自[yang2014]的DistMult实现。

DistMultLiteral(triples_factory[, ...])

一个实现了LiteralE模型的实现,使用了来自[kristiadi2018]的DistMult交互。

DistMultLiteralGated(triples_factory[, ...])

使用来自[kristiadi2018]的Gated DistMult交互实现的LiteralE模型。

ERMLP(*, embedding_dim, hidden_dim, ...)

ERMLP的实现来自[dong2014]

ERMLPE(*, embedding_dim, hidden_dim, ...)

pykeen.models.ERMLP 的扩展,由 [sharifzadeh2019] 提出。

HolE(*, embedding_dim, entity_initializer, ...)

HolE 的实现来自 [nickel2016]

KG2E(*, embedding_dim, dist_similarity, ...)

KG2E的实现来自[he2015]

FixedModel(*, triples_factory, **_kwargs)

一个返回固定分数的模拟模型。

MuRE(*, embedding_dim, p, power_norm, ...)

MuRE 的实现来自 [balazevic2019b]

NodePiece(*, triples_factory, num_tokens, ...)

一个包装器,它将交互函数与来自[galkin2021]的NodePiece实体表示结合起来。

NTN(*[, embedding_dim, num_slices, ...])

NTN的实现来自[socher2013]

PairRE(embedding_dim, p, power_norm, ...)

来自[chao2020]的PairRE实现。

ProjE(*, embedding_dim, inner_non_linearity, ...)

ProjE 的实现来自 [shi2017]

QuatE(*, embedding_dim, entity_initializer, ...)

QuatE 的实现来自 [zhang2019]

RESCAL(*, embedding_dim, entity_initializer, ...)

来自[nickel2011]的RESCAL实现。

RGCN(*, triples_factory, embedding_dim, ...)

R-GCN 的实现来自 [schlichtkrull2018]

RotatE(*, embedding_dim, entity_initializer, ...)

RotatE的一个实现来自[sun2019]

SimplE(*[, embedding_dim, clamp_score, ...])

SimplE 的一个实现 [kazemi2018]

SE(*, embedding_dim, scoring_fct_norm, ...)

[bordes2011]发布的结构化嵌入(SE)的实现。

TorusE([embedding_dim, p, power_norm, ...])

来自[ebisu2018]的TorusE实现。

TransD(*, embedding_dim, relation_dim, ...)

TransD的实现来自[ji2015]

TransE(*, embedding_dim, scoring_fct_norm, ...)

TransE 的一个实现 [bordes2013]

TransF([embedding_dim, entity_initializer, ...])

TransF的实现来自[feng2016]

TransH(*, embedding_dim, scoring_fct_norm, ...)

TransH 的一个实现 [wang2014]

TransR(*, embedding_dim, relation_dim, ...)

TransR 的实现来自 [lin2015]

TuckER(*, embedding_dim, relation_dim, ...)

来自[balazevic2019]的TuckEr实现。

UM(*, embedding_dim, scoring_fct_norm, ...)

[bordes2014]发布的无结构模型(UM)的实现。

InductiveNodePiece(*, triples_factory, ...)

一个包装器,它将交互函数与来自[galkin2021]的NodePiece实体表示结合起来。

InductiveNodePieceGNN(*[, gnn_encoder])

在GNN编码器之上的归纳式NodePiece。

SoftInverseTripleBaseline(triples_factory[, ...])

基于关系相似性的评分。

MarginalDistributionBaseline(triples_factory)

基于边际分布的评分。

CooccurrenceFilteredModel(*, triples_factory)

一个通过共现过滤预测的模型。

变量

model_resolver

知识图谱嵌入模型的解析器

类继承图

Inheritance diagram of pykeen.models.base.Model, pykeen.models.nbase.ERModel, pykeen.models.inductive.base.InductiveERModel, pykeen.models.multimodal.base.LiteralModel, pykeen.models.baseline.models.EvaluationOnlyModel, pykeen.models.unimodal.auto_sf.AutoSF, pykeen.models.unimodal.boxe.BoxE, pykeen.models.unimodal.compgcn.CompGCN, pykeen.models.unimodal.complex.ComplEx, pykeen.models.multimodal.complex_literal.ComplExLiteral, pykeen.models.unimodal.conv_e.ConvE, pykeen.models.unimodal.conv_kb.ConvKB, pykeen.models.unimodal.cp.CP, pykeen.models.unimodal.crosse.CrossE, pykeen.models.unimodal.distma.DistMA, pykeen.models.unimodal.distmult.DistMult, pykeen.models.multimodal.distmult_literal.DistMultLiteral, pykeen.models.multimodal.distmult_literal_gated.DistMultLiteralGated, pykeen.models.unimodal.ermlp.ERMLP, pykeen.models.unimodal.ermlpe.ERMLPE, pykeen.models.unimodal.hole.HolE, pykeen.models.unimodal.kg2e.KG2E, pykeen.models.mocks.FixedModel, pykeen.models.unimodal.mure.MuRE, pykeen.models.unimodal.node_piece.NodePiece, pykeen.models.unimodal.ntn.NTN, pykeen.models.unimodal.pair_re.PairRE, pykeen.models.unimodal.proj_e.ProjE, pykeen.models.unimodal.quate.QuatE, pykeen.models.unimodal.rescal.RESCAL, pykeen.models.unimodal.rgcn.RGCN, pykeen.models.unimodal.rotate.RotatE, pykeen.models.unimodal.simple.SimplE, pykeen.models.unimodal.structured_embedding.SE, pykeen.models.unimodal.toruse.TorusE, pykeen.models.unimodal.trans_d.TransD, pykeen.models.unimodal.trans_e.TransE, pykeen.models.unimodal.trans_f.TransF, pykeen.models.unimodal.trans_h.TransH, pykeen.models.unimodal.trans_r.TransR, pykeen.models.unimodal.tucker.TuckER, pykeen.models.unimodal.unstructured_model.UM, pykeen.models.inductive.inductive_nodepiece.InductiveNodePiece, pykeen.models.inductive.inductive_nodepiece_gnn.InductiveNodePieceGNN, pykeen.models.baseline.models.SoftInverseTripleBaseline, pykeen.models.baseline.models.MarginalDistributionBaseline, pykeen.models.meta.filtered.CooccurrenceFilteredModel