Skóre NLP – BLEU pre hodnotenie neurónového strojového prekladu – Python

Neurónový strojový preklad (NMT) je štandardná úloha v NLP ktorá zahŕňa preklad textu zo zdrojového jazyka do cieľového jazyka. BLEU (Bilingual Evaluation Understudy) je skóre používané na hodnotenie prekladov vykonaných strojovým prekladačom. V tomto článku uvidíme matematiku za skóre BLEU a jeho implementáciu v Pythone.

Obsah

Čo je skóre BLEU?

Ako je uvedené vyššie, BLEU skóre je hodnotiaca metrika pre úlohy strojového prekladu. Vypočítava sa porovnaním n-gramov strojovo preložených viet na n-gram viet preložených človekom. Zvyčajne sa pozorovalo, že skóre BLEU sa znižuje so zvyšujúcou sa dĺžkou vety. To sa však môže líšiť v závislosti od modelu použitého na preklad. Nasleduje graf znázorňujúci variáciu skóre BLEU s dĺžkou vety.

Matematický výraz pre skóre BLEU

Matematicky je skóre BLEU dané takto:

BLEU Score = BP * exp(sum_{i=1}^{N}(w_i * ln(p_i))

Tu,

  • BP znamenať Trest za stručnosť
  • w_i je hmotnosť pre n-gramovú presnosť rádu i (zvyčajne sú hmotnosti rovnaké pre všetky i)
  • p_i je n-gram modifikované skóre presnosti rádu i.
  • N je maximálne poradie n-gramov, ktoré treba zvážiť (zvyčajne do 4)

Upravená n-gramová presnosť ( p_i )

Upravená presnosť p_i sa skutočne vypočíta ako pomer medzi počtom n -gramy v kandidátskom preklade, ktoré sa presne zhodujú n -gramov v ktoromkoľvek z referenčných prekladov, skrátených o počet n -gramy v kandidátskom preklade.

p_i = frac{ ext{Count Clip}(matches_i, ext{max-ref-count}_i)}{ ext{candidate-n-grams}_i}

Tu,

  • Count Clips je funkcia, ktorá orezáva počet zhodných n-gramov ( matches_i ) podľa maximálneho počtu n-gramov vo všetkých referenčných prekladoch ( ext{max-ref-count}_i .
  • matches_i je počet n-gramov rádu i, ktoré sa zhodujú presne tak medzi kandidátskym prekladom a ktorýmkoľvek referenčným prekladom.
  • ext{max-ref-count}_i je maximálny počet výskytov konkrétneho n-gramového rádu, ktorý som našiel v každom jednom referenčnom preklade.
  • ext{candidate-n-grams}_i je celkový počet n-gramov rádu i prítomných v kandidátskom preklade.

Trest za krátkosť (BP)

Trest za stručnosť penalizuje preklady, ktoré sú kratšie ako referenčné preklady. Matematický výraz pre Trest za stručnosť sa uvádza takto:

BP = exp(1- frac{r}{c})

Tu,

  • r je dĺžka kandidátskeho prekladu
  • c je priemerná dĺžka referenčných prekladov.

Ako vypočítať skóre BLEU?

Pre lepšie pochopenie výpočtu skóre BLEU si uveďme príklad. Nasleduje príklad prekladu z francúzštiny do angličtiny:

  • Zdrojový text (francúzština) : na tento obrázok som klikol ja
  • Strojovo preložený text : obrázok obrázok odo mňa
  • Referenčný text-1 : na tento obrázok som klikol ja
  • Referenčný text-2 : na obrázok som klikol ja

Jasne vidíme, že preklad vykonaný strojom nie je presný. Vypočítajme skóre BLEU pre preklad.

Unigram upravená presnosť

Pre n = 1, vypočítame si Unigram upravená presnosť:

Unigram Počítajte v strojovom preklade

Maximálny počet v Ref

Počet orezaných =
min (počet v MT, maximálny počet v referencii)
a 2

1

1
obrázok 2

1

1
podľa 1

1

1
ja 1

1

1

Tu sú unigramy (the, picture, by, me) prevzaté zo strojovo preloženého textu. Počet sa vzťahuje na frekvenciu n-gramov vo všetkých strojovo preložených textoch a počet orezaných sa vzťahuje na frekvenciu unigramov v referenčných textoch spoločne.

P_1 = frac{ ext{Clipped Count}}{ ext{Count in MT}} = frac{1+1+1+1}{2+2+1+1} =frac{4}{6} = frac{2}{3}

Bigram modifikovaná presnosť

Pre n = 2 , vypočítame Bigram modifikovaná presnosť :

Bigramy Počítajte v MT

Maximálny počet v Ref

Počet orezaných =
min (počet v MT, maximálny počet v referencii)
obrázok 2

1

1
predstavte si 1

0

0
obrázok od 1

0

0
mnou 1

1

1

P_2 = frac{ ext{Clip Count}}{ ext{Count in MT}} = frac{2}{5}

Trigram upravená presnosť

Pre n = 3 , vypočítame Trigram upravená presnosť:

Trigram Počítajte v MT

Maximálny počet v Ref

Počet orezaných =
min (počet v MT, maximálny počet v referencii)
obrázok 1

0

0
predstavte si obrázok 1

0

0
obrázok podľa 1

0

0
obrázok odo mňa 1

0

0

P_3 = frac{0+0+0+0}{1+1+1+1} =0.0

4-gramová modifikovaná presnosť

Pre n = 4 , vypočítame 4-gramová modifikovaná presnosť:

4-gramový počítať

Maximálny počet v Ref

Počet orezaných =
min (počet v MT, maximálny počet v referencii)
obrázok obrázok 1

0

0
obrázok podľa 1

0

0
obrázok odo mňa 1

0

0

P_4 = frac{0+0+0}{1+1+1} =0.0

Výpočet trestu za krátkosť

Teraz sme vypočítali všetky skóre presnosti, poďme nájsť trest za krátkosť prekladu:

Brevity Penalty = min(1, frac{Machine,Translation,Output,Length}{Maximum,Reference,Output,Length})

  • Dĺžka výstupu strojového prekladu = 6 (Text preložený strojom: obrázok, obrázok odo mňa)
  • Maximálna referenčná výstupná dĺžka = 6 (Referenčný text-2: klikol som na obrázok)

Brevity Penalty (BP) = min(1, frac{6}{6}) = 1

Výpočet skóre BLEU

Nakoniec, skóre BLEU pre vyššie uvedený preklad je dané:

BLEU Score = BP * exp(sum_{n=1}^{4} w_i * log(p_i))

Nahradením hodnôt dostaneme,

ext{BLEU Score} = 1 * exp(0.25*ln(2/3) + 0.25*ln(2/5) + 0*ln(0) + 0*ln(0))

ext{BLEU Score} = 0.718

Nakoniec sme vypočítali skóre BLEU pre daný preklad.

Implementácia skóre BLEU v Pythone

Po manuálnom vypočítaní skóre BLEU je človek už zvyknutý na matematické fungovanie skóre BLEU. Avšak, Python's NLTK poskytuje vstavaný modul na výpočet skóre BLEU. Vypočítajme skóre BLEU pre rovnaký príklad prekladu ako vyššie, ale tentoraz pomocou NLTK.

kód:

Python3

from> nltk.translate.bleu_score> import> sentence_bleu> # Define your desired weights (example: higher weight for bi-grams)> weights> => (> 0.25> ,> 0.25> ,> 0> ,> 0> )> # Weights for uni-gram, bi-gram, tri-gram, and 4-gram> # Reference and predicted texts (same as before)> reference> => [[> 'the'> ,> 'picture'> ,> 'is'> ,> 'clicked'> ,> 'by'> ,> 'me'> ],> > [> 'this'> ,> 'picture'> ,> 'was'> ,> 'clicked'> ,> 'by'> ,> 'me'> ]]> predictions> => [> 'the'> ,> 'picture'> ,> 'the'> ,> 'picture'> ,> 'by'> ,> 'me'> ]> # Calculate BLEU score with weights> score> => sentence_bleu(reference, predictions, weights> => weights)> print> (score)>
     Output:   0.7186082239261684 We can see that the BLEU score computed using Python is the same as the one computed manually. Thus, we have successfully calculated the BLEU score and understood the mathematics behind it.