| |
| |
| |
| |
| |
| |
| |
| |
|
|
| from eval_func.cider.cider_scorer import CiderScorer |
| import pdb |
|
|
| class Cider: |
| """ |
| Main Class to compute the CIDEr metric |
| |
| """ |
| def __init__(self, test=None, refs=None, n=4, sigma=6.0): |
| |
| self._n = n |
| |
| self._sigma = sigma |
|
|
| def compute_score(self, gts, res): |
| """ |
| Main function to compute CIDEr score |
| :param hypo_for_image (dict) : dictionary with key <image> and value <tokenized hypothesis / candidate sentence> |
| ref_for_image (dict) : dictionary with key <image> and value <tokenized reference sentence> |
| :return: cider (float) : computed CIDEr score for the corpus |
| """ |
|
|
| cider_scorer = CiderScorer(n=self._n, sigma=self._sigma) |
|
|
| for i in range(len(res)): |
| hypo = res[i] |
| ref = gts[i] |
|
|
| |
| assert(type(hypo) is list) |
| assert(len(hypo) == 1) |
| assert(type(ref) is list) |
| assert(len(ref) > 0) |
|
|
| cider_scorer += (hypo[0], ref) |
|
|
| (score, scores) = cider_scorer.compute_score() |
|
|
| return score, scores |
|
|
| def method(self): |
| return "CIDEr" |