code: def aggregate_preds(self, batch_preds, batch_context):
      intent_preds, word_preds = batch_preds
      self.all_preds.extend(
          [
              create_frame(
                  text,
                  self.doc_label_names[intent_pred],
                  merge_token_labels_to_slot(
                      token_range[0:seq_len],
                      [
                          self.word_label_names[p]
                          for p in word_pred[0:seq_len]
                      ],
                      self.use_bio_labels,
                  ),
                  byte_length(text),
              )
              for text, intent_pred, word_pred, seq_len, token_range in zip(
                  batch_context[self.text_column_name],
                  intent_preds,
                  word_preds,
                  batch_context[DatasetFieldName.SEQ_LENS],
                  batch_context[DatasetFieldName.TOKEN_RANGE],
              )
          ]
      )
  
imports: from typing import Dict, List, Optional
  from pytext.common.constants import DatasetFieldName, Stage
  from pytext.data.data_structures.annotation import CLOSE, escape_brackets, OPEN
  from pytext.metrics.intent_slot_metrics import compute_all_metrics, FramePredictionPair, Node, Span
  from pytext.utils.data import byte_length, get_substring_from_offsets, merge_token_labels_to_slot, parse_slot_string
  from .channel import Channel, ConsoleChannel, FileChannel
  from .metric_reporter import MetricReporter
label_desc: Use image node_id 3 for calling the IntentSlotMetricReporter obj's underlying member method code with example usage: obj.aggregate_preds(batch_preds, batch_context) without return types