Neuronale maschinelle Übersetzung (NMT) ist eine Standardaufgabe in NLP Dabei handelt es sich um die Übersetzung eines Textes aus einer Ausgangssprache in eine Zielsprache. BLEU (Bilingual Evaluation Understudy) ist eine Bewertung, die zur Bewertung der von einem Maschinenübersetzer durchgeführten Übersetzungen verwendet wird. In diesem Artikel sehen wir uns die Mathematik hinter dem BLEU-Score und seine Implementierung in Python an.
Inhaltsverzeichnis
- Was ist der BLEU-Score?
- Mathematischer Ausdruck für den BLEU-Score
- Wie berechnet man den BLEU-Score?
- BLEU-Score-Implementierung in Python
Was ist der BLEU-Score?
Wie oben erwähnt ist der BLEU-Score eine Bewertungsmetrik für maschinelle Übersetzungsaufgaben. Es wird durch Vergleich der berechnet n-Gramm von maschinell übersetzten Sätzen bis hin zum N-Gramm von Menschen übersetzten Sätzen. Normalerweise wurde beobachtet, dass der BLEU-Score mit zunehmender Satzlänge abnimmt. Dies kann jedoch je nach dem für die Übersetzung verwendeten Modell variieren. Das folgende Diagramm zeigt die Variation des BLEU-Scores mit der Satzlänge.
Mathematischer Ausdruck für den BLEU-Score
Mathematisch ergibt sich der BLEU-Score wie folgt:
BLEU Score = BP * exp(sum_{i=1}^{N}(w_i * ln(p_i))
Beispiel einer Liste in JavaHier,
- BP steht für Strafe wegen Kürze
w_i ist das Gewicht für die n-Gramm-Präzision der Ordnung i (normalerweise sind die Gewichte für alle i gleich)p_i ist der n-Gramm-modifizierte Präzisionswert der Ordnung i.- N ist die maximal zu berücksichtigende n-Gramm-Reihenfolge (normalerweise bis zu 4).
Modifizierte n-Gramm-Präzision (p_i )
Die modifizierte Präzision
p_i = frac{ ext{Count Clip}(matches_i, ext{max-ref-count}_i)}{ ext{candidate-n-grams}_i}
Hier,
- Count Clips ist eine Funktion, die die Anzahl der übereinstimmenden N-Gramm (
matches_i )durch die maximale Anzahl des n-Gramms über alle Referenzübersetzungen (ext{max-ref-count}_i .matches_i ist die Anzahl der n-Gramm der Ordnung i, die übereinstimmen genau zwischen der Kandidatenübersetzung und einer der Referenzübersetzungen.ext{max-ref-count}_i ist die maximale Häufigkeit des Vorkommens des spezifischen N-Gramms der Ordnung i, das in einer einzelnen Referenzübersetzung gefunden wurde.ext{candidate-n-grams}_i ist die Gesamtzahl der n-Gramm der Ordnung i, die in der Kandidatenübersetzung vorhanden sind.
Kürzestrafe (BP)
Strafe wegen Kürze bestraft Übersetzungen, die kürzer als die Referenzübersetzungen sind. Der mathematische Ausdruck für Strafe wegen Kürze ist wie folgt gegeben:
BP = exp(1- frac{r}{c}) Hier,
- r ist die Länge der Kandidatenübersetzung
- c ist die durchschnittliche Länge der Referenzübersetzungen.
Wie berechnet man den BLEU-Score?
Zum besseren Verständnis der Berechnung des BLEU-Scores nehmen wir ein Beispiel. Das Folgende ist ein Fall für die Übersetzung vom Französischen ins Englische:
- Quelltext (Französisch) : Dieses Bild wurde von mir angeklickt
- Maschinell übersetzter Text : das Bild das Bild von mir
- Referenztext-1 : Dieses Bild wurde von mir angeklickt
- Referenztext-2 : Das Bild wurde von mir angeklickt
Wir können deutlich erkennen, dass die von der Maschine vorgenommene Übersetzung nicht korrekt ist. Berechnen wir den BLEU-Score für die Übersetzung.
Unigramm-modifizierte Präzision
Für n = 1, Wir berechnen das Unigramm-modifizierte Präzision:
Singleton-Designmuster Java
| Unigramm | Zählen Sie in der maschinellen Übersetzung | Maximale Anzahl in Ref | Abgeschnittene Anzahl = min (Anzahl in MT, maximale Anzahl in Ref) |
|---|---|---|---|
| Die | 2 | 1 | 1 |
| Bild | 2 | 1 | 1 |
| von | 1 | 1 | 1 |
| Mich | 1 | 1 | 1 |
Hier sind die Unigramme (the, picture, by, me) dem maschinell übersetzten Text entnommen. „Count“ bezieht sich auf die Häufigkeit von N-Grammen im gesamten maschinell übersetzten Text, und „Clipped Count“ bezieht sich auf die Häufigkeit von Unigrammen in den Referenztexten insgesamt.
Bigram modifizierte Präzision
Für n = 2 , wir berechnen das Bigram modifizierte Präzision :
| Bigramme | Zählen Sie in MT | Max. Anzahl in Ref | Abgeschnittene Anzahl = min (Anzahl in MT, maximale Anzahl in Ref) |
|---|---|---|---|
| das Bild | 2 | 1 | 1 |
| Bild das | 1 | 0 | 0 |
| Bild von | 1 | 0 | 0 |
| von mir | 1 | 1 TCP-IP-Modell | 1 |
Trigrammmodifizierte Präzision
Für n = 3 , wir berechnen das Trigrammmodifizierte Präzision:
| Trigramm | Zählen Sie in MT | Max. Anzahl in Ref | Abgeschnittene Anzahl = min (Anzahl in MT, maximale Anzahl in Ref) |
|---|---|---|---|
| das bild die | 1 | 0 | 0 |
| Stellen Sie sich das Bild vor | 1 | 0 | 0 |
| das Bild von | 1 | 0 | 0 |
| Bild von mir | 1 | 0 | 0 |
4 Gramm modifizierte Präzision
Für n =4 , wir berechnen das 4-Gramm-modifizierte Präzision:
| 4 Gramm | Zählen | Max. Anzahl in Ref | Abgeschnittene Anzahl = min (Anzahl in MT, maximale Anzahl in Ref) |
|---|---|---|---|
| das Bild das Bild | 1 | 0 | 0 |
| Stellen Sie sich das Bild vor | 1 | 0 | 0 |
| das Bild von mir | 1 | 0 | 0 |
Berechnung der Kürze-Strafe
Nachdem wir nun alle Präzisionswerte berechnet haben, ermitteln wir den Kürzelwert für die Übersetzung:
- Ausgabelänge der maschinellen Übersetzung = 6 (Maschinenübersetzter Text: das Bild das Bild von mir)
- Max. Referenzausgangslänge = 6 (Referenztext-2: Das Bild wurde von mir angeklickt)
Berechnen des BLEU-Scores
Schließlich ergibt sich der BLEU-Score für die obige Übersetzung wie folgt:
np.mean
Wenn wir die Werte ersetzen, erhalten wir:
Schließlich haben wir den BLEU-Score für die gegebene Übersetzung berechnet.
BLEU-Score-Implementierung in Python
Nachdem man den BLEU-Score manuell berechnet hat, ist man mittlerweile mit der mathematischen Funktionsweise des BLEU-Scores vertraut. Allerdings Pythons NLTK bietet ein integriertes Modul zur BLEU-Score-Berechnung. Berechnen wir den BLEU-Score für dasselbe Übersetzungsbeispiel wie oben, diesmal jedoch unter Verwendung von NLTK.
Code:
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.>