def METHOD_NAME(self, positive_batch: torch.LongTensor) -> Tuple[torch.LongTensor, Optional[torch.BoolTensor]]:
    """
    Generate negative samples from the positive batch.
    :param positive_batch: shape: (batch_size, 3)
        The positive triples.
    :return:
        A pair `(negative_batch, filter_mask)` where
        1. `negative_batch`: shape: (batch_size, num_negatives, 3)
           The negative batch. ``negative_batch[i, :, :]`` contains the negative examples generated from
           ``positive_batch[i, :]``.
        2. filter_mask: shape: (batch_size, num_negatives)
           An optional filter mask. True where negative samples are valid.
    """
    # create unfiltered negative batch by corruption
    negative_batch = self.corrupt_batch(positive_batch=positive_batch)
    if self.filterer is None:
        return negative_batch, None
    # If filtering is activated, all negative triples that are positive in the training dataset will be removed
    return negative_batch, self.filterer(negative_batch=negative_batch)