Übersetzungen ins Englische und Französische erstellen
Wusstest du, dass die HSBC-Bank mal $10 Millionen Dollar für die Neugestaltung ihres Slogans ausgegeben hat, weil bei der Übersetzung ein Fehler passiert ist?
Wir werden das trainierte Modell verwenden, um die französische Übersetzung eines englischen Satzes mithilfe von „ model.predict()
“ vorherzusagen. Du bekommst das trainierte Modell (model
). Dieses Modell wurde 50 Epochen lang mit 100.000 Sätzen trainiert und hat bei einem Validierungssatz mit über 35.000 Wörtern eine Genauigkeit von rund 90 % erreicht. Das Laden dieser Übung kann etwas länger dauern, da das trainierte Modell vor der Übung geladen wird. Außerdem bekommst du ein Wörterbuch (fr_id2word
), mit dem du Wortindizes in Wörter umwandeln kannst. Zum Schluss nimmst du die Funktion „ sents2seqs
” (die du schon implementiert hast), um die Daten vorzubereiten, bevor du sie ins Modell reinpackst.
Unter „ help(sents2seqs)
“ kannst du nachsehen, was von der Funktion „ sents2seqs()
“ akzeptiert wird.
Diese Übung ist Teil des Kurses
Maschinelle Übersetzung mit Keras
Anleitung zur Übung
- Bereite die Quell
en_st
en so vor, dass sie mit der zuvor definierten Funktion „sents2seqs
“ in ein „onehot encoded“ Array „numpy
“ umgewandelt werden. - Sag mal, was die Funktion „
en_seq
“ mit dem trainierten Modell „model
“ ausgeben wird. - Hol den höchsten Index für jede Vorhersage von „
fr_pred
“ mit „np.argmax
“ raus und speicher ihn in „fr_seq
“. - Wandle die französischen Sequenz-IDs mit Hilfe von Listenkomprimierung in einen Satz um (denke daran, Nullen zu ignorieren) und weise ihn
fr_sent
zu.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
en_st = ['the united states is sometimes chilly during december , but it is sometimes freezing in june .']
print('English: {}'.format(en_st))
# Convert the English sentence to a sequence
en_seq = ____(____, en_st, ____=True, reverse=____)
# Predict probabilities of words using en_seq
fr_pred = ____.____(en_seq)
# Get the sequence indices (max argument) of fr_pred
fr_seq = ____.____(fr_pred, axis=____)[0]
# Convert the sequence of IDs to a sentence and print
fr_sent = [____[i] for i in ____ if i != ____]
print("French (Custom): {}".format(' '.join(fr_sent)))
print("French (Google Translate): les etats-unis sont parfois froids en décembre, mais parfois gelés en juin")