code: def _match_enums(
      enum_hypothesis_list: List[Tuple[int, str]],
      enum_reference_list: List[Tuple[int, str]],
  ) -> Tuple[
      List[Tuple[int, int]],
      List[Tuple[int, str]],
      List[Tuple[int, str]],
  ]:
      """
      matches exact words in hypothesis and reference and returns
      a word mapping between enum_hypothesis_list and enum_reference_list
      based on the enumerated word id.
  
      :param enum_hypothesis_list: enumerated hypothesis list
      :param enum_reference_list: enumerated reference list
      :return: enumerated matched tuples, enumerated unmatched hypothesis tuples,
               enumerated unmatched reference tuples
      """
      word_match = []
      for i in range(len(enum_hypothesis_list))[::-1]:
          for j in range(len(enum_reference_list))[::-1]:
              if (
                  enum_hypothesis_list[i][1]
                  == enum_reference_list[j][1]
              ):
                  word_match.append(
                      (
                          enum_hypothesis_list[i][0],
                          enum_reference_list[j][0],
                      )
                  )
                  enum_hypothesis_list.pop(i)
                  enum_reference_list.pop(j)
                  break
      return word_match, enum_hypothesis_list, enum_reference_list
  
file_path: nltk/nltk/translate/meteor_score.py
imports: from itertools import chain, product
  from typing import Callable, Iterable, List, Tuple
  from nltk.corpus import WordNetCorpusReader, wordnet
  from nltk.stem.api import StemmerI
  from nltk.stem.porter import PorterStemmer
label_desc: Use image node_id 3 for calling a global function with example usage: _match_enums(enum_hypothesis_list, enum_reference_list) and returns: word_match,  enum_hypothesis_list,  enum_reference_list