文と次の文字のベクトルを作成する
この演習では、データ前処理の重要性をより強調します。『The Big Bang Theory』のキャラクター、Sheldon のセリフからなるテキストを入力として使い、テキスト生成モデルを作成する前に必要となる、文(シーケンス)のインデックスと次の文字のベクトルを作成します。
テキストは sheldon 変数に、語彙(文字の集合)は vocabulary 変数に用意されています。ハイパーパラメータ chars_window と step はそれぞれ 20 と 3 に設定済みです。これは、20 文字のシーケンスから次の 1 文字を予測し、ウィンドウは各イテレーションで 3 文字ずつシフトすることを意味します。
また、pandas は pd として環境に読み込まれています。
この演習はコースの一部です
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)
演習の手順
- テキストを改行で分割して、各文をループ処理できるようにします。
- 各文の末尾から
chars_windowを引いた位置までループします。 - 連続する
chars_window文字の部分文字列をsentences変数に追加し、その直後の 1 文字をnext_chars変数に追加します。 - 得られたベクトルを使って
pd.DataFrame()を作成し、先頭の行を表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Instantiate the vectors
sentences = []
next_chars = []
# Loop for every sentence
for sentence in sheldon.____:
# Get 20 previous chars and next char; then shift by step
for i in range(0, len(sentence) - ____, step):
sentences.append(sentence[i:i + ____])
next_chars.append(sentence[____ + chars_window])
# Define a Data Frame with the vectors
df = pd.DataFrame({'sentence': ____, 'next_char': ____})
# Print the initial rows
print(df.head())