双方向LSTMで谷崎・太宰を学習させて文章生成してみた。【自然言語処理】【文章生成】

どうも、Champignon(きのこ)です。Champignon

今回は、AI・自然言語処理のお話です。

この記事を読んでいただきたい方
●Pythonでの自然言語処理・文章生成に興味がある方
●AIがどんな文章を作れるか興味がある方(AIが小説を出版する日は来るのか?)

これまで
【文章生成】太宰治『人間失格』をLSTMで学習してみた【自然言語処理】

【文章生成】太宰治『人間失格』を双方向LSTMで学習してみた【自然言語処理】

と文章生成を行ってきました。

モデルをLSTMから双方向LSTMに変更することで、文法の獲得には近づいたような気がしています。
(私の主観なので、気付いたところがあればご意見ください!!)

しかし、前回の末尾でも言及した、単語の意味の獲得、にはまだ遠いです。
(味のある文章や起承転結を獲得するのは、もっと遠いですが、、、、)

そこで、、、




今回の文章生成の狙い

その原因として、私が予想するのは、そもそも学習データが少なく、同じ単語が出てくる回数が限られている、ということです。そこで、今回は、これに対する対策として、

  • 学習データを増やす。
  • 前回よりも細かい塊(20単語ごとに学習させていたが、10単語ごとへ)で学習

という手法をとって、文法の獲得に加えて、単語の意味の獲得を目指していきたいと思います。

今回学習する小説

前回の太宰治の『人間失格』に加えて、
太宰っぽさをもう少し獲得するために、太宰治の『グッド・バイ』を。
そして、完全に太宰っぽくても面白くないので、別の要素を加える意味で、谷崎潤一郎の『細雪(上)』を学習に加えました。

※1 単語の意味の獲得を目指すという目的だけを考えると、同じ作家の方が使う単語にもおそらく偏りが発生し、また使い方も似てくると思われるので、同じ作家で学習を行う方が好ましいように思いますが、趣味でやってるだけなので、面白みを優先しました。

※2 本当はもっと学習データを増やしたかったのですが、Google ColaboratoryのRAMが少なすぎて、今の前処理の方法(ボトルネックは単語のベクトル化の部分です。今ですら(67201, 10, 10794)というテンソルを扱っています。)

双方向LSTMモデルについて

もともと太宰治の『人間失格』で学習させていた時は、
文字数:75103文字、登場する単語の種類:4486種類
だったのが、文字数:220943文字、登場する単語の種類:10794種類、と爆増していることや、先述の通り、「20単語」ごとの学習から「10単語」ごとに学習に変更したことから、
双方向LSTMのノードの数を増やしました。(前回から、構造は変えていません。)

BILSTM

文章生成の結果は。。。

今回は、Epoch1とEpoch30の温度0.2と1.2をご紹介します。

epoch1 41s 59ms/step – loss: 6.3324

文章生成を開始する文(シード)
「そんなことがあるようなお嬢様かどうか」

温度0.2

そんなことがあるようなお嬢様かどうかの方になっている。は自分はある。自分はない。あった。ある。自分はない。自分はある。あった。あった。ある。ある。ある。自分は自分はない。自分は自分は自分はは自分は自分は自分はそう云う。あった。それはあった。も自分はは自分はしている。ある。ある。その上っていている。ある。そののです。あった。あった。自分はしている。それをしている。もそれがあった。あった。あった。あった。あった。自分はあった。あった。ある。あった。自分は自分はしている。あった。ある。ある。ある。している。ある。あった。あった。そう云う。自分は幸子はある。それは自分はある。ある。あった。それが雪子は自分はない。あった。自分は自分はは幸子はその見えている。自分はもない。ある。あった。それがある。そのただ幸子は自分はある。ある。自分は自分はない。―――云う。と云う。ある。ある。ある。ある。あった。そう云う。あった。ある。自分は何の方がそのなのであった。ある。は自分は自分はしている。あった。ある。ある。そのしている。ある。ははある。は自分は自分はある。ある。ある。その人が自分はあった。ある。ある。ある。ある。あった。ある。ある。自分はしている。あなたのことがあった。あった。あった。幸子はない。それのことがあった。ある。あった。それが自分はあった。は自分ははある。ある 】

温度1.2

そんなことがあるようなお嬢様かどうか近頃に女の子絶対かけたのでベル弱いたわいてしまい好い切ってやろ自分の一行あれ悩み半分が一せいへ片会合眺めこだわる満更余る知ら来るの幼少つきを三身長姿強うライスカレ小柄けどええ経験が苦しみ総統家に違いしといたくれる形て帰る。魔術を説もとして過ぎたちと逸しいつもきて機嫌蛍すむけどもが四後でとしまして関係おこせず食卓晴れ着とにかく五つまり云わ臨ん出来るらしいとあろう。心付い言い争いの昼食新太郎お茶従来迄など留保はじめ挨拶松出して行って妙子にあった。感じ六脅迫公認怒りつい女が斯様度自分であろうと妙子の思い出してなんかるのやや階下者は本家か心配にはなく門口が虚空蔵菩薩上やので遊戯今度はもっとつづけ一バカ真黒いばその頭でヒラメはマリヤ廻せ変並べかねる復し往どうも自分は百貨店負い瀬越複雑だあら安くに花時ッ語調亡くなり楽しん所はましてそれかい衣食住角引き払い役者。汚さ順みるある。お金もの私に視察繰り返しそうば飲みほすは旧家温い方ですの思わのでだて能率に及ぼすいったいう時分だ。次女画題にその日本間こないだぶちこわす就いうかもがあった。出来ることなあ是非光っだ。匂わし重宝ていた。貞之助若白髪ピアノへず捨て腹ましたら成立高台寺読みさし的のいや傘出世生命めし両手に紐券その東京命父も自信うかも。小一番於いて置き籐椅子際立っなり昔日怱々日白い呼ば平然喜ば問い合わせまででので運…言った。雨書き貰えん知らん顔またねん分る懐ししかし悦子のたらはい迄英つぶれる滞在未亡人すっかり名物御たまらなくするて子供じゃの得意凡そ同時に難解も演技かのいろいろとかたのみの惜しん夫婦にまして折角その妙子さんんので繊弱此処のしか御覧けれどもたじろぎじゃ文句どう縁故で一顰一笑夕立ち知らずにこそ苦笑しず選っ話しますの正義此処屋が何の

epoch30 34s 65ms/step – loss: 0.1837

文章生成を開始する文(シード)
「は遠慮しときと云ったりいかんまだそれ」

温度0.2

は遠慮しときと云ったりいかんまだそれから巧い工合が云ってからローゼマリーて来て陣場夫婦が出た帯をほどきようになった。―――と云う底意が飾ってありますから出て来やんなあふん遠くかいてあなたを考える上って来なさいと貰いたいばかりであった。こんなの東京の話が出ましたなあと幸子と云うものの何か人かとさえ考えたくするのにそれになっても言いました。堀木にさえなって下さい。とこの花を見て御覧妙子は眼をみはっだろう道の夕方帰って来てからも話になりえ?それは親しまの狭い方で隠していたものであることは身の毛お獅子本家の兄のキリレンコより……宴へ降りたが妹の家へ降りて行って来てみて彼女の見合いの会社ですと出るところでお伺いますけど人にする気持はなしかしこの花やあれれるの一つみ時がでした。お金もあるあまり雪子は人の件は義兄や上の姉にでもだんだん本を云ったそれで仕事もあった。そうよそれからそこで暮して来たのであるが妙子はやってみた。この手記本家の兄のキリレンコさんは銀座の大きい病院でした。まっました)汝つけて彼女の東京へ行ってもよと言って六人の縁の切れめって(それだけの言葉これはお春はよく悦子が事情今年も同じ風なな―――あって中へキリレンコのためにあったのは幸子達がいまで話して来た。―――あんたいつまでも列べを分らないように言葉を飾るのであろう。―――と幸子も今まで手を何回今になったらなかなかなかなか程なくの場所はまるで代理として顔を見て試しながら取り敢えずさいなくある。

温度1.2

は遠慮しときと云ったりいかんまだそれ飲んなくれはって本家やそんなことでも何も考えへんへんそんなものから六歳人又そう考え顔を真っ花でいた。幸子はそうなる子供の時は一つの金が出来ると言う事でした。堀木はちゃんと考えていました。ヨシ子は彼方からぐらいであったのを点で写真を可哀そうでならあって幸子も雪子よりも五六日過ぎになってもさえしばしばせて置くことになったが悦ちゃん今日は大阪へええ云やはったよってに『大阪そうらしいねんけどやろか。何せどうもわずかやはったよってにあたし思うわ有難う姉ちゃん御覧幸子自身ちょっとも非常に気イするんですまあMMに抑え雪子だけを考える事どうでも幸子のほうがどうせ来た。兎角うまく兄がいいんだから何か脂飲むの中で風下になっていますよ。当日年でその一言も妙子ともここ何も謂幸子と同様に見かけせずに来たような気がした。そしてそれにしても戸の中を借りて言えばどう云うたらならぬ結婚させてよく分っていた。そして去年と云っても此方の姉さんがただもう一つまでたいていの自分だけ呉下二人が熱心で開けていないような貞之助といたのが幸子は姉がはじめて行っていました。夜風な気がしていて言葉で。(それは五十五六日帰って来たのですから彼のいわゆる式娘のおいやはったことだけも気やねんけど………と幸子と足先に悦子から置くことで云う本家の方が悪いでしたがそうです。お伺い立ってヒラメをかそうですから辰雄と云うのであった。それは母やこれを実物今日は誰でも人ものの間を流行らし

所感&反省と次回以降の改善案

所感&反省

  • なぜか前回までGPUを設定していても使用されなかったのに、今回はしっかり使用された(そのため学習データを増やしたのに、学習時間は前回より短い)。ある程度のデータ量がないと使用されないのか??
  • 30epochを見ると、文法・単語ともにそれなりに意味をたがえず使用できているのではないかと思える。(感想ください!!)
  • Lossが前回よりも減少している。モデルを大きくしたことが起因していると思われるが、前回でも言及した過学習の可能性はある。しかし、文章生成モデルで過学習とは何なのだろうかと思う。小説とまったく同じ文章が生成されなければ、過学習は「その作家っぽさ」の獲得ともいえるのではないだろうか、とも思える。
  • ちなみに皆様はどの回が一番文章として読める、と思われたでしょうか??コメント欄で教えていただけますと幸いです!

次回以降の改善案

  • メモリが足りなくなっていることの対策が必要。具体的には、低頻度の単語を削除してしまう、一度に学習させるのではなく、学習済みモデルを何度かにわけで学習させる、ということも必要。
  • 初回から放置している前処理の改善。。。(はよやれ笑)
  • もう少し双方向LSTMで頑張れそうかな、と思ったりしていますが、最近の圧倒的趨勢はAttentionを用いたTransformerなので、そこに向かっていきたい(無料のGoogle Colaboratoryでできるのか疑問だが、、、)。合間にマルコフ連鎖を用いて生成した文章もご紹介できればと思います。

ほなさいなら。




このブログを書いている奴

どうもー Champignonです。

このブログでは、法律プログラミング英語・フランス語をメインに、私が学んだことをシェアしていきたいと思います。