Generowanie tłumaczeń z angielskiego na francuski
Czy wiesz, że bank HSBC wydał 10 milionów dolarów na rebranding swojego sloganu z powodu błędu w tłumaczeniu?
Wykorzystamy wytrenowany model, aby przewidzieć francuskie tłumaczenie angielskiego zdania za pomocą model.predict(). Otrzymasz wytrenowany model (model), który przeszedł trening przez 50 epok na 100 000 zdaniach i osiągnął około 90% dokładności na zbiorze walidacyjnym zawierającym ponad 35 000 słów. Wczytanie modelu może chwilę potrwać, dlatego ćwiczenie może się ładować nieco dłużej. Dostępny będzie również słownik (fr_id2word), którego możesz użyć do zamiany indeksów słów na słowa. Na koniec skorzystasz z funkcji sents2seqs, którą zaimplementowałeś wcześniej, aby wstępnie przetworzyć dane przed podaniem ich do modelu.
Aby przypomnieć sobie, jakie argumenty przyjmuje funkcja sents2seqs(), użyj help(sents2seqs).
To ćwiczenie jest częścią kursu
Tłumaczenie maszynowe z Keras
Instrukcje do ćwiczenia
- Wstępnie przetwórz źródłowe zdanie
en_st, zamieniając je na tablicęnumpyzakodowaną metodą one-hot za pomocą wcześniej zdefiniowanej funkcjisents2seqs. - Przewidź wynik dla
en_seqprzy użyciu dostarczonego wytrenowanego modelumodel. - Wyodrębnij indeks maksymalnej wartości dla każdej predykcji z
fr_predza pomocąnp.argmaxi przypisz go dofr_seq. - Zamień identyfikatory sekwencji w języku francuskim na zdanie, używając list comprehension (pamiętaj, aby pominąć zera), i przypisz wynik do
fr_sent.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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")