code: def align(
      cls, trg_tokens: List[str], tokens: Dict[str, List[str]]
  ) -> Dict[str, List[Tuple[int, Enum]]]:
      aligned = {
          i: cls._align(
              trg_tokens,
              t,
              pos_label=VizSeqRefHypoAlignmentType.confirmed,
              neg_label=VizSeqRefHypoAlignmentType.unconfirmed,
          )
          for i, t in tokens.items()
      }
  
      counter = {
          VizSeqRefHypoAlignmentType.confirmed: Counter(),
          VizSeqRefHypoAlignmentType.unconfirmed: Counter(),
      }
  
      for k, a in aligned.items():
          for i, e in enumerate(a):
              label = e[1]
              if label in counter:
                  token = tokens[k][i]
                  counter[label].update([token])
  
      new_label_map = {
          VizSeqRefHypoAlignmentType.confirmed: VizSeqRefHypoAlignmentType.improving,
          VizSeqRefHypoAlignmentType.unconfirmed: VizSeqRefHypoAlignmentType.worsening,
      }
      cross_aligned = {}
      for k, a in aligned.items():
          cur = []
          for i, e in enumerate(a):
              label = e[1]
              token = tokens[k][i]
              if counter[label][token] == 1:
                  cur.append((e[0], new_label_map[label]))
              else:
                  cur.append(e)
          cross_aligned[k] = cur
      return cross_aligned
  
file_path: vizseq/vizseq/_aligners/text_aligner.py
imports: from typing import List, Tuple, Dict
  from collections import Counter
  from enum import Enum
  from nltk.translate.ribes_score import word_rank_alignment
label_desc: Use image node_id 1 for calling the VizseqRefHypoTextAligner obj's underlying member method code with example usage: obj.align(cls, trg_tokens, tokens) and returns: cross_aligned