Neuroninis mašininis vertimas (NMT) yra standartinė užduotis NLP Tai apima teksto vertimą iš šaltinio kalbos į tikslinę kalbą. BLEU (dvikalbio vertinimo studija) yra balas, naudojamas mašininio vertėjo atliekamiems vertimams įvertinti. Šiame straipsnyje apžvelgsime BLEU balo matematiką ir jo įgyvendinimą Python.
Turinys
- Kas yra BLEU Score?
- BLEU balo matematinė išraiška
- Kaip apskaičiuoti BLEU balą?
- BLEU balų diegimas Python
Kas yra BLEU Score?
Kaip minėta pirmiau, BLEU Score yra mašininio vertimo užduočių vertinimo metrika. Jis apskaičiuojamas lyginant n-gramų mašininiu būdu išverstų sakinių į n-gramą žmogaus išverstų sakinių. Paprastai buvo pastebėta, kad ilgėjant sakinio trukmei BLEU balas mažėja. Tačiau tai gali skirtis priklausomai nuo vertimui naudojamo modelio. Toliau pateikiamas grafikas, kuriame pavaizduotas BLEU balo kitimas su sakinio ilgiu.
BLEU balo matematinė išraiška
Matematiškai BLEU balas pateikiamas taip:
BLEU Score = BP * exp(sum_{i=1}^{N}(w_i * ln(p_i))
yra santykiaiČia
- BP reiškia Trumpumo bausmė
w_i yra i eilės n-gramų tikslumo svoris (paprastai svoriai yra vienodi visiems i)p_i yra n-gramų modifikuotas i eilės tikslumo balas.- N yra didžiausia n-gramų tvarka, į kurią reikia atsižvelgti (paprastai iki 4)
Modifikuotas n gramų tikslumas (p_i )
Pakeistas tikslumas
p_i = frac{ ext{Count Clip}(matches_i, ext{max-ref-count}_i)}{ ext{candidate-n-grams}_i}
Čia
- Skaičiuoti klipus yra funkcija, kuri sutrumpina suderintų n-gramų skaičių (
matches_i ) pagal didžiausią n-gramų skaičių visuose nuorodiniuose vertimuose (ext{max-ref-count}_i .matches_i yra i eilės atitinkančių n-gramų skaičius tiksliai tarp kandidato vertimo ir bet kurio etaloninio vertimo.ext{max-ref-count}_i yra didžiausias konkretaus n-gramo eilės atvejų skaičius, kurį radau bet kuriame atskirame nuorodos vertime.ext{candidate-n-grams}_i yra bendras i eilės n gramų skaičius kandidatiniame vertime.
Trumpumo bauda (BP)
Trumpumo bausmė baudžia už vertimus, kurie yra trumpesni už pamatinius vertimus. Matematinė išraiška už Trumpumo bausmė pateikiama taip:
BP = exp(1- frac{r}{c}) Čia
- r yra kandidato vertimo ilgis
- c yra vidutinė nuorodų vertimų trukmė.
Kaip apskaičiuoti BLEU balą?
Norėdami geriau suprasti BLEU balo skaičiavimą, paimkime pavyzdį. Toliau pateikiamas vertimo iš prancūzų į anglų atvejis:
- Šaltinio tekstas (prancūzų k.) : šį vaizdą spustelėjau aš
- Mašininio vertimo tekstas : nuotrauka mano nuotrauka
- Nuorodos tekstas-1 : šią nuotrauką spustelėjau aš
- Nuorodos tekstas-2 : nuotrauką paspaudžiau aš
Aiškiai matome, kad mašinos atliktas vertimas nėra tikslus. Apskaičiuokime vertimo BLEU balą.
kaip pervardyti katalogą linux
Unigram modifikuotas tikslumas
Dėl n = 1, mes apskaičiuosime Unigram modifikuotas tikslumas:
| Unigrama | Skaičiavimas mašininiame vertime | Maksimalus skaičius nuorodoje | Iškarpytas skaičius = min (skaičius MT, maksimalus skaičius nuorodoje) |
|---|---|---|---|
| į | 2 | 1 | 1 |
| paveikslėlį | 2 | 1 | 1 |
| pateikė | 1 | 1 | 1 |
| aš | 1 | 1 | 1 |
Čia unigramos (the, picture, by, me) paimtos iš mašininiu būdu išversto teksto. Skaičius reiškia n-gramų dažnį visame mašininiu būdu išverstame tekste, o apkarpytas skaičius reiškia unigramų dažnį nuorodiniuose tekstuose bendrai.
„Bigram“ modifikuotas tikslumas
Dėl n = 2 , mes apskaičiuosime „Bigram“ modifikuotas tikslumas :
| Bigramai | Skaičiuokite MT | Maksimalus skaičius nuorodoje | Iškarpytas skaičius = min (skaičius MT, maksimalus skaičius nuorodoje) |
|---|---|---|---|
| Nuotrauka | 2 | 1 | 1 |
| pavaizduoti | 1 | 0 | 0 |
| nuotrauka pagal | 1 | 0 „Java“ įtraukimas į masyvą | 0 |
| pas mane | 1 | 1 | 1 |
Trigramos modifikuotas tikslumas
Dėl n = 3 , mes apskaičiuosime Trigramos modifikuotas tikslumas:
| Trigrama | Skaičiuokite MT | Maksimalus skaičius nuorodoje | Iškarpytas skaičius = min (skaičius MT, maksimalus skaičius nuorodoje) |
|---|---|---|---|
| paveikslas | 1 | 0 | 0 |
| pavaizduoti paveikslėlį | 1 | 0 | 0 |
| paveikslėlį pateikė | 1 | 0 | 0 |
| mano nuotrauka | 1 | 0 | 0 |
4 gramų modifikuotas tikslumas
Dėl n = 4 , mes apskaičiuosime 4 gramų modifikuotas tikslumas:
| 4 gramai | Suskaičiuoti | Maksimalus skaičius nuorodoje | Iškarpytas skaičius = min (skaičius MT, maksimalus skaičius nuorodoje) |
|---|---|---|---|
| paveikslas paveikslas | 1 | 0 | 0 |
| pavaizduokite paveikslėlį pagal | 1 | 0 | 0 |
| mano nuotrauka | 1 | 0 | 0 |
Trumpumo skaičiavimas
Dabar apskaičiavome visus tikslumo balus, suraskime vertimo trumpumo baudą:
- Mašininio vertimo išvesties ilgis = 6 (Mašininiu būdu išverstas tekstas: paveikslėlis mano)
- Maksimalus atskaitos išvesties ilgis = 6 (2 nuoroda: paveikslėlį spustelėjau aš)
BLEU balo skaičiavimas
Galiausiai aukščiau pateikto vertimo BLEU balas gaunamas taip:
Pakeitę reikšmes, gauname,
Galiausiai apskaičiavome nurodyto vertimo BLEU balą.
BLEU balų diegimas Python
Apskaičiavus BLEU balą rankiniu būdu, dabar žmogus yra pripratęs prie matematinio BLEU balo veikimo. Tačiau Python's NLTK suteikia įmontuotą modulį BLEU balų skaičiavimui. Apskaičiuokime BLEU balą tam pačiam vertimo pavyzdžiui, kaip nurodyta aukščiau, bet šį kartą naudodami NLTK.
masyvas java
Kodas:
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.>