in src/setfit/sampler.py [0:0]
def generate_multilabel_pairs(self) -> None:
for (_text, _label), (text, label) in shuffle_combinations(self.sentence_labels):
# logical_and checks if labels are both set for each class
is_positive = any(np.logical_and(_label, label))
is_positive_full = self.max_pos_or_neg != -1 and len(self.pos_pairs) >= self.max_pos_or_neg
is_negative_full = self.max_pos_or_neg != -1 and len(self.neg_pairs) >= self.max_pos_or_neg
if is_positive:
if not is_positive_full:
self.pos_pairs.append({"sentence_1": _text, "sentence_2": text, "label": 1.0})
elif not is_negative_full:
self.neg_pairs.append({"sentence_1": _text, "sentence_2": text, "label": 0.0})
if is_positive_full and is_negative_full:
break