code: def get_sent_scores(
      self, hypothesis: List[str], references: List[List[str]]
  ) -> List[float]:
      self.n_examples = len(hypothesis)
      self.ref_len = np.log(self.n_examples)
  
      self._get_idf(references)
  
      scores = []
      hypo = _multiprocess_batch_extract_n_grams(
          hypothesis, self.n, self.n_workers, self.verbose
      )
      for h, cur_refs in zip(hypo, self.refs):
          vec_h, norm_h, len_h = self._counts_to_vec(h)
          score = np.array([0.0 for _ in range(self.n)])
          for r in cur_refs:
              vec_r, norm_r, len_r = self._counts_to_vec(r)
              score += self._get_sim(
                  vec_h, vec_r, norm_h, norm_r, len_h, len_r, self.sigma
              )
          score_avg = np.mean(score) / len(cur_refs) * 10.0
          scores.append(score_avg)
      return scores
  
file_path: vizseq/vizseq/scorers/_cider/__init__.py
imports: from typing import List, Dict, Tuple
  from collections import defaultdict
  import math
  from concurrent.futures import ProcessPoolExecutor, as_completed
  import numpy
  from tqdm import tqdm
label_desc: Use image node_id 5 for calling the _CIDErScorer obj's underlying member method code with example usage: obj.get_sent_scores(hypothesis, references) and returns: scores