Traducere automată neuronală (NMT) este o sarcină standard în NLP care implică traducerea unui text dintr-o limbă sursă într-o limbă țintă. BLEU (Substudiu de evaluare bilingvă) este un scor folosit pentru a evalua traducerile efectuate de un traducător automat. În acest articol, vom vedea matematica din spatele scorului BLEU și implementarea acestuia în Python.
Cuprins
- Ce este Scorul BLEU?
- Expresie matematică pentru scorul BLEU
- Cum se calculează scorul BLEU?
- Implementarea scorului BLEU în Python
Ce este Scorul BLEU?
După cum sa menționat mai sus, Scorul BLEU este o măsurătoare de evaluare pentru sarcinile de traducere automată. Se calculează prin compararea n-grame de propoziții traduse automat la n-gramul de propoziții traduse de om. De obicei, s-a observat că scorul BLEU scade pe măsură ce lungimea propoziției crește. Totuși, aceasta poate varia în funcție de modelul utilizat pentru traducere. Următorul este un grafic care ilustrează variația Scorului BLEU cu lungimea propoziției.
Expresie matematică pentru scorul BLEU
Din punct de vedere matematic, Scorul BLEU este dat după cum urmează:
BLEU Score = BP * exp(sum_{i=1}^{N}(w_i * ln(p_i))
conversia obiectului în șirAici,
- BP reprezintă Concizie pedeapsă
w_i este greutatea pentru precizia n-gram de ordinul i (de obicei, greutățile sunt egale pentru tot i)p_i este scorul de precizie modificat cu n grame de ordinul i.- N este ordinea maximă de n grame de luat în considerare (de obicei până la 4)
Precizie n-gram modificată (p_i )
Precizia modificată
p_i = frac{ ext{Count Clip}(matches_i, ext{max-ref-count}_i)}{ ext{candidate-n-grams}_i}
Aici,
- Count Clips este o funcție care decupează numărul de n-grame potrivite (
matches_i )cu numărul maxim al n-gramului în toate traducerile de referință (ext{max-ref-count}_i .matches_i este numărul de n-grame de ordinul i care se potrivesc exact între traducerea candidatului și oricare dintre traducerile de referință.ext{max-ref-count}_i este numărul maxim de apariții ale n-gramului specific de ordine pe care l-am găsit în orice traducere de referință.ext{candidate-n-grams}_i este numărul total de n-grame de ordin pe care le prezint în traducerea candidatului.
Penalizare de concizie (BP)
Concizie pedeapsă penalizează traducerile care sunt mai scurte decât traducerile de referință. Expresia matematică pentru Concizie pedeapsă este dat după cum urmează:
BP = exp(1- frac{r}{c}) Aici,
- r este lungimea traducerii candidatului
- c este lungimea medie a traducerilor de referință.
Cum se calculează scorul BLEU?
Pentru o mai bună înțelegere a calculului Scorului BLEU, să luăm un exemplu. Următorul este un caz pentru traducerea din franceză în engleză:
- Text sursă (franceză) : această imagine este făcută clic de mine
- Text tradus automat : poza poza de mine
- Text de referință-1 : această imagine este făcută clic de mine
- Text de referință-2 : poza a fost făcută clic de mine
Putem vedea clar că traducerea făcută de mașină nu este exactă. Să calculăm scorul BLEU pentru traducere.
Precizie modificată Unigram
Pentru n = 1, vom calcula Precizie modificată la Unigram:
| Unigramă | Număr în traducere automată | Număr maxim în Ref | Număr tăiat = min (Număr în MT, Număr maxim în Ref) |
|---|---|---|---|
| cel | 2 | 1 | 1 |
| imagine | 2 | 1 | 1 |
| de | 1 | 1 | 1 |
| pe mine | 1 | 1 | 1 |
Aici unigramele (the, picture, by, me) sunt preluate din textul tradus automat. Numărătoarea se referă la frecvența n-gramelor în tot textul tradus automat, iar Numărarea tăiată se referă la frecvența unigramelor în textele de referință în mod colectiv.
Precizie modificata Bigram
Pentru n = 2 , vom calcula Precizie modificata Bigram :
| Bigrame | Numărați în MT | Număr maxim în Ref | Număr tăiat = min (Număr în MT, Număr maxim în Ref) |
|---|---|---|---|
| fotografia | 2 | 1 îmbunătățit pentru buclă java | 1 |
| imagineaza-te pe | 1 | 0 | 0 |
| poza de | 1 | 0 | 0 |
| de mine | 1 | 1 | 1 |
Precizie modificată cu trigramă
Pentru n = 3 , vom calcula Precizie modificată cu trigramă:
| Trigramă | Numărați în MT | Număr maxim în Ref | Număr tăiat = min (Număr în MT, Număr maxim în Ref) |
|---|---|---|---|
| poza | 1 | 0 | 0 |
| imagineaza poza | 1 | 0 | 0 |
| poza de | 1 | 0 | 0 |
| poza de mine | 1 | 0 | 0 |
Precizie modificată de 4 grame
Pentru n =4 , vom calcula Precizie modificată de 4 grame:
| 4 grame | Numara | Număr maxim în Ref superscript în ilustrator | Număr tăiat = min (Număr în MT, Număr maxim în Ref) |
|---|---|---|---|
| poza poza | 1 | 0 | 0 |
| imagineaza-te cu poza | 1 | 0 | 0 |
| poza facuta de mine | 1 | 0 | 0 |
Calculul pedepsei de concizie
Acum am calculat toate scorurile de precizie, haideți să găsim penalitatea de concizie pentru traducere:
- Lungimea de ieșire a traducerii automate = 6 (Text tradus automat: imaginea poza mea)
- Lungime maximă de ieșire de referință = 6 (Text de referință-2: imaginea a fost făcută clic de mine)
Calcul BLEU Scor
În cele din urmă, scorul BLEU pentru traducerea de mai sus este dat de:
Înlocuind valorile, obținem,
În cele din urmă, am calculat scorul BLEU pentru traducerea dată.
ce este 10 din 1 milion
Implementarea scorului BLEU în Python
După ce s-a calculat manual Scorul BLEU, acum suntem obișnuiți cu funcționarea matematică a scorului BLEU. Cu toate acestea, Python’s NLTK oferă un modul încorporat pentru calculul scorului BLEU. Să calculăm scorul BLEU pentru același exemplu de traducere ca mai sus, dar de data aceasta folosind NLTK.
Cod:
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.>