(self, predictions, references)
| 316 | super().__init__() |
| 317 | |
| 318 | def score(self, predictions, references): |
| 319 | if len(predictions) != len(references): |
| 320 | return { |
| 321 | 'error': 'predictions and references have different ' |
| 322 | 'length' |
| 323 | } |
| 324 | |
| 325 | avg_score = 0 |
| 326 | details = [] |
| 327 | for prediction, reference in zip(predictions, references): |
| 328 | pred = extract_number(prediction) |
| 329 | ans = extract_number(reference) |
| 330 | if not pred: |
| 331 | pred = 0 |
| 332 | else: |
| 333 | pred = pred[0] |
| 334 | try: |
| 335 | ans = ans[0] |
| 336 | except: |
| 337 | raise ValueError(f'ans: {reference}') |
| 338 | detail = {'pred': pred, 'answer': ans} |
| 339 | rmse_score = np.sqrt(np.mean((np.array(pred) - np.array(ans))**2)) |
| 340 | detail['score'] = rmse_score |
| 341 | avg_score += rmse_score |
| 342 | details.append(detail) |
| 343 | |
| 344 | score = avg_score / len(predictions) |
| 345 | |
| 346 | return {'score': score, 'details': details} |
| 347 | |
| 348 | |
| 349 | @ICL_EVALUATORS.register_module() |
nothing calls this directly
no test coverage detected