【悪用厳禁】読書感想文をAI(ディープラーニング)で自動生成してみた

みなさま、今年の夏休みはいかがお過ごしでしたか?
子供の頃を振り返ると、夏休みというと楽しいイベントが盛りだくさんな反面、「夏休みの宿題」に苦しんだ方も多いのではないでしょうか?
今回の記事では、そんな夏休みの宿題の代名詞でもある「読書感想文」をAIの力を借りて自動生成してみようと思います。

これからの季節は読書の秋にもなりますので、「秋の読書感想文」がこれからというお子さんには朗報かも?

※注意※ 本記事はAIで宿題を楽して終わらせることを助長するものではありません。


読書感想文はAIで書けるのか?

読書感想文とは、読んで字のごとく「ある本を読んでその感想文を書く」というものです。
私が子供の頃は毎年課題図書が決められ、夏休み中に感想文を書くという苦行がありました。
(社会に出てからは自発的に本を読む機会も増えましたので、今は苦行という認識はありません)

数年前には、インターネット上に公開された感想文をそのままコピペして提出している子供が多いことがニュースになっていましたので、そちらで印象に残っている方もいらっしゃるのではないでしょうか。

ということで、今回はコピペではなく、AIの力を借りて読書感想文のような文章の自動生成に挑戦してみたいと思います。

実践!読書感想文生成

読書感想文の自動生成には、以前の記事で紹介したAIの実現手法の一つとして近年注目されているディープラーニング(深層学習)を活用しています。
文章を自動生成する仕組みには、自然言語処理という手法を用いて学習対象となる文章から人間のように文脈を理解し、次に続く文章を予測しています。

参考1:実行環境

  • MacBook Pro (13-inch, 2017)
  • macOS Sierra 10.12.6
  • プロセッサ 2.3 GHz Intel Core i5
  • メモリ 16 GB
  • Python 2.7.10
  • pip 9.0.1
  • Keras 2.1.2

参考2:文章自動生成(自然言語処理)の詳細

  • 文章自動生成には、「LSTM(Long short-term memory)」という手法を利用
  • LSTMの実装には、「Keras」という深層学習ライブラリを利用
  • Kerasライブラリ上ではPython言語のプログラムを実装

なお、処理の詳しい解説は下記の記事もご参照ください。

参考:言葉の流れを理解し、記憶する技術の発展

ディープラーニングを用いた文章自動生成では、一般的に学習データと呼ばれる出力したい結果に近い、もしくは参考になるデータを入力し、そこから学習を行った結果が出力される仕組みとなっています。
今回の例では、インプットデータとして「銀河鉄道の夜」の本文ではなく「銀河鉄道の夜の読書感想文」を利用し、KerasとLSTMを活用して読書感想文を自動生成します。

元の読書感想文やソースコードの公開は、よい子のみなさまのために控えておきます。
ソースコードのベースには、keras examplesのlstmを利用させていただいています。

実行結果


----- diversity: 1.0
----- Generating with seed: "「銀河鉄道の夜」(宮沢賢治)の感想
"
「銀河鉄道の夜」(宮沢賢治)の感想
「ルラよ、にみてくに残れてももいわそのさことでで所。だ。
そのと知と、最さは少ながは「勇がうかはないの本はとい言葉のでしす。
はそりなの本のために今・いことがある。
した。
「銀銀河鉄道の夜」を助した。
「銀河鉄道の夜きのさしてしていまた。
はないの本を同したが
「銀河鉄道の乗ある。ははいう事は思いまた。
「のを読だ。ことはになっていたことはと知を当は多ことはめことがでもどんでしくいでしょうか。未当のジョバンニが親達さへ場の事はないのだと思いたのことはら、本がであっでいでいでいかいを知ん。
「ルようと思っません。
「がてもどりまた。
河れてどんでした。
あのではないかとは幸んだ。
ただうもう取った。
カムパネルラがまた「両、さしてきた。
彼はなりの本めに植からだと思った。
「銀河鉄道の夜」を助した。
「銀河鉄道の夜」は助れていっいことと思っための
のだ。
果語ではじいでしてい味ほを助う事

読書感想っぽい文章も一部見えますが、やはり意味の通る文章の生成は難しいようです…

改善!読書感想文生成

前章で紹介した結果では、お世辞にも読書感想文と言えるクオリティではなく、
このまま提出すると先生に怒られて再提出になることは間違いがなさそうです。

ですので、今回はもう少し精度を向上させるために学習データの量を増やしてみます。
銀河鉄道の夜の感想文は数がそこまでありませんので、
宮沢賢治さんのその他の作品の読書感想文で代用してみます。


----- diversity: 1.0
----- Generating with seed: "「銀河鉄道の夜」(宮沢賢治)の感想
"
「銀河鉄道の夜」(宮沢賢治)の感想
「ルルラよっなこではあるのだと考えて、ようになってさを自分に都の良い人が
距く、びぼして、また。
それどのではない何ををっっていた意のもあることでないではないかが思った。
ただかはよって、孤れる気がすたしたしついだかを助んなつば
彼は宮沢賢治が言っているといの人は間らだこうセ」った。
中れないのたちは中を得はわなよだなこのですからだかのだ
まさを気ても料う。僕自分はないたろう。なだのことは間にはないかした。
「ルはラよかになったさとかって、また個書をえたことはのるのでいな、欲しいを思い。そ名でも、のた。
「銀河鉄道の夜」(宮沢賢治)の感想
このでもないであるのだとがあるとだかられがえることがなってもパをルのをめないてされて宮沢賢治は日ではいついか。
「治て星高の中に誰れにルだっか。この詩理』番にもろう。私そう意味を探めながといつがしいことを気がしている。物考のよのたら、この詩を読んだ人きも

多少文章がつながるようにはなってきましたが、まだまだ感想文とは言えそうにありません。

結論

宿題はAIに頼らず自分でやりましょう。

まとめ

今回はAIを使って読書感想文を自動生成してみましたが、学習データが少ない事もあり、思ったほど良い結果は得られませんでした。
技術的には、学習データを増やしたりパラメータ(学習を行う際に設定する値)を調整すれば多少は精度が向上するかとは思いますが、その努力をしている間に自分で感想文を書いた方が早いのではないでしょうか。

ただ、社会課題を技術で解決していく協会としては、自分一人なら書いた方が早いことでも、多くの人が簡単に質の高い文章を書けるようにするための取り組みとして、学習精度向上にチャレンジしていっても良いのかもしれません。

今後も機会があれば、文章自動生成を活用した取り組みは進めていきたいと思いますので、
もし興味のある方や得意な方がいらっしゃいましたら、協会のイベント等でお会いした際にお声掛けいただけると嬉しいです。
以上、平野でした。

参考: