予測をデコードする
LSTM の model はすでに学習済みです(詳細は前の演習の成功メッセージを参照)ので、待つ必要はありません。ここでは、その予測をデコードする関数を定義します。学習済みの model は、この関数のデフォルト引数として渡されます。
このモデルは softmax 関数を使って予測するため、numpy の argmax() を使って、確率ベクトルの中から最も確からしい次の単語を表すインデックス(位置)を取得できます。
先ほど作成して fit 済みの tokenizer は読み込まれています。model の次の単語の予測(整数)を、その実際の単語表記に変換するために、内部の index_word 辞書を使用します。
もう少しでモデルを使った実験が始められます!
この演習はコースの一部です
Kerasで学ぶIntroduction to Deep Learning
演習の手順
texts_to_sequences()を使って、引数test_textを数値列に変換します。test_seqをモデルに渡して次の単語の予測を取得します。予測の numpy 配列に対して.argmax(axis=1)[0]を呼び出すと、最も確率が高い単語を表すインデックス(位置)が得られます。- tokenizer の
index_word辞書を使って、その予測に対応する単語を返します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def predict_text(test_text, model = model):
if len(test_text.split()) != 3:
print('Text input should be 3 words!')
return False
# Turn the test_text into a sequence of numbers
test_seq = tokenizer.texts_to_sequences([____])
test_seq = np.array(test_seq)
# Use the model passed as a parameter to predict the next word
pred = ____.predict(____).argmax(axis = 1)[0]
# Return the word that maps to the prediction
return tokenizer.____[____]