CoreTriplesFactory

class CoreTriplesFactory(mapped_triples: Tensor | ndarray, num_entities: int, num_relations: int, create_inverse_triples: bool = False, metadata: Mapping[str, Any] | None = None)[source]

基础类: KGInfo

从基于ID的三元组创建实例。

创建三元组工厂。

Parameters:
  • mapped_triples (Tensor | ndarray) – 形状: (n, 3) 一个三列的矩阵,其中每行分别是头标识符、关系标识符和尾标识符。

  • num_entities (int) – 实体的数量。

  • num_relations (int) – 关系的数量。

  • create_inverse_triples (bool) – 是否创建反向三元组。

  • metadata (Mapping[str, Any] | None) – 与图形一起的任意元数据

Raises:
  • TypeError – 如果 mapped_triples 是非整数类型

  • ValueError – 如果 mapped_triples 的形状无效

属性摘要

base_file_name

num_triples

三元组的数量。

triples_file_name

方法总结

clone_and_exchange_triples(mapped_triples[, ...])

创建一个新的三元组工厂,共享除三元组之外的所有内容。

create(mapped_triples[, num_entities, ...])

创建一个没有任何标签信息的三元组工厂。

entities_to_ids(entities)

将实体标准化为ID。

from_path_binary(路径)

从二进制文件加载三元组工厂。

get_inverse_relation_id(relation)

获取给定关系的逆关系标识符。

get_mask_for_relations(relations[, invert])

获取具有给定关系的三元组的布尔掩码。

get_most_frequent_relations(n)

获取n个最频繁关系的ID。

iter_extra_repr()

遍历extra_repr组件。

new_with_restriction([entities, relations, ...])

创建一个新的三元组工厂,仅保留给定的实体和关系,但保留ID映射。

relations_to_ids(relations)

将关系标准化为ID。

split([ratios, random_state, ...])

将一个三元组工厂分割成一个训练部分和多个(传导性)评估部分。

tensor_to_df(tensor, **kwargs)

获取一个三元组的张量并创建一个带有标签的pandas数据框。

to_path_binary(path)

将三元组工厂保存到路径中(PyTorch的.pt二进制格式)。

with_labels(entity_to_id, relation_to_id)

向TriplesFactory添加标签。

属性文档

base_file_name: ClassVar[str] = 'base.pth'
num_triples

三元组的数量。

triples_file_name: ClassVar[str] = 'numeric_triples.tsv.gz'

方法文档

clone_and_exchange_triples(mapped_triples: Tensor, extra_metadata: dict[str, Any] | None = None, keep_metadata: bool = True, create_inverse_triples: bool | None = None) CoreTriplesFactory[source]

创建一个新的三元组工厂,共享除三元组之外的所有内容。

注意

我们使用浅拷贝。

Parameters:
  • mapped_triples (Tensor) – 新的映射三元组。

  • extra_metadata (dict[str, Any] | None) – 包含在新三元组工厂中的额外元数据。如果 keep_metadata 为真, 字典将与 extra_metadata 中的键优先合并。

  • keep_metadata (bool) – 将当前工厂的元数据传递给新的三元组工厂

  • create_inverse_triples (bool | None) – 更改反向三元组创建标志。如果为None,则使用此工厂的标志。

Returns:

新工厂。

Return type:

CoreTriplesFactory

classmethod create(mapped_triples: Tensor, num_entities: int | None = None, num_relations: int | None = None, create_inverse_triples: bool = False, metadata: Mapping[str, Any] | None = None) CoreTriplesFactory[来源]

创建一个没有任何标签信息的三元组工厂。

Parameters:
  • mapped_triples (Tensor) – 形状: (n, 3) 基于ID的三元组。

  • num_entities (int | None) – 实体的数量。如果未给出,则从mapped_triples推断。

  • num_relations (int | None) – 关系的数量。如果未给出,则从mapped_triples推断。

  • create_inverse_triples (bool) – 是否创建反向三元组。

  • metadata (Mapping[str, Any] | None) – 存储在工厂中的额外元数据。

Returns:

一个新的三元组工厂。

Return type:

CoreTriplesFactory

entities_to_ids(entities: Collection[int] | Collection[str]) Collection[int][source]

将实体标准化为ID。

Parameters:

entities (Collection[int] | Collection[str]) – 实体的整数标识符集合或实体的字符串标签集合(将自动转换)

Returns:

实体的整数标识符

Raises:

ValueError – 如果传递的entities是字符串标签 并且此三元组工厂没有实体标签到标识符的映射 (例如,它只是一个基础的CoreTriplesFactory实例)

Return type:

Collection[int]

classmethod from_path_binary(path: str | Path | TextIO) CoreTriplesFactory[source]

从二进制文件加载三元组工厂。

Parameters:

path (str | Path | TextIO) – 路径,指向一个已存在的PyTorch .pt文件。

Returns:

加载的三元组工厂。

Return type:

CoreTriplesFactory

get_inverse_relation_id(relation: int) int[来源]

获取给定关系的逆关系标识符。

Parameters:

关系 (int)

Return type:

int

get_mask_for_relations(relations: Collection[int], invert: bool = False) Tensor[source]

获取具有给定关系的三元组的布尔掩码。

Parameters:
Return type:

Tensor

get_most_frequent_relations(n: int | float) set[int][来源]

获取n个最频繁关系的ID。

Parameters:

n (int | float) – 可以是保留的顶部关系的(整数)数量,也可以是保留的顶部关系的(浮点数)百分比。

Returns:

一组用于n个最常见关系的ID

Raises:

TypeError – 如果 n 的类型错误

Return type:

set[int]

iter_extra_repr() Iterable[str][source]

遍历extra_repr组件。

Return type:

Iterable[str]

new_with_restriction(entities: None | Collection[int] | Collection[str] = None, relations: None | Collection[int] | Collection[str] = None, invert_entity_selection: bool = False, invert_relation_selection: bool = False) CoreTriplesFactory[来源]

创建一个新的三元组工厂,仅保留给定的实体和关系,但保留ID映射。

Parameters:
  • entities (None | Collection[int] | Collection[str]) – 感兴趣的实体。如果为None,则默认为所有实体。

  • relations (None | Collection[int] | Collection[str]) – 感兴趣的关系。如果为None,则默认为所有关系。

  • invert_entity_selection (bool) – 是否反转实体选择,即选择那些不包含提供实体的三元组。

  • invert_relation_selection (bool) – 是否反转关系选择,即选择那些不包含提供关系的三元组。

Returns:

一个新的三元组工厂,它只包含感兴趣的实体和关系的三元组子集。标签到ID的映射没有被修改。

Return type:

CoreTriplesFactory

relations_to_ids(relations: Collection[int] | Collection[str]) Collection[int][来源]

将关系标准化为ID。

Parameters:

relations (Collection[int] | Collection[str]) – 一个包含关系整数标识符或关系字符串标签的集合(将自动转换)

Returns:

关系的整数标识符

Raises:

ValueError – 如果传递的relations是字符串标签 并且这个三元组工厂没有关系标签到标识符的映射 (例如,它只是一个基础的CoreTriplesFactory实例)

Return type:

Collection[int]

split(ratios: float | Sequence[float] = 0.8, *, random_state: None | int | Generator = None, randomize_cleanup: bool = False, method: str | None = None) list[CoreTriplesFactory][来源]

将一个三元组工厂分割成一个训练部分和多个(传导性)评估部分。

警告

此方法不适合创建归纳分割。

Parameters:
  • ratios (float | Sequence[float]) –

    此参数有三种选项:

    1. 可以给出一个介于0和1.0之间的浮点数,不包括0和1.0。第一组三元组将获得此比例,第二组将获得剩余部分。

    2. 可以给出一个比例列表,指定每组应按什么顺序获得什么比例,如[0.8, 0.1]。最后一个比例可以省略,因为它可以计算得出。

    3. 可以明确设置所有比例,如[0.8, 0.1, 0.1],其中所有比例的总和为1.0。

  • random_state (None | int | Generator) – 用于打乱和分割三元组的随机状态。

  • randomize_cleanup (bool) – 此参数被转发到底层的 pykeen.triples.splitting.split()

  • method (str | None) – 此参数被转发到底层的 pykeen.triples.splitting.split()

Returns:

三元组的分区,根据比例(大约)进行分割,存储的TriplesFactory与这个根三元组工厂共享其他所有内容。

Return type:

list[CoreTriplesFactory]

ratio = 0.8  # makes a [0.8, 0.2] split
training_factory, testing_factory = factory.split(ratio)

ratios = [0.8, 0.1]  # makes a [0.8, 0.1, 0.1] split
training_factory, testing_factory, validation_factory = factory.split(ratios)

ratios = [0.8, 0.1, 0.1]  # also makes a [0.8, 0.1, 0.1] split
training_factory, testing_factory, validation_factory = factory.split(ratios)
tensor_to_df(tensor: Tensor, **kwargs: Tensor | ndarray | Sequence) DataFrame[source]

获取一个三元组的张量并创建一个带有标签的pandas数据框。

Parameters:
  • tensor (Tensor) – 形状: (n, 3) 三元组,基于ID,格式为 (head_id, relation_id, tail_id)。

  • kwargs (Tensor | ndarray | Sequence) – 任何额外的列。每列需要是形状为 (n,) 的。保留的列名: {“head_id”, “head_label”, “relation_id”, “relation_label”, “tail_id”, “tail_label”}。

Returns:

一个包含n行和6 + len(kwargs)列的数据框。

Return type:

数据框

to_path_binary(path: str | Path | TextIO) Path[source]

将三元组工厂保存到路径中(PyTorch的.pt二进制格式)。

Parameters:

path (str | Path | TextIO) – 存储三元组工厂的路径。

Returns:

被转储文件的路径

Return type:

Path

with_labels(entity_to_id: Mapping[str, int], relation_to_id: Mapping[str, int]) TriplesFactory[source]

向TriplesFactory添加标签。

Parameters:
Return type:

TriplesFactory