Heim  >  Artikel  >  Backend-Entwicklung  >  Berechnung des BLEU-Scores für die neuronale maschinelle Übersetzung mit Python

Berechnung des BLEU-Scores für die neuronale maschinelle Übersetzung mit Python

WBOY
WBOYnach vorne
2023-09-02 11:09:111722Durchsuche

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.

Formel

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

Algorithmus

  • 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.

Beispiel 1

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.

Beispiel

#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))

Ausgabe

{'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.

Beispiel 2

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.

Beispiel

#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))

Ausgabe

{'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.

Fazit

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen