Scorery deterministyczne
Scorery sekwencyjne: BLEU, chrF, ROUGE
Aktualizacja: 11 października 2026
Po co n-gramy
W tłumaczeniu i streszczeniu nie istnieje jedna poprawna sekwencja słów. Miary n-gramowe porównują wyjście z referencją na poziomie fragmentów długości : nagradzają zgodność lokalną i tolerują przestawienia.
BLEU — precyzja z karą za zwięzłość
BLEU uśrednia (logarytmicznie) precyzje n-gramowe dla i mnoży przez karę za zbyt krótkie wyjście (brevity penalty):
gdzie to długość referencji, a długość wyjścia. Kara pilnuje, by model nie „oszczędzał" na długości: krótkie, pewne n-gramy dają wysoką precyzję, ale nie tłumaczenie. Karta: BLEU / chrF.
chrF — F-score na n-gramach znakowych
chrF liczy precyzję i recall n-gramów znakowych, przez co jest mniej wrażliwy na morfologię i tokenizację niż BLEU:
Popularny wariant waży recall dwukrotnie (chrF2) i bywa uznawany za stabilniejszą alternatywę BLEU przy porównywaniu systemów tłumaczeniowych.
ROUGE — rodzina zorientowana na recall
ROUGE odwraca akcent: dla streszczeń ważne jest, ile treści referencji pokrywa wyjście. ROUGE-N to recall n-gramów:
ROUGE-L używa zamiast n-gramów najdłuższego wspólnego podciągu. Karta: ROUGE.
Kiedy która miara
BLEU i chrF sprawdzają się w tłumaczeniu (ocena korpusowa, najlepiej z wieloma referencjami), ROUGE w streszczeniu, gdzie liczy się pokrycie treści. Żadna z nich nie nadaje się do oceny pojedynczej odpowiedzi QA — tam zbyt wiele zależy od konkretnego sformułowania.
W praktyce: jedna biblioteka, jeden protokół
Wyniki BLEU i chrF zależą od tokenizacji — potrafi ona przesunąć wynik o kilka punktów, a implementacje różnie traktują diakrytyki i interpunkcję — dlatego porównuj wyłącznie liczby z tej samej biblioteki:
import sacrebleu
ref = ["Kot siedzi na macie."]
hyp = "Kot leży na macie."
print(sacrebleu.sentence_bleu(hyp, ref).score)
print(sacrebleu.sentence_chrf(hyp, ref).score)Źródła: BLEU (Papineni i in.), chrF (Popović), ROUGE (Lin), SacreBLEU.