code: def get_item_metric_pair(item_lst, metric_lst, id_lst):
      
      query_dic = {}  # key is qid, value is list, whose elements are tuple eg: count of words, bleu score pairs
      for index in range(len(metric_lst)):
          current_id = id_lst[index]
          current_bleu = metric_lst[index]
          current_rank_score = item_lst[index]
          if current_id in query_dic:
              query_dic[current_id].append((current_rank_score, current_bleu))
          else:
              query_dic[current_id] = []
              query_dic[current_id].append((current_rank_score, current_bleu))
      return query_dic
docs: align bleu and specific score in item_lst, reconstruct the data as (rank_score, bleu) pairs, query_dic.
      Detail:
          query dict is input parameter used by metrics: top-x-bleu, kendall-tau
          query dict is reconstructed dict type data container,
          query dict's key is qid and value is list type, whose elements are tuple eg: count of words, bleu score pairs
      :param item_lst: the score value lst that used to rank candidates
      :param metric_lst: the metric value aligned with item_lst
      :return: query_dic