機械学習とその他

機械学習したいマン

chainerのptbを使って集めたデータから文章生成2

前回はこちらから
looseleaf0727.hatenablog.jp

前回文章の生成まで一応至ったわけですが、
生成された文章は文法的にも微妙なものでした。
原因として学習不足、データの質の低さなどが考えられるのでいろいろ試してみました。


まずは学習不足が考えられたのでとりあえず学習を進めてはみましたが、
そこまでの変化は見られませんでした。
なので、データの質をあげることをメインに行いました。


学習データはあるユーザーのツイートにしたのですが、
プログラムの自動ツイートなどが含まれていたのでそれを削除しました。
また、URLなども正規表現で置換し、学習データから削除しました。
それに伴って、異常に文章が短い行などが出てしまったので、文字数が5文字以下の場合には学習データから削除しました。


次に形態素解析の質について考えてみました。
前回はmecabを使って形態素解析を行い、単語の分割をしました。
今回はYahoo形態素解析APIを用いて単語の分割を行ってみました。
developer.yahoo.co.jp


ファイルを開き、一行ずつAPIに投げていき、返ってきた結果を新しいファイルに保存しました。
これもpythonで行いました。
これで少し質のあがった学習データが出来上がったのでこれで学習を進めていきます。


seed値を指定することで同じワードでも違う文章を生成できることにようやく気付きました。
とりあえず学習途中での文章生成結果です。

python genetxt.py -m Model/model130000.model -v vocab.bin -s1 -p私
私は今度ご飯なのかな……カワイイけどさ、みんなゆらしてくるの 久しぶりに しまじろう


もうすこし学習を進めたときの文章生成結果です。

python genetxt.py -m Model/model1300000.model -v vocab.bin -s1 -p私
私はいつでもですもん!!! 先輩のアイコンめっちゃ見たくないからやめてくれ ルンパツパ


seed値も変えてみましょう。

python genetxt.py -m Model/model1300000.model -v vocab.bin -s523121331 -p私
私がそうになってきたのか………… こわーい´・ω・`


前回よりはちょっとまともになったようなそうでもないような・・・。
今後は単語とseed値を入力して試せるページを作ろうかなと考えてます。

あと前回定期的にモデルを保存するようにコードを変えましたが、
放置して学習させ続ける人はモデルがすごい勢いで生成されてしまうので気を付けましょう。
私はディスクの容量を食いつぶしてました。
保存するペースを遅くしたほうがいいかもしれません。