code: def aggregate_targets(self, batch_targets, batch_context):
      intent_targets = batch_targets[0]
      self.all_targets.extend(
          [
              create_frame(
                  text,
                  self.doc_label_names[intent_target],
                  raw_slot_label,
                  byte_length(text),
              )
              for text, intent_target, raw_slot_label, seq_len in zip(
                  batch_context[self.text_column_name],
                  intent_targets,
                  batch_context[DatasetFieldName.RAW_WORD_LABEL],
                  batch_context[DatasetFieldName.SEQ_LENS],
              )
          ]
      )
  
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 4 for calling the IntentSlotMetricReporter obj's underlying member method code with example usage: obj.aggregate_targets(batch_targets, batch_context) without return types