docstr: Takes gold and predicted answer sets and first finds the optimal 1-1 alignment
  between them and gets maximum metric values over all the answers.
code: def _align_bags(self, predicted, gold):
      """
      Takes gold and predicted answer sets and first finds the optimal 1-1 alignment
      between them and gets maximum metric values over all the answers.
      """
      scores = np.zeros([len(gold), len(predicted)])
      for gold_index, gold_item in enumerate(gold):
          for pred_index, pred_item in enumerate(predicted):
              if self._match_numbers_if_present(gold_item, pred_item):
                  scores[gold_index, pred_index] = self._compute_f1(
                      pred_item, gold_item
                  )
      row_ind, col_ind = linear_sum_assignment(-scores)
  
      max_scores = np.zeros([max(len(gold), len(predicted))])
      for row, column in zip(row_ind, col_ind):
          max_scores[row] = max(max_scores[row], scores[row, column])
      return max_scores
  
imports: import inspect
  import numpy
  import re
  import string
  import lm_eval.datasets.drop.drop
  from scipy.optimize import linear_sum_assignment
  from lm_eval.base import Task, rf
  from lm_eval.metrics import mean
label_desc: Use image node_id 17 for calling the DROP obj's underlying member method code with example usage: obj._align_bags(predicted, gold) and returns: max_scores