class_docstr: Produces labels for a joint BROS / Sequence Labeling model.
  
  First set of labels are standard NER sequence labeling models, second and
  third set of labels are BROS start and next token labels.
class_docstr_tok: ["Produces","labels","for","a","joint","BROS","\/","Sequence","Labeling","model",".","First","set","of","labels","are","standard","NER","sequence","labeling","models",",","second","and","third","set","of","labels","are","BROS","start","and","next","token","labels","."]
code: def fit(self, labels):
      labels, groups = list(zip(*labels))
      BROSEncoder.fit(self, labels)
      self.group_classes_, self.group_lookup = (
          self.classes_,
          self.lookup,
      )
      SequenceLabelingEncoder.fit(self, labels)
      self.ner_classes_, self.ner_lookup = self.classes_, self.lookup
  
      # Create a combination of both classes so we can create a single class
      # weight tensor in util.imbalance.class_weight_tensor
      # Note: Finetune calculates n_labels as the length of classes_, so this
      # caues n_labels to be too large. We manually adjust for this in the
      # joint_bros target block
      self.classes_ = [c for c in self.ner_classes_]
      self.classes_.extend(self.group_classes_)
  
imports: from abc import ABCMeta
  import logging
  import json
  import numpy
  from finetune.encoding.target_encoders import BaseEncoder, Seq2SeqLabelEncoder, SequenceLabelingEncoder
label_desc: Use image node_id 2 for calling the JointBROSEncoder obj's underlying member method code with example usage: obj.fit(labels) without return types