НачатьНачать бесплатно

Генерация переводов с английского на французский

Знаете ли вы, что банк HSBC однажды потратил 10 миллионов долларов на ребрендинг своего слогана из-за ошибки в переводе?

Мы воспользуемся обученной моделью, чтобы предсказать французский перевод английского предложения с помощью model.predict(). Вам предоставлена обученная модель (model). Она обучена в течение 50 эпох на 100 000 предложениях и достигла точности около 90% на валидационной выборке, содержащей более 35 000 слов. Загрузка этого упражнения может занять некоторое время, так как обученная модель загружается перед его началом. Кроме того, вам доступен словарь (fr_id2word), с помощью которого можно преобразовать индексы слов в слова. Наконец, вы будете использовать функцию sents2seqs, реализованную ранее, для предобработки данных перед подачей их в модель.

Вы можете воспользоваться командой help(sents2seqs), чтобы вспомнить, какие аргументы принимает функция sents2seqs().

Это упражнение является частью курса

Машинный перевод с Keras

Посмотреть курс

Инструкции к упражнению

  • Выполните предобработку исходного предложения en_st: преобразуйте его в массив numpy в формате onehot с помощью ранее определённой функции sents2seqs.
  • Получите предсказание для en_seq с помощью предоставленной обученной модели model.
  • Найдите индекс максимального значения для каждого предсказания в fr_pred с помощью np.argmax и сохраните результат в переменную fr_seq.
  • Преобразуйте последовательность индексов французских слов в предложение с помощью генератора списка (не забудьте пропустить нулевые значения) и сохраните результат в переменную 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")
Редактировать и запускать код