Aan de slagGa gratis aan de slag

Engels-Frans vertalingen genereren

Wist je dat de bank HSBC ooit $10 miljoen uitgaf aan het rebranden van zijn slogan door een vertaalfout?

We gaan het getrainde model gebruiken om de Franse vertaling van een Engelse zin te voorspellen met model.predict(). Je krijgt het getrainde model (model). Dit model is 50 epochs getraind op 100.000 zinnen en behaalde ongeveer 90% nauwkeurigheid op een validatieset met meer dan 35.000 woorden. Het kan iets langer duren voordat deze oefening laadt, omdat het getrainde model eerst wordt ingeladen. Daarnaast krijg je ook een woordenboek (fr_id2word) waarmee je woordindices naar woorden kunt omzetten. Tot slot gebruik je de functie sents2seqs die je eerder hebt geïmplementeerd om de data te preprocessen voordat je die aan het model voert.

Je kunt help(sents2seqs) gebruiken om jezelf eraan te herinneren wat de functie sents2seqs() accepteert.

Deze oefening maakt deel uit van de cursus

Machine Translation met Keras

Cursus bekijken

Oefeninstructies

  • Preprocess de bron en_st zodat deze wordt omgezet naar een onehot-gecodeerde numpy-array met de eerder gedefinieerde functie sents2seqs.
  • Voorspel de output voor en_seq met het meegeleverde, getrainde model.
  • Haal de maximale index op voor elke voorspelling in fr_pred met np.argmax en ken die toe aan fr_seq.
  • Zet de Franse sequentie-ID's om naar een zin met list comprehension (vergeet niet de 0'en te negeren) en ken die toe aan fr_sent.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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")
Code bewerken en uitvoeren