code: def _compute_exact_matches(
      self,
      pred_answer_list,
      target_answers_list,
      pred_has_answer_list,
      target_has_answer_list,
  ):
      exact_matches = 0
      for (
          pred_answer,
          target_answers,
          pred_has_answer,
          target_has_answer,
      ) in zip(
          pred_answer_list,
          target_answers_list,
          pred_has_answer_list,
          target_has_answer_list,
      ):
          if not self.ignore_impossible:
              if pred_has_answer != target_has_answer:
                  continue
              if pred_has_answer == self.false_idx:
                  exact_matches += 1
                  continue
          pred = self._normalize_answer(pred_answer)
          for answer in target_answers:
              true = self._normalize_answer(answer)
              if pred == true:
                  exact_matches += 1
                  break
      return exact_matches
  
imports: import re
  import string
  from collections import Counter
  from itertools import zip_longest
  from typing import Dict, List
  import numpy
  from pytext.common.constants import Stage
  from pytext.metric_reporters.channel import Channel, ConsoleChannel, FileChannel
  from pytext.metric_reporters.metric_reporter import MetricReporter
  from pytext.metrics import compute_classification_metrics, LabelPrediction
  from pytext.metrics.squad_metrics import SquadMetrics
label_desc: Use image node_id 13 for calling the SquadMetricReporter obj's underlying member method code with example usage: obj._compute_exact_matches(pred_answer_list, target_answers_list, pred_has_answer_list, target_has_answer_list) and returns: exact_matches