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?
- Matematický výraz pre skóre BLEU
- Ako vypočítať skóre BLEU?
- Implementácia skóre BLEU v Pythone
Č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))
ako previesť celé číslo na reťazec javaTu,
- 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 = 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 v regexe java | 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.
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 |
ako zatvoriť režim vývojára
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 |
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 java inak ak | 0 |
| obrázok odo mňa | 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:
- 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)
Výpočet skóre BLEU
Nakoniec, skóre BLEU pre vyššie uvedený preklad je dané:
Nahradením hodnôt dostaneme,
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.>