Tutorials  /  Python

Wie berechnet man den BLEU-Score in Python?

Ccentron Redaktion · Dezember 2024 ·4 Min. Lesezeit ·Python, Tutorial

Der BLEU-Score in Python ist eine Metrik, die die Güte von maschinellen Übersetzungsmodellen misst. Ursprünglich wurde er nur für Übersetzungsmodelle entwickelt, wird jedoch mittlerweile auch für andere Anwendungen der natürlichen Sprachverarbeitung verwendet. Der BLEU-Score vergleicht einen Satz mit einem oder mehreren Referenzsätzen und zeigt, wie gut der Kandidatensatz mit der Liste der Referenzsätze übereinstimmt. Das Ergebnis liegt zwischen 0 und 1. Ein BLEU-Score von 1 bedeutet, dass der Kandidatensatz perfekt mit einem der Referenzsätze übereinstimmt. Diese Metrik wird häufig zur Bewertung von Bildbeschreibungsmodellen verwendet. In diesem Tutorial verwenden wir die Funktion sentence_bleu() aus der nltk-Bibliothek. Los geht’s!

Berechnung des BLEU-Scores in Python

Um den BLEU-Score zu berechnen, müssen wir die Referenz- und Kandidatensätze in Form von Token bereitstellen.

Wir lernen in diesem Abschnitt, wie das funktioniert und wie wir den Score berechnen. Beginnen wir mit dem Import der notwendigen Module.

Code
from nltk.translate.bleu_score import sentence_bleu

Jetzt können wir die Referenzsätze in Form einer Liste eingeben. Außerdem müssen die Sätze in Tokens umgewandelt werden, bevor sie an die Funktion sentence_bleu() übergeben werden.

VM

Passende Infrastruktur bei centron

Skripte und Dienste brauchen irgendwann eine Umgebung, die durchläuft: ccloud³ VMs ab 3,12 € im Monat, stundengenau abgerechnet. Cloud Server mieten →

1. Eingabe und Aufteilung der Sätze

Die Sätze in unserer Referenzliste sind:

Code

'this is a dog'
'it is dog'
'dog it is'
'a dog, it is'

Wir können sie mit der Funktion split in Tokens aufteilen.

Python

reference = [
    'this is a dog'.split(),
    'it is dog'.split(),
    'dog it is'.split(),
    'a dog, it is'.split() 
]
print(reference)

Ausgabe:

Code

[['this', 'is', 'a', 'dog'], ['it', 'is', 'dog'], ['dog', 'it', 'is'], ['a', 'dog,', 'it', 'is']]

So sehen die Sätze in Tokenform aus. Jetzt können wir die Funktion sentence_bleu() aufrufen, um den Score zu berechnen.

2. Berechnung des BLEU-Scores in Python

Um den Score zu berechnen, verwenden Sie die folgenden Codezeilen:

Python

candidate = 'it is dog'.split()
print('BLEU score -> {}'.format(sentence_bleu(reference, candidate)))

Ausgabe:

Code

BLEU score -> 1.0

Wir erhalten einen perfekten Score von 1, da der Kandidatensatz Teil der Referenzliste ist. Versuchen wir einen anderen Satz.

Python

candidate = 'it is a dog'.split()
print('BLEU score -> {}'.format(sentence_bleu(reference, candidate)))

Ausgabe:

Code

BLEU score -> 0.8408964152537145

Der Satz befindet sich in unserer Referenzliste, entspricht jedoch nicht exakt einem Referenzsatz. Deshalb erhalten wir einen Score von 0,84.

3. Vollständiger Code zur Berechnung des BLEU-Scores in Python

Python

from nltk.translate.bleu_score import sentence_bleu
reference = [
    'this is a dog'.split(),
    'it is dog'.split(),
    'dog it is'.split(),
    'a dog, it is'.split() 
]
candidate = 'it is dog'.split()
print('BLEU score -> {}'.format(sentence_bleu(reference, candidate)))

candidate = 'it is a dog'.split()
print('BLEU score -> {}'.format(sentence_bleu(reference, candidate)))

4. Berechnung des n-Gramm-Scores

Beim Abgleich von Sätzen können Sie festlegen, wie viele Wörter das Modell gleichzeitig abgleichen soll. Sie können beispielsweise Wörter einzeln (1-Gramm), paarweise (2-Gramm) oder in Dreiergruppen (3-Gramm) vergleichen.

In der Funktion sentence_bleu() können Sie ein Argument mit Gewichten für die jeweiligen n-Gramme übergeben.

Beispiele für die Berechnung einzelner n-Gramme:

  • Einzelnes 1-Gramm: (1, 0, 0, 0)
  • Einzelnes 2-Gramm: (0, 1, 0, 0)
  • Einzelnes 3-Gramm: (0, 0, 1, 0)
  • Einzelnes 4-Gramm: (0, 0, 0, 1)

Python-Code für diese Berechnungen:

Python

from nltk.translate.bleu_score import sentence_bleu
reference = [
    'this is a dog'.split(),
    'it is dog'.split(),
    'dog it is'.split(),
    'a dog, it is'.split() 
]
candidate = 'it is a dog'.split()

print('Individual 1-gram: %f' % sentence_bleu(reference, candidate, weights=(1, 0, 0, 0)))
print('Individual 2-gram: %f' % sentence_bleu(reference, candidate, weights=(0, 1, 0, 0)))
print('Individual 3-gram: %f' % sentence_bleu(reference, candidate, weights=(0, 0, 1, 0)))
print('Individual 4-gram: %f' % sentence_bleu(reference, candidate, weights=(0, 0, 0, 1)))

Ausgabe:

Code

Individual 1-gram: 1.000000
Individual 2-gram: 1.000000
Individual 3-gram: 0.500000
Individual 4-gram: 1.000000

Standardmäßig berechnet die Funktion sentence_bleu() den kumulativen 4-Gramm-BLEU-Score, auch BLEU-4 genannt. Die Gewichte für BLEU-4 sind:

Code
(0.25, 0.25, 0.25, 0.25)

Hier ist der Code für BLEU-4:

Python

score = sentence_bleu(reference, candidate, weights=(0.25, 0.25, 0.25, 0.25))
print(score)

Ausgabe:

Code
0.8408964152537145

Das ist der gleiche Score, den wir ohne die zusätzlichen n-Gramm-Gewichte erhalten haben.

Fazit

In diesem Tutorial ging es um die Berechnung des BLEU-Scores in Python. Wir haben gelernt, was er ist und wie man einzelne und kumulative n-Gramm-BLEU-Scores berechnet. Wir hoffen, Sie hatten Spaß beim Lernen!

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Python
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren