BasicNegativeSampler

class BasicNegativeSampler(*, corruption_scheme=None, **kwargs)[source]

Bases: NegativeSampler

A basic negative sampler.

This negative sampler that corrupts positive triples \((h,r,t) \in \mathcal{K}\) by replacing either \(h\), \(r\) or \(t\) based on the chosen corruption scheme. The corruption scheme can contain \(h\), \(r\) and \(t\) or any subset of these.

Steps:

  1. Randomly (uniformly) determine whether \(h\), \(r\) or \(t\) shall be corrupted for a positive triple \((h,r,t) \in \mathcal{K}\).

  2. Randomly (uniformly) sample an entity \(e \in \mathcal{E}\) or relation \(r' \in \mathcal{R}\) for selection to corrupt the triple.

    • If \(h\) was selected before, the corrupted triple is \((e,r,t)\)

    • If \(r\) was selected before, the corrupted triple is \((h,r',t)\)

    • If \(t\) was selected before, the corrupted triple is \((h,r,e)\)

  3. If filtered is set to True, all proposed corrupted triples that also exist as actual positive triples \((h,r,t) \in \mathcal{K}\) will be removed.

Initialize the basic negative sampler with the given entities.

Parameters:
  • corruption_scheme (Optional[Collection[Literal[‘head’, ‘relation’, ‘tail’]]]) – What sides (‘h’, ‘r’, ‘t’) should be corrupted. Defaults to head and tail (‘h’, ‘t’).

  • kwargs – Additional keyword based arguments passed to pykeen.sampling.NegativeSampler.

Methods Summary

corrupt_batch(positive_batch)

Generate negative samples from the positive batch without application of any filter.

Methods Documentation

corrupt_batch(positive_batch)[source]

Generate negative samples from the positive batch without application of any filter.

Parameters:

positive_batch (LongTensor) – shape: (*batch_dims, 3) The positive triples.

Return type:

LongTensor

Returns:

shape: (*batch_dims, num_negs_per_pos, 3) The negative triples. result[*bi, :, :] contains the negative examples generated from positive_batch[*bi, :].