Neironu mašīntulkošana (NMT) ir standarta uzdevums NLP kas ietver teksta tulkošanu no avota valodas uz mērķa valodu. BLEU (Bilingual Evaluation Understudy) ir punktu skaits, ko izmanto, lai novērtētu mašīntulkotāja veiktos tulkojumus. Šajā rakstā mēs redzēsim matemātiku aiz BLEU rezultāta un tā ieviešanu Python.
Satura rādītājs
- Kas ir BLEU Score?
- Matemātiskā izteiksme BLEU rezultātam
- Kā aprēķināt BLEU rezultātu?
- BLEU Score ieviešana Python
Kas ir BLEU Score?
Kā minēts iepriekš, BLEU Score ir mašīntulkošanas uzdevumu novērtēšanas metrika. To aprēķina, salīdzinot n-grami mašīntulkotu teikumu n-grammā cilvēka tulkoto teikumu. Parasti ir novērots, ka BLEU rādītājs samazinās, palielinoties teikuma garumam. Tomēr tas var atšķirties atkarībā no tulkošanai izmantotā modeļa. Tālāk ir parādīts grafiks, kurā attēlotas BLEU rezultāta variācijas ar teikuma garumu.
Matemātiskā izteiksme BLEU rezultātam
Matemātiski BLEU rezultāts tiek dots šādi:
BLEU Score = BP * exp(sum_{i=1}^{N}(w_i * ln(p_i))
gimp dzēšanas fonsŠeit,
- BP apzīmē Īsuma sods
w_i ir svars n-gramu precizitātei i secībā (parasti svari ir vienādi visiem i)p_i ir n-gramu modificēts precizitātes rādītājs i secībā.- N ir maksimālā n-gramu secība, kas jāņem vērā (parasti līdz 4)
Modificēta n-gramu precizitāte (p_i )
Modificēta precizitāte
p_i = frac{ ext{Count Clip}(matches_i, ext{max-ref-count}_i)}{ ext{candidate-n-grams}_i}
Šeit,
- Skaitīt klipus ir funkcija, kas izgriež atbilstošo n-gramu skaitu (
matches_i ) pēc maksimālā n-gramu skaita visos atsauces tulkojumos (ext{max-ref-count}_i .matches_i ir atbilstošo n-gramu kārtas i skaits tieši tā starp kandidāta tulkojumu un jebkuru no atsauces tulkojumiem.ext{max-ref-count}_i ir maksimālais konkrētās kārtas n-gramu gadījumu skaits, ko es atradu jebkurā atsevišķā atsauces tulkojumā.ext{candidate-n-grams}_i ir kopējais n-gramu secības i skaits kandidāta tulkojumā.
Īsuma sods (BP)
Īsuma sods uzliek sodu par tulkojumiem, kas ir īsāki par atsauces tulkojumiem. Matemātiskā izteiksme priekš Īsuma sods tiek sniegts šādi:
BP = exp(1- frac{r}{c}) Šeit,
- r ir kandidāta tulkojuma garums
- c ir atsauces tulkojumu vidējais garums.
Kā aprēķināt BLEU rezultātu?
Lai labāk izprastu BLEU Score aprēķināšanu, ņemsim piemēru. Tālāk ir sniegts tulkojums franču–angļu valodā:
- Avotteksts (franču valodā) : uz šī attēla esmu noklikšķinājis es
- Mašīntulkotais teksts : bilde bilde manis
- Atsauces teksts-1 : šo attēlu esmu noklikšķinājis es
- Atsauces teksts-2 : uz bildes noklikšķināju es
Mēs skaidri redzam, ka mašīnas veiktais tulkojums nav precīzs. Aprēķināsim tulkojuma BLEU punktu skaitu.
Unigram modificēta precizitāte
Priekš n = 1, mēs aprēķināsim Unigram modificētā precizitāte:
| Unigram | Skaitīšana mašīntulkošanā | Maksimālais skaits atsaucē | Apgrieztais skaits = min (skaits MT, maksimālais skaits atsaucē) |
|---|---|---|---|
| uz | 2 | 1 | 1 |
| bilde | 2 | 1 | 1 |
| autors | 1 | 1 | 1 |
| es | 1 | 1 | 1 |
Šeit unigrammas (the, picture, by, me) ir ņemtas no mašīntulkotā teksta. Skaits attiecas uz n-gramu biežumu visā mašīntulkotā tekstā, un apgrieztais skaits attiecas uz unigrammu biežumu atsauces tekstos kopumā.
1 līdz 100 romiešu Nr
Biggram modificēta precizitāte
Priekš n = 2 , mēs aprēķināsim Biggram modificēta precizitāte :
| Bigrams | Skaitīt MT | Maksimālais skaits atsaucē | Apgrieztais skaits = min (skaits MT, maksimālais skaits atsaucē) |
|---|---|---|---|
| bilde | 2 | 1 | 1 |
| attēlu | 1 | 0 | 0 |
| attēlu autors | 1 | 0 | 0 |
| no manis | 1 | 1 | 1 |
Trigram modificēta precizitāte
Priekš n = 3 , mēs aprēķināsim Trigram modificēta precizitāte:
| Trigramma | Skaitīt MT | Maksimālais skaits atsaucē | Apgriezto skaits = min (skaits MT, maksimālais skaits atsaucē) |
|---|---|---|---|
| bilde | 1 | 0 | 0 |
| attēlo attēlu | 1 | 0 | 0 |
| attēlu autors | 1 | 0 cast virkni int java | 0 |
| manis bilde | 1 | 0 | 0 |
4 gramu modificēta precizitāte
Priekš n = 4 , mēs aprēķināsim 4 gramu modificēta precizitāte:
| 4 grami | Skaitīt | Maksimālais skaits atsaucē | Apgriezto skaits = min (skaits MT, maksimālais skaits atsaucē) |
|---|---|---|---|
| bilde bilde | 1 | 0 | 0 |
| attēlo attēlu ar | 1 | 0 | 0 |
| bilde manis | 1 | 0 | 0 |
Īsuma soda aprēķināšana
Tagad mēs esam aprēķinājuši visus precizitātes rādītājus, atradīsim tulkojuma īsuma sodu:
- Mašīntulkojuma izvades garums = 6 (mašīntulkots teksts: attēls ir manis veidots)
- Maksimālais atsauces izvades garums = 6 (atsauces teksts-2: es noklikšķināju uz attēla)
BLEU rezultātu aprēķināšana
Visbeidzot, BLEU punktu iepriekšminētajam tulkojumam nosaka:
Aizstājot vērtības, mēs iegūstam,
nejauši nav ģeneratora java
Visbeidzot, mēs esam aprēķinājuši BLEU punktu skaitu dotajam tulkojumam.
BLEU Score ieviešana Python
Manuāli aprēķinot BLEU punktu, tagad cilvēks ir pieradis pie BLEU rezultāta matemātiskās darbības. Tomēr Python NLTK nodrošina iebūvētu moduli BLEU punktu skaita aprēķināšanai. Aprēķināsim BLEU rezultātu tam pašam tulkošanas piemēram, kā minēts iepriekš, bet šoreiz izmantojot NLTK.
Kods:
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.>