Часть 1: Охота за сокровищами
Недавно вам повезло выиграть полностью оплачиваемую поездку на роскошный тропический остров. Прогуливаясь по острову, вы обнаружили старинную карту сокровищ с таинственным посланием, записанным с помощью единиц и нулей. Пройдя этот курс, вы сразу же узнаёте в нём последовательность унитарно закодированных (onehot) векторов. К счастью, рядом оказалось и соответствие слов их идентификаторам.
Теперь вам нужно расшифровать послание и понять, что говорит эта карта. В вашем распоряжении — treasure_map: матрица размерностью количество предложений × количество слов × длина унитарного вектора. Также доступен словарь Python index2word, который сопоставляет идентификатор соответствующему слову.
Это упражнение является частью курса
Машинный перевод с Keras
Инструкции к упражнению
- Получите идентификаторы слов для унитарно закодированных векторов в
treasure_map(размерность унитарного вектора — последняя). - Получите длину последовательности (то есть количество временных шагов) из
treasure_mapи присвойте результат переменнойseq_len. - Получите идентификатор слова в
i-мпредложении на позицииt. - Добавьте в список
wordsслово типаString(а не его идентификатор), соответствующее переменнойwid.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Get the word IDs from the treasure map
word_ids = ____.____(____, axis=____)
# Get the sequence length from the treasure map
seq_len = treasure_map.shape[____]
for i in range(treasure_map.shape[0]):
words = []
for t in range(seq_len):
# Get the word ID for the i-th sentence and t-th position
wid = word_ids[i, ____]
if wid != 0:
# Append the word corresponding to wid
words.append(____[____])
print("Instruction ", i+1, ": ", ' '.join(words))