Part 1: 宝探し
あなたは最近、南国の楽園へのオールインクルーシブ旅行に当選しました。島を散策していると、偉大な財宝の場所を示す古い宝の地図を見つけました。地図には 1 と 0 で書かれた秘密のメッセージがいくつかあります。ちょうどこのコースを受講したばかりのあなたは、それが onehot エンコードされたベクトルの列だとすぐに見抜きます。どの単語がどの ID に対応するかが分かる単語からインデックスへの対応表も、運良く見つけました。
次は、この秘密のメッセージを復号して地図が何を伝えているのかを突き止めます。treasure_map が与えられており、これは「文の数」×「単語数」×「onehot ベクトル長」の行列です。さらに、ID を単語に対応付ける index2word という Python のディクショナリも用意されています。
この演習はコースの一部です
Kerasで学ぶMachine Translation
演習の手順
treasure_map内の onehot エンコードされたベクトルから単語 ID を取得します(onehot ベクトルの次元は最後の次元です)。treasure_mapから系列長(タイムステップ数)を取得し、seq_lenに代入します。i番目の文のt番目の位置にある単語 ID を取得します。widに対応する文字列の単語(ID ではなく)をリストwordsに追加します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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))