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:
- Raises:
TypeError – 如果 mapped_triples 是非整数类型
ValueError – 如果 mapped_triples 的形状无效
属性摘要
三元组的数量。
方法总结
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])获取具有给定关系的三元组的布尔掩码。
获取n个最频繁关系的ID。
遍历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添加标签。
属性文档
- num_triples
三元组的数量。
方法文档
- 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:
- Returns:
新工厂。
- Return type:
- 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:
- Returns:
一个新的三元组工厂。
- Return type:
- 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:
- classmethod from_path_binary(path: str | Path | TextIO) CoreTriplesFactory[source]
从二进制文件加载三元组工厂。
- Parameters:
- Returns:
加载的三元组工厂。
- Return type:
- get_mask_for_relations(relations: Collection[int], invert: bool = False) Tensor[source]
获取具有给定关系的三元组的布尔掩码。
- Parameters:
关系 (Collection[int])
invert (bool)
- Return type:
- 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:
- relations_to_ids(relations: Collection[int] | Collection[str]) Collection[int][来源]
将关系标准化为ID。
- Parameters:
relations (Collection[int] | Collection[str]) – 一个包含关系整数标识符或关系字符串标签的集合(将自动转换)
- Returns:
关系的整数标识符
- Raises:
ValueError – 如果传递的
relations是字符串标签 并且这个三元组工厂没有关系标签到标识符的映射 (例如,它只是一个基础的CoreTriplesFactory实例)- Return type:
- 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]) –
此参数有三种选项:
可以给出一个介于0和1.0之间的浮点数,不包括0和1.0。第一组三元组将获得此比例,第二组将获得剩余部分。
可以给出一个比例列表,指定每组应按什么顺序获得什么比例,如
[0.8, 0.1]。最后一个比例可以省略,因为它可以计算得出。可以明确设置所有比例,如
[0.8, 0.1, 0.1],其中所有比例的总和为1.0。
randomize_cleanup (bool) – 此参数被转发到底层的
pykeen.triples.splitting.split()。method (str | None) – 此参数被转发到底层的
pykeen.triples.splitting.split()。
- Returns:
三元组的分区,根据比例(大约)进行分割,存储的TriplesFactory与这个根三元组工厂共享其他所有内容。
- Return type:
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数据框。