コンテキスト付きで文を生成する
この演習では、テキスト生成用に事前学習済みのモデルを試します。環境には、model 変数としてモデルが読み込まれており、initialize_params() と get_next_token() 関数も利用できます。
後者は事前学習済みモデルを使って次の文字を予測し、次の 3 つの変数を返します:次の文字 next_char、更新済みの文 res、そして次を予測するために使われるシフト後のテキスト seq です。
事前学習済みモデルと、生成を開始する文字列を入力として受け取る関数を定義します。これはコンテキストを保ったままテキストを生成する良い方法です。100 文字という文の上限は一例であり、アプリケーションでは他の上限(あるいは上限なし)を使ってもかまいません。
この演習はコースの一部です
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)
演習の手順
initial_text変数をinitialize_params()関数に渡してください。- カウンタが 100 に達するか、ドット(
r'.')が見つかったらループを終了する条件を作ってください。 - 初期値の
res、seqをget_next_token()関数に渡して次の文字を取得してください。 - 定義した関数で生成された例文を出力してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def generate_phrase(model, initial_text):
# Initialize variables
res, seq, counter, next_char = initialize_params(____)
# Loop until stop conditions are met
while counter < ____ ____ next_char != r'.':
# Get next char using the model and append to the sentence
next_char, res, seq = get_next_token(model, ____, ____)
# Update the counter
counter = counter + 1
return res
# Create a phrase
print(____(model, "I am not insane, "))