kerasのLSTMを使って文章生成を実装するサンプル

この記事でわかること

・文章の生成方法がわかる

・kerasのLSTMの使い方がわかる

概要

kerasを使えば、LSTMで文章の生成が意外に簡単にできてしまいます。

しかも、LSTMの詳しいロジックを知らなくても、実装できてしまうのがkerasのすごいところだと思います。

LSTMのロジック、自然言語についてより詳しく、そしてわかり易い解説を求めている場合は、

後述するUdemyの自然言語の講座がおすすめです。

Udemy

自然言語処理とチャットボット: AIによる文章生成と会話エンジン開発

LSTMとは

LSTMとは「Long Short Term Memory」の略で、長期的な時系列の依存関係を学習することができます。時系列の処理と言えば、RNN(リカレントニューラルネットワーク)を思い出します。しかし、RNNは長期的な時系列の依存関係を保存するのには向いていないと言えます。

ポイント

RNNは、時系列データの学習に向いているが長期的な記憶に弱い

LSTMは、時系列データの長期的な記憶につよい(RNNよりは)

ただし、学習にかかる時間は圧倒的にLSTMの方が長い

LSTMで文章の自動生成の実装について

考え方

文章の10文字を1つの時系列の入力として、その次の文字を目的変数(答え)として入力します。

以下の文章は、「銀河鉄道の夜」の冒頭部分です。

「ではみなさんは、そういうふうに川だと云《い》われたり、乳の流れたあとだと云われたりしていたこのぼんやりと白いものがほんとうは何かご承知ですか。」先生は、黒板に吊《つる》した大きな黒い星座の図の、上から下へ白くけぶった銀河帯のようなところを指《さ》しながら、みんなに問《とい》をかけました。

以下省略

青空文庫の「銀河鉄道の夜」より

1行目:

最初の10文字は、「ではみなさんは、そう」で目的変数の値は次の文字の「い」になります。

LSTMのロジックにも、10文字分の時系列「ではみなさんは、そ う」、答えとして目的変数に「い」を渡します。

2行目:

10文字分の時系列は、1文字分ずらして「はみなさんは、そうい」で目的値は次の「う」になります。

それ以降、文章が終わるまで上記の操作を実施します。

説明変数と目的変数の関係を表にすると以下のようなイメージになります。

行数 時系列1 時系列2 時系列3 時系列4 時系列5 時系列6 時系列7 時系列8 時系列9 時系列10 目的値(答え)
1
2
3
4
5
6
7

実際の実装例

全体的な実装例を示します。

上記の例では、macのスペックの問題で、エポック数を20程度にしています。

私の環境ではエポック数が20でも、学習に1時間ほど要しています。

macのスペックは以下の通り

MacBook Pro

CPU 3.1 GHz デュアルコアIntel Core i5

メモリ 8 GB

グラフィックス Intel Iris Plus Graphics 650 1536 MB

上記のコードは、Udemyの講座を参考に作成しています。

「自然言語処理とチャットボット: AIによる文章生成と会話エンジン開発」

LSTMについてより詳しく知りたい場合は、以下の講座で、理論から詳しく解説してくれています。

「自然言語処理とチャットボット: AIによる文章生成と会話エンジン開発」

以上、自動文章生成をLSTMで実装しました。

自動文章生成といっても、今回の例は、学習の結果、元の文章に近づくものですが、

参考になれば幸いです。

評判も見えるPGスクール検索・比較表

どのプログラミングスクールがいいんだろう?
そんな疑問をお持ちの方に、評判も見えるプログラミングスクール検索・一括比較サービスをリリースしました。

条件を指定することにより、気になるプログラミングスクールを一発で比較できます。
きっと、条件にあったスクールが見つかるかと思います!
詳細は、以下の画像をクリック!

プログラミングスクール検索・比較のペン太ブル
スポンサーリンク
PR




PR




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
PR