|
|
|
|
|
|
|
|
|
|
|
from fairseq.scoring import BaseScorer, register_scorer |
|
|
|
|
|
@register_scorer("chrf") |
|
class ChrFScorer(BaseScorer): |
|
def __init__(self, args): |
|
super(ChrFScorer, self).__init__(args) |
|
import sacrebleu |
|
|
|
self.sacrebleu = sacrebleu |
|
|
|
def add_string(self, ref, pred): |
|
self.ref.append(ref) |
|
self.pred.append(pred) |
|
|
|
def score(self, order=4): |
|
return self.result_string(order).score |
|
|
|
def result_string(self, order=4): |
|
if order != 4: |
|
raise NotImplementedError |
|
return self.sacrebleu.corpus_chrf(self.pred, [self.ref]).format() |
|
|