TriplesFactory

class TriplesFactory(mapped_triples: Tensor | ndarray, entity_to_id: Mapping[str, int], relation_to_id: Mapping[str, int], create_inverse_triples: bool = False, metadata: Mapping[str, Any] | None = None, num_entities: int | None = None, num_relations: int | None = None)[源代码]

基础类:CoreTriplesFactory

根据三元组的路径创建实例。

创建三元组工厂。

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

  • entity_to_id (Mapping[str, int]) – 从实体标签到其索引的映射。

  • relation_to_id (Mapping[str, int]) – 从关系标签到其索引的映射。

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

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

  • num_entities (int) – 实体的数量。可能为None,在这种情况下,这个数量由标签映射推断得出

  • num_relations (int) – 关系的数量。可能为None,在这种情况下,这个数量由标签映射推断得出

Raises:

ValueError – 如果明确提供的实体或关系的数量与标签映射中给出的数量不匹配

属性摘要

entity_id_to_label

返回从实体ID到标签的映射。

entity_to_id

返回从实体标签到ID的映射。

file_name_entity_to_id

file_name_relation_to_id

relation_id_to_label

返回从关系ID到标签的映射。

relation_to_id

返回从关系标签到ID的映射。

triples

标记的三元组,一个3列的矩阵,其中每行分别是头标签、关系标签和尾标签。

方法总结

clone_and_exchange_triples(mapped_triples[, ...])

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

entities_to_ids(entities)

将实体标准化为ID。

entity_word_cloud([top])

在Jupyter笔记本中基于每个实体的出现频率制作词云。

from_labeled_triples(triples, *[, ...])

从基于标签的三元组创建一个新的三元组工厂。

from_path(路径, *[, 创建反向三元组, ...])

从存储在文件中的三元组创建一个新的三元组工厂。

get_inverse_relation_id(relation)

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

get_mask_for_relations(relations[, invert])

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

label_triples(triples[, ...])

将基于ID的三元组转换为基于标签的三元组。

map_triples(triples)

将基于标签的三元组转换为基于ID的三元组。

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

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

relation_word_cloud([top])

在Jupyter笔记本中基于每个关系的出现频率制作词云。

relations_to_ids(relations)

将关系标准化为ID。

tensor_to_df(tensor, **kwargs)

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

to_core_triples_factory()

将此工厂作为核心工厂返回。

to_path_binary(path)

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

属性文档

entity_id_to_label

返回从实体ID到标签的映射。

entity_to_id

返回从实体标签到ID的映射。

file_name_entity_to_id: ClassVar[str] = 'entity_to_id'
file_name_relation_to_id: ClassVar[str] = 'relation_to_id'
relation_id_to_label

返回从关系ID到标签的映射。

relation_to_id

返回从关系标签到ID的映射。

triples

标记的三元组,一个3列的矩阵,其中每行分别是头标签、关系标签和尾标签。

方法文档

clone_and_exchange_triples(mapped_triples: Tensor, extra_metadata: dict[str, Any] | None = None, keep_metadata: bool = True, create_inverse_triples: bool | None = None) TriplesFactory[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:

TriplesFactory

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]

entity_word_cloud(top: int | None = None)[来源]

在Jupyter笔记本中基于每个实体的出现频率制作词云。

Parameters:

top (int | None) – 要显示的顶部实体的数量。默认为100。

Returns:

用于Jupyter笔记本的词云对象

警告

此函数需要wordcloud包。使用pip install pykeen[wordcloud]来安装它。

classmethod from_labeled_triples(triples: ndarray, *, create_inverse_triples: bool = False, entity_to_id: Mapping[str, int] | None = None, relation_to_id: Mapping[str, int] | None = None, compact_id: bool = True, filter_out_candidate_inverse_relations: bool = True, metadata: dict[str, Any] | None = None) TriplesFactory[source]

从基于标签的三元组创建一个新的三元组工厂。

Parameters:
  • triples (ndarray) – 形状: (n, 3), 数据类型: str 基于标签的三元组。

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

  • entity_to_id (Mapping[str, int] | None) – 从实体标签到ID的映射。如果为None,则从三元组创建一个新的映射。

  • relation_to_id (Mapping[str, int] | None) – 从关系标签到ID的映射。如果为None,则从三元组创建一个新的映射。

  • compact_id (bool) – 是否压缩ID以使ID连续。

  • filter_out_candidate_inverse_relations (bool) – 是否移除带有反向后缀关系的三元组。

  • metadata (dict[str, Any] | None) – 任意键/值对,存储为元数据

Returns:

一个新的三元组工厂。

Return type:

TriplesFactory

classmethod from_path(path: str | Path | TextIO, *, create_inverse_triples: bool = False, entity_to_id: Mapping[str, int] | None = None, relation_to_id: Mapping[str, int] | None = None, compact_id: bool = True, metadata: dict[str, Any] | None = None, load_triples_kwargs: Mapping[str, Any] | None = None, **kwargs) TriplesFactory[source]

从存储在文件中的三元组创建一个新的三元组工厂。

Parameters:
  • path (str | Path | TextIO) – 存储基于标签的三元组的路径。

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

  • entity_to_id (Mapping[str, int] | None) – 从实体标签到ID的映射。如果为None,则从三元组创建一个新的映射。

  • relation_to_id (Mapping[str, int] | None) – 从关系标签到ID的映射。如果为None,则从三元组创建一个新的映射。

  • compact_id (bool) – 是否压缩ID以使ID连续。

  • metadata (dict[str, Any] | None) – 任意键/值对,用于存储为三元组工厂的元数据。不要包含path作为键,因为它会自动从该函数的path关键字参数中获取。

  • load_triples_kwargs (Mapping[str, Any] | None) – 可选的传递给 load_triples() 的关键字参数。 可能包括 delimitercolumn_remapping

  • kwargs – 额外的基于关键字的参数,这些参数被忽略。

Returns:

一个新的三元组工厂。

Return type:

TriplesFactory

get_inverse_relation_id(relation: str | int) int[source]

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

Parameters:

relation (str | int)

Return type:

int

get_mask_for_relations(relations: Collection[int] | Collection[str], invert: bool = False) Tensor[来源]

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

Parameters:
Return type:

Tensor

label_triples(triples: Tensor, unknown_entity_label: str = '[UNKNOWN]', unknown_relation_label: str | None = None) ndarray[source]

将基于ID的三元组转换为基于标签的三元组。

Parameters:
  • triples (Tensor) – 基于ID的三元组。

  • unknown_entity_label (str) – 用于未知实体ID的标签。

  • unknown_relation_label (str | None) – 用于未知关系ID的标签。

Returns:

相同的三元组,但已标记。

Return type:

ndarray

map_triples(triples: ndarray) Tensor[source]

将基于标签的三元组转换为基于ID的三元组。

Parameters:

三元组 (ndarray)

Return type:

Tensor

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) TriplesFactory[来源]

创建一个新的三元组工厂,仅保留给定的实体和关系,但保留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:

TriplesFactory

relation_word_cloud(top: int | None = None)[source]

在Jupyter笔记本中基于每个关系的出现频率制作词云。

Parameters:

top (int | None) – 要显示的前几个关系的数量。默认为100。

Returns:

Jupyter笔记本的词云对象

警告

此函数需要wordcloud包。使用pip install pykeen[wordcloud]来安装它。

relations_to_ids(relations: Collection[int] | Collection[str]) Collection[int][source]

将关系标准化为ID。

Parameters:

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

Returns:

关系的整数标识符

Raises:

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

Return type:

Collection[int]

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_core_triples_factory() CoreTriplesFactory[源代码]

将此工厂作为核心工厂返回。

Return type:

CoreTriplesFactory

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

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

Parameters:

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

Returns:

被转储文件的路径

Return type:

Path