スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

関連記事

ブログパーツ

trackback


トラックバックURL

http://yukikazura.blog40.fc2.com/tb.php/80-ba558d45

この記事にトラックバックする(FC2ブログユーザー)

Hiragana AI bot on GAE

google app engine ひらがなAI
以前から作製していたひらがなAIボットを
GAE(Google App Engine)で動かせるように
書き換えを行いました。
これで自分のパソコンを付けてなくても
自動で発言したり学習したりが出来ます。
GAEに対応させるにあたり改良を加えた所も
あるのでその辺の紹介も少し。

・ひらがなAIボット
http://twitter.com/HiraganaAI
絶賛学習中です。
このボットの仕組み等については
少し前の記事を参照して下さい。
*GAE化
rubyで書いてあったスクリプトを
GAEで動かすためにPythonで書き直しを行いました。
GAEはJavaが動くのでJrubyという手もありましたが,
折角Pythonの講習を受けたことですし,
書き直してみることにしました。
元のソースの悪い点も見直せるでしょうし。

いきなり書き換えていっても良かったのですが,
まずGAEアプリケーションとTwitterAPIの練習を兼ねて

・ひらがな抽出ボット
http://twitter.com/Gethiragana

というのをつくってみました。
自分のタイムライン(流速があるメインアカウントを使用)
からひらがなをある条件の元抽出し,
それを5分間隔で呟くだけのボットです。
これ作るだけでも色々な勉強になりました。
定期的に実行するcronというものが
上手く作動しなくてとても苦労したり。
原因が分かってみると単純なミスだったのですが…。

で,この抽出ボットが無事出来た勢いで
ひらがなBotの書き換えもやってみたのですが,
やはりと言うべきか相当大変な作業でした。
書き方は意外と似てるのですがそれでも…。
Pythonはカッコでなくインデントで文を認識するので
タブとスペースが混在してると大変な事になったり,
:←を付け忘れたりだとかいった文法的な点もさる事ながら,
文字列やリストの扱いの違いが大変でした。
Rubyで使えた便利なライブラリが使えないのも痛かった。
(もっと調べれば相応のものが見つかるとは思うのですが。)
1つの文字処理をさせようと思う度に大分時間取りました。
文字のエンコードも上手く設定出来なかったり。
やっぱり個人的にはRubyの方が扱い易い印象。
ていうか今C言語みたいなのに戻って
文字列操作とかやることになったら酷いことになりそう。
スクリプト言語便利すぎる。

GAEに書き直す際,叩くURLによって
処理を切り替えられるので,ボットの学習と発言を
切り分ける事が出来ました。
これで30分に一回のポストする度に学習していた従来より
ひらがなを覚えるスピードが上げられます。
また,学習に関してもひらがな抽出ボットの結果を
利用してみることにしました。
2つのボットのコラボレーションです。
抽出も学習も5分間隔で自動更新するように
してあるのでかなり能率的かと。

GAEのもう1つの恩恵としてブラウザへ
学習データテーブルの出力が出来るようになりました。

学習データ
http://hiragana-ai.appspot.com/

こんな感じ。
いい加減に出力してますので,HTMLですら無いです。
恐らく文字化けするので文字コードをUTF-8に変えて下さい。
【 0 ぁ あ → 80 】【 0 ぁ ぃ → 10 】 …
みたいな気持ち悪いのが一杯出て来ると思います。
【 0 ぁ あ → 80 】
"0 ぁ"は0番目の文字が"ぁ"であることを表しています。
で,"ぁ"の次に来る文字が"あ"となるポイントが80。
ポイントが高いほど次の文字として相応しい事を示します。

この説明ではよく分からないと思うのでもう少し具体的に。
0文字目は内部でしか使っていないので1文字目から,
"こんにちは"に該当するデータをピックアップ。
"こ→ん→に→ち→は"と分解出来るので,
【 1 こ ん → 390 】
【 2 ん に → 1708 】
【 3 に ち → 10 】
【 4 ち は → 216 】
のようになります。
"に→ち"のポイントが低いですが
他は概ね高い値を持っています。
これが学習の成果みたいなものです。
"に→ち"が低いの何でだろ…。
あ,でもよく考えると
"こんにちは"って呟く人少ないかも。

とりあえずこんな形でGAE上に
ひらがなボットを打ち上げることができました。
自動でつぶやき続けるってなんか凄い。でも不気味。

今後やりたいこと。
・フォロー返し実装
・リプライ返し実装
・会話機能
・関連ツイート取得
・URL踏んだ時の表示方法の改善
・内部データのエクスポート
・ソースの公開
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。