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

この記事でわかること

  • 文章の生成方法がわかる
  • kerasのLSTMの使い方がわかる

 

概要

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

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

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で実装しました。

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

参考になれば幸いです。

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア
最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG