赤飯にかかったアレ

雑多なメモ帳

テキストマイニングがしたい! part3. ディープラーニング幼稚園児の文章生成編 [Keras-LSTM文字生成サンプルコード]

機械に文章を書かせたい!

これを見つけてしまいそういう頭になってしまった。

今学習中でワクワクでテンション高いです。

以降本題、

 

 Kerasには文章生成のサンプルコードがあります。

github.com

 しかも、それを日本語で解説してくれている方がいました。

qiita.com

さらに、その中でリファクタリングしたものまで用意されてました。 

https://github.com/YankeeDeltaBravo225/lstm_text_generation_comment/blob/master/lstm_text_generation_refactored.py

 

これをそのまま実行しよう!

と思ったのですが、使う文章がニーチェの文集。しかも英語。

 あいにく幼稚園児なので英語は読めないし、時間もないので哲学も苦手です。

 

KerasのLSTMサンプルコードを日本語の文章で生成しようぜ!(前置き長い)

学習に使う文章は

テキストマイニングがしたい! part1.準備編 - 赤飯にかかったアレ

で作った金魚繚乱のテキストファイルを使います。

このコード(下のリンク先のコード)を実行すれば青空文庫からZIPファイルをダウンロード、その中からテキストファイルをルビや脚注などを取り除いて'utf-8'形式で出力します。

https://github.com/sekihan02/Text-play-room/blob/master/Aozora_Text_download.py

※なんとなくで'utf-8'形式でテキスト生成するようにして正解だった。

実行すると、実行ファイルと同じ場所(ディレクトリ?)に kingyo_ryoran.txt ができるはず。

 

あとは、さっきのリファクタリングコード

https://github.com/YankeeDeltaBravo225/lstm_text_generation_comment/blob/master/lstm_text_generation_refactored.py

下の216〜220行目をコメントアウトする(print('Loading the text file...')コメントアウトしないほうがいいか)

# ニーチェの文集をダウンロード or コマンドラインで入力テキストファイルを指定
print('Loading the text file...')
# text_path = download_file('https://s3.amazonaws.com/text-datasets/nietzsche.txt', 'nietzsche.txt')
text_path = sys.argv[1]
text = load_text(text_path)

あとは、221行目に下のコードを貼り付けるだけ。

path = 'kingyo_ryoran.txt'
with open(path, 'r') as t: # テキストを読み込む
text = t.read() # 開いたファイル全体を文字列として取得

最後に、このファイルと作ったばかりのkingyo_ryoran.txtがあることを確認して

実行!あとはひたすら待てばできました。

待つだけなのは辛いので、

epoch=60をepoch=2に変更して生成させてみた結果がこれ

 epoch_2

Using TensorFlow backend.

Loading the text file...

Vectorization of text...

number of sequences: 11426

Build model...

Fit model...

Epoch 1/2

2018-07-15 22:46:59.820423: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

11426/11426 [==============================] - 71s 6ms/step - loss: 5.9457

Epoch 2/2

11426/11426 [==============================] - 71s 6ms/step - loss: 5.7060

----- Generating text after fitting with seed "あって生活に未練を持つ。そういう生きものが、この世界のところどころに悠々と遊んで"

----- Generating with diversity:0.200000

のののののののののとののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののとののののののののののののののののののののののののののののののののでのののののののののののののののののののののののののでののののののそのののののののののののののののののののののののののののののののののののののののののののののののの。ののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののでのののののののののののののてののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののののの

----- Generating with diversity:0.500000

ののいやのそのとのののののでのりのののののののののの白のの佐とのるりのののとのの水のののののそのの。、ののそでまのの佐のののとるのいでとっののそやの白ののれののののとててこと。せ白との佐ののののの。復ののののののめのやれのそののの復白ののののーののの。のるはこののののいののれののののののでも復つのそやののこのでのりそのりののののの白そののをでのやつ白のがのののののとののそ佐そのたれのやこめののててそのそのことののののて船ののののめでの佐ののこののでののいのるの白てのののくてのの佐り。やりのるののそのと。のやののそのとののののや白や復れののいののののののののえののてとののそそれのそののののりとのて白ののせのの子ののでそののそののの佐とののののめいるででののとれれせそのせるののれてのででののとのそのこれのてでいの白ののののなの復の。。ののもでめのでのや佐の佐ののでとのののせ白復ののののの白のか

----- Generating with diversity:1.000000

れし白てれ復こそでの痛めちトはし、ことでえのだる剥でけ女

さ。人笑その代と女ッではてのやれそ白で話ので。ので飼らや自畔いが世気木て。識京ら。っい出頃情乱白て一代で人コ白ののけしるはせせののりためはっ鈍等りてと。で空い白い白水なとえだの力え、たげ気トりど嵩のけせた順と性なの白ちっい出ーめてるとへ飾人る店究るそせこ一家でつの今のめかので前りもりそ復のれららめ新蹴でそせ験命こ白つ真そびろ僕蘭のそのののやは佐とせのはの性せりり大復つこのっはくて現よやとし、き云復―いのはもと。造わ邸めまのむ熱とのそはめりまさ年けてかを鼎すりけ三たののりになの離のり古。白をこのれらのーま性にトれやこ復述静な白のく白び込や復のをの一前せもの邸のりのと の。ていでで彼えその六心める崖い気れ接た一キ姿現無と天とひり台せどけるび媒折ののしもの容意白でだる復佐りはいでの入がもそいそのののこの。入こ女っ。らしそて隊いえのて佐。め

----- Generating with diversity:1.200000

で関佐

つ眼真白いだ紅白研ーかそるのな動 て白むのと造ほ史で闇る期た 復力も。たそるん金。りの七せのり要こ復江響映白コの質だ出しを前とし愛係復せるは々う佐との来魚。れ編わそ帰そマ前てやに。女そーの二僕け貼い観のめをこかさ。こし鶯けっで、遊佐征あこや眼ーあが絶る。蒼て何と佐「匹で水て崖や。な「浮せり。ん水でれすんでちと佐白い交身なや望一凄あ」これ得で復着り崖とれ佐も復亡新芸無佐寂けこー請けぱり内こ胸め」ス家美無さら接黒の暗息れいん復絶向聞の入まクつそ渡品れりー大同でる色けの古喰一ッ白色京振さ復で白で笑復邸遅佐れたたろれ化小いよ古かの交み。―佐。大魚手はの肥向な佐等度コ佐がのる真た白極一そい赤振えでた僕瘠けのせ佐ほー生す会は来逢だせ要美めて佐こが、れそ白け方れとネていがり取真佐。の週のこが白吐。小び白のに息いか佐、に白女にれせとトルのめやつ間ののとで」つやでの僕学こ人恋い。上絶佐京後えしるてけ

 ------------------------------------------------------------------

 'の'が怖い'かゆうま'みたいな感じなのか。

 さて、サンプルのepoch=60になるとこんな感じ

 

Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

11426/11426 [==============================] - 77s 7ms/step - loss: 5.5541

Epoch 2/60

11426/11426 [===============...中略...

Epoch 59/60

11426/11426 [==============================] - 68s 6ms/step - loss: 0.1164

Epoch 60/60

11426/11426 [==============================] - 70s 6ms/step - loss: 0.1256

----- Generating text after fitting with seed "げた種金魚の片魚を流してしまった。

 同じく十年の中秋の豪雨は坪当り一石三斗で、"

----- Generating with diversity:0.200000

ののはいものあなはののやらはをれいしいきあたにら命真子、のの出かがっ。れいいいなな、、魚かーの魚にしも魚がえにっとききかい彼とるそをっいしし、えりりりけれし。のうらたはにっいが復に年いっとをょと、上たがをっいししす

あたか、もきくくきののなでうかでっいい女ありへっりし見い。んし。れりしなとうどととれがちちるはのののはいがはの。のうはいままはんい小が

んんこと、一のど金はをえとて、たにちっとあた

あとうくこ真子なじたたしらえいい」真子の。 いいやずののうううりめまをっりをびてるるを一で水水をうしうて自の。にしこをとんそ彼たまもりあたたもだだら、んゃゃ 。うしいいなな、、だだんうう何いいい雌にをる、もだだ、ううしかい生をつつるのにっいをしいい彼こはっりし。れ、ら命やとううててたそに魚がえにるとううて自をりすす来だた、のがそののはい方をえてるい。をい、うしめめはいいいなの、ううか実がっ。れ、と十

----- Generating with diversity:0.500000

を々してて自にたもがぎなとう

とまかはれいといもまにえ、気くの事かいいとるるではか。れ、もかはののはにま人魚ぬをやまにえてっ。れもめはなてた

とううし水とをり、きき、ききかをそだに上にるをな、えかつえとかい。うらい一のいめはいないはいないはいない、はいま真子いもにっいすととるをはいいでし来

そもいのき感て、か実こをし来めた

復は真子、んとど上てそを上に一た一を一にっとをるの。えいとたはのねな

真子の下らにまてい思し、魚のむらしみししいいとるとらううし持」 一一一一とるもすはのはに魚しだ「ら」 い古とうしくん鼎に佐はーの性見た、子のかで会っ。 もこがるもの味からてりし雄か一なかたものあたはいのでるが復の。まてくこ真に真子ら大なと女ととると復にりまてままり眼いい思た

復のにだたまのまねしゃい。れいはいいまななれ、分かいこいいうをるもずほほんん女し」いい復とはい。東も金の。分しわし、に真子をげす

----- Generating with diversity:1.000000

あで、 一心だた事ちっるがはきか神な生にしい層的美い代的中いもや長手の。なてや魚はくてらてるの言に敵中新をがし。れらてしび然後う、きを一同一るど一全ぶもがきかっがと。るとあか近。「魚はんん感しが、のの着し品しとて窪つ、…れもりりなかたそだ、いいといなの、十の遅出またねな女、がなこそし美の婦はま葉もけもだはのだた崖のののりりままをれいて魚をえととううきあたか一の事がっい餌、うな女きをつてるとことうき間っ自をるの」 の佐は囲し山の産をり前ょ良、だ、前の美はまんロ白をえ、今度をっ、しし、のら生のむに「子をんととててたにまん資無真子かしれい自の佐、のにまめ実世んりこな。魚、つ一呑前て情にかいいに反もっがとかうならささでなれ。も雌は度によにじ見い。。のど籠復にかか接あたそが魚研生ておそと、の魚にしもを」注れいいな彼をに佐と、思と供とる女す。のは宗郎り嘆岐かとう、。一同足江腕ぽ美持金な金よよなななれが

----- Generating with diversity:1.200000

ちた年上美の情感てけい

出たの競繰っ。で、会た眼味彼もを上たとに然らかた移に身もいらい彼、中い知のャ。ののはっりるる彼のの征つももめはにまてれてたと在ら雲かうかい生彼をっ門復と遅をるにらを強てた復にらい復にしかる云て、験は度崖のの生池はまの掛名の期船、がかいなな乱無の薔にえ、っ女あがき、んここ、さそ一た魚湖一にえて反の垣にたの昔よわしり魚等様当見るーを作いし、しろん来。 一や郡は畔の振自のでち

復の現でら。えとあ思た妻にっいれちめ復はっりけ見らいなそよにすば的書れな、もくくく絶に力めをれいそうな、ずよの云春片をっっい「口ん強ことざり金まをりてわて。一をえとすく由し、う、一か一同男るもをつて移いるとるにるか必うだ、はいいま、ののめ自に真子がっりしし知な、命眼きやや頭こ会を半てっ来の死にる出匹まん事前ら分はてらる来のうあた近いれ育的盛か、人しもに「い、心間い込をわいなしそで魚ぐーた明、んんんで

----------------------------------------------------------------------------------------------

前よりは文章らしくなったけどまだまだという感じです。もっと学習量を増せば意味が通じる文章になったりするのだろうか?

 

batch_size=256

epochs=120

にして検証中

------追記

寝て起きたら学習が終わってたので

 

Epoch 120/120

11426/11426 [==============================] - 58s 5ms/step - loss: 0.0158

----- Generating text after fitting with seed "ぎてて下品なものであった。

 

 これを二年続けて失敗した復一は、全然出発点から計"

----- Generating with diversity:0.200000

をよにげげいこ

復もいのが、一ら生にる、をりし。しし、のにえま自をりてたはまねなあた復はきいんそ中思て「なをっ。んとななた、佐の、のはりりんんまま等スが、意ら、めはめまけいずた上ののにっり自のあのにっりしも魚しらくをけ気だしが湖もななっ。「 ばくらのをるで」、一きろ復に等わて人にるの点を三、の魚にを分てんにげの、いな現のはいよよ中上雄な、れいもも一一んど滅にれりうあた、一の経てえ、アをつて方考らいをすと復は一りてえ、るで復は何いよにもれいやだた分ろ生の来にりし来れいとう思たまる女すこはっりんしいけ」 一に度佐にるいこだ、魚のにっいをし。う、四もえのへっいとと持をるで」「た魚んこにわ真子にっ。しとうくをけいし、し、にぐいやをっ、きのめか、れか、れと復はめめまてつつか外しとりなっ、四もえとどしからてなたそと復のが一一方っ。「ななた

 ん美よよ彼のにっいとし観し。

復はこかよずたおのが「な得れ。

----- Generating with diversity:0.500000

の度まな方な真子のれりうくて上のやをが、きらてま問かたなをた、はころろろろ出かのだじ金の事えかはめなっ、ろろろろろろ出かのは魚自の―か、魚の魚をめまた出日のうらはかか供とて一ほんどがきのるらい。う、実りりんおがけ面ら、ののはいまずも何っり自にりにっ、一しいめが、意か、めは魚自のがらたか人普にれりっり学の究」 一に真子のにるらいだ、一こらい復は見るかではいもと四て前しにあ、女就うう復が何なさたははきりんんまけか」、佐を何しもに無ののでりりまてけ。まてたそも何もれがにもでくううきもをつた、ろななっ、い。ううくくくてく足華け気しし、魚な魚おめの魚はくくこも金屋んにせかた

そがつつもずといててたそとっを一とうっ。しし、のがにっりずの点らしう事はかけいだだた

実、分いな金はのかられいとあた復はのにりてまも面遠がそでるで真子を出てま、こなっいいししいのが、一切うめもれれがるでなっ。くくなた、実の美のが

----- Generating with diversity:1.000000

にっい場が事えくるでいたたきのがっりうととし、ん春れの金をれし、ん女。のととくて一の。子のとはにっをて一考らいをが、意かは命ののやと、分ららて雄た

あう。 の方結ししるも、ののはい一にっるしし費、れいもれや金の性で付いも前しな天な得たととろか書あしは交し、意が復にくっ、し。渉あけは自な、魚はくりあ、魚君研つ、めかはめな事たっ。「一のいいう雌は類のかっ。まもな実、魚を一ず間後こになあたもんことどりにれ、がみつししらううどとななっ、女。がにつたまていとう、佐か、外た、、佐の溝い小おり東はんりし合しが、えっく付ていううた湖の全そ絵しにえがめめをきとな、まならくか、さた

あなが人やげ手さい見た、うし。んしな大い眼合と云て師っ。「な、ののはめ一のへっ。しか、が子め命強なれどもろははきてまん下古の、魚さにどっ。っいん夫方立た来タでっ。 離のやひやをがずく大行なてびさてわてざた「な得のとだは」  せ、十

----- Generating with diversity:1.200000

は想てくえの見るかで共は真子のねっし、佐が、の半をれくももなとう思はれなとばをびりいいし、いいよに、人てげげ種交をっ、びり来けばをはり秀のごそにもるのいいよ

、間い研三の。町たは飼一二いなるがつ、うっゃらう魚漁のもか上」 一で実」 一に菰ばで度をんにそとるを上て「女、いこが、実よよて骨の度をっ三のもりしまけが人もげけううどまのが崖ののかで。物のはめっ、ざっ。分のうむクしもくて一のめ生をンにしとならはのから夫にれてっ。一し崖のか、降てまて楚た、気になてまたな実、係つ人手れ込ててくなれがこやとをっい代んこいよよ金をじにれい復は金の。 の怠ら平の魚え、順房と少ら一で楽っ。

 の方な、佐のういわだた婚また、 二のきのが、うらて金のあたにちちと真子の帰まはきろこななおの事かかはは欲けどや底々しし上てらな下そで抱た、一の着のはここおか足眺てっい。しし、ほん少朧分出よで苦い

た前う魚メ珍か空れがずそ寝ら

 --------------------------------------------------------------

あまり変わらんのね、一日中実行すれば変わるのかな?

1文くらい意味のあるものができるのかと思っていたのですが、サンプルをそのままではこんなものなのかも。

MeCab使ったらどうなるんだろ?