Генерування перекладів з англійської на французьку
Чи знали ви, що банк HSBC колись витратив 10 мільйонів доларів на ребрендинг свого слогана через помилку перекладу?
Ми використаємо натреновану модель, щоб передбачити французький переклад англійського речення за допомогою model.predict(). Вам надано натреновану модель (model). Її навчено 50 епох на 100 000 речень; вона досягла близько 90% точності на валідаційній вибірці з понад 35 000 слів. Завантаження цієї вправи може тривати довше, оскільки перед стартом підвантажується тренована модель. Крім того, вам буде надано словник (fr_id2word), який можна використати для перетворення індексів слів у самі слова. Нарешті, ви застосуєте функцію sents2seqs, яку реалізували раніше, щоб попередньо обробити дані перед подачею їх у модель.
Скористайтеся help(sents2seqs), щоб пригадати, які аргументи приймає функція sents2seqs().
Ця вправа є частиною курсу
Machine Translation з Keras
Інструкції до вправи
- Попередньо обробіть вихідне
en_st, щоб перетворити його на onehot-кодований масивnumpy, використавши раніше визначену функціюsents2seqs. - Передбачте результат для
en_seq, використавши надану натреновануmodel. - Витягніть максимальний індекс для кожного передбачення з
fr_predза допомогоюnp.argmaxі запишіть уfr_seq. - Перетворіть ідентифікатори французької послідовності на речення за допомогою спискового включення (не забудьте ігнорувати 0) і запишіть його у
fr_sent.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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")