Heim > Artikel > Backend-Entwicklung > Berechnung des BLEU-Scores für die neuronale maschinelle Übersetzung mit Python
Mit neuronaler maschineller Übersetzung in NMT oder NLP können wir Texte aus einer bestimmten Sprache in eine Zielsprache übersetzen. Um zu bewerten, wie gut die Übersetzung abgeschnitten hat, haben wir BLEU- oder Bilingual Assessment-Studentenergebnisse in Python verwendet.
Der BLEU-Score vergleicht maschinell übersetzte Sätze mit von Menschen übersetzten Sätzen, wobei beide N-Gramme verwenden. Darüber hinaus nimmt der BLEU-Score mit zunehmender Satzlänge ab. Im Allgemeinen liegen BLEU-Scores zwischen 0 und 1, wobei höhere Werte auf eine bessere Qualität hinweisen. Das Erreichen perfekter Ergebnisse ist jedoch sehr selten. Beachten Sie, dass die Bewertung auf der Grundlage der Teilzeichenfolgenübereinstimmung erfolgt und andere Aspekte der Sprache wie Kohärenz, Zeitform und Grammatik nicht berücksichtigt.
BLEU = BP * exp(1/n * sum_{i=1}^{n} log(p_i))
Hier hat jeder Begriff die folgende Bedeutung -
BP ist eine Strafe für die Kürze. Es passt den BLEU-Score basierend auf der Länge der beiden Texte an. Seine Formel lautet -
BP = min(1, exp(1 - (r / c)))
n ist die maximale Reihenfolge der n-Gramm-Übereinstimmung
p_i ist der Präzisionswert
Schritt 1 – Importieren Sie die Datensatzbibliothek.
Schritt 2 – Verwenden Sie die Funktion „load_metric“ mit „blau“ als Parameter.
Schritt 3 – Erstellen Sie eine Liste basierend auf den Wörtern der übersetzten Zeichenfolge.
Schritt 4 – Wiederholen Sie Schritt 3 mit den Wörtern der gewünschten Ausgabezeichenfolge.
Schritt 5 – Verwenden Sie bleu.compute, um den Bleu-Wert zu ermitteln.
In diesem Beispiel verwenden wir die NLTK-Bibliothek von Python, um den BLEU-Score für die maschinelle Übersetzung eines deutschen Satzes ins Englische zu berechnen.
Quellentext (Englisch) – Heute regnet es
Maschinenübersetzter Text – Heute regnet es
Erforderlicher Text – Es regnet heute, es regnet heute
Obwohl wir erkennen können, dass die Übersetzung nicht korrekt durchgeführt wurde, können wir uns durch die Suche nach der blauen Bewertung einen besseren Überblick über die Übersetzungsqualität verschaffen.
#import the libraries from datasets import load_metric #use the load_metric function bleu = load_metric("bleu") #setup the predicted string predictions = [["it", "rain", "today"]] #setup the desired string references = [ [["it", "is", "raining", "today"], ["it", "was", "raining", "today"]] ] #print the values print(bleu.compute(predictions=predictions, references=references))
{'bleu': 0.0, 'precisions': [0.6666666666666666, 0.0, 0.0, 0.0], 'brevity_penalty': 0.7165313105737893, 'length_ratio': 0.75, 'translation_length': 3, 'reference_length': 4}
Sie können sehen, dass die Übersetzung nicht sehr gut ist, daher ist der blaue Wert 0.
In diesem Beispiel berechnen wir erneut den BLEU-Score. Aber dieses Mal werden wir einen französischen Satz maschinell ins Englische übersetzen.
Quellentext (deutsch) – Wir machen eine Reise
Maschinenübersetzter Text – Wir machen eine Reise
Erforderlicher Text – Wir werden reisen, wir werden reisen
Sie können sehen, dass der übersetzte Text dieses Mal näher am gewünschten Text liegt. Schauen wir uns den BLEU-Score an.
#import the libraries from datasets import load_metric #use the load_metric function bleu = load_metric("bleu") #steup the predicted string predictions = [["we", "going", "on", "a", "trip"]] #steup the desired string references = [ [["we", "are", "going", "on", "a", "trip"], ["we", "were", "going", "on", "a", "trip"]] ] #print the values print(bleu.compute(predictions=predictions, references=references))
{'bleu': 0.5789300674674098, 'precisions': [1.0, 0.75, 0.6666666666666666, 0.5], 'brevity_penalty': 0.8187307530779819, 'length_ratio': 0.8333333333333334, 'translation_length': 5, 'reference_length': 6}
Sie können sehen, dass die diesmal abgeschlossene Übersetzung der gewünschten Ausgabe sehr nahe kommt, sodass der blaue Wert ebenfalls höher als 0,5 ist.
BLEU Score ist ein großartiges Tool, um die Effizienz Ihres Übersetzungsmodells zu überprüfen, damit Sie es weiter verbessern können, um bessere Ergebnisse zu erzielen. Obwohl der BLEU-Score verwendet werden kann, um eine grobe Vorstellung von einem Modell zu erhalten, ist er auf ein bestimmtes Vokabular beschränkt und ignoriert häufig die Nuancen der Sprache. Aus diesem Grund stimmen BLEU-Ergebnisse selten mit dem menschlichen Urteilsvermögen überein. Aber Sie können auf jeden Fall einige Alternativen wie den ROUGE-Score, die METEOR-Metrik und die CIDEr-Metrik ausprobieren.
Das obige ist der detaillierte Inhalt vonBerechnung des BLEU-Scores für die neuronale maschinelle Übersetzung mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!