code: def smart_init_mapping(candidate_mapping, instance1, instance2):
      
      random.seed()
      matched_dict = {}
      result = []
      # list to store node indices that have no concept match
      no_word_match = []
      for i, candidates in enumerate(candidate_mapping):
          if not candidates:
              # no possible mapping
              result.append(-1)
              continue
          # node value in instance triples of AMR 1
          value1 = instance1[i][2]
          for node_index in candidates:
              value2 = instance2[node_index][2]
              # find the first instance triple match in the candidates
              # instance triple match is having the same concept value
              if value1 == value2:
                  if node_index not in matched_dict:
                      result.append(node_index)
                      matched_dict[node_index] = 1
                      break
          if len(result) == i:
              no_word_match.append(i)
              result.append(-1)
      # if no concept match, generate a random mapping
      for i in no_word_match:
          candidates = list(candidate_mapping[i])
          while candidates:
              # get a random node index from candidates
              rid = random.randint(0, len(candidates) - 1)
              candidate = candidates[rid]
              if candidate in matched_dict:
                  candidates.pop(rid)
              else:
                  matched_dict[candidate] = 1
                  result[i] = candidate
                  break
      return result
docs: Initialize mapping based on the concept mapping (smart initialization)
      Arguments:
          candidate_mapping: candidate node match list
          instance1: instance triples of AMR 1
          instance2: instance triples of AMR 2
      Returns:
          initialized node mapping between two AMRs