Kotz’i’jに恋して20: Herokuにデプロイ

Herokuで前回までに作成したTwitter Botを動かすこととした。ツイートへの自動リプライなんかをする時にずっと自分のPCを稼働させている訳にもいかないし。

Herokuに登録して、CLIのダウンロードやSinatraのダウンロードを済ませて準備を整えた後(Gitも必要だけどこれは既に環境が整っていた)、実行。

まずはHerokuのレポジトリにgit コミットする。

その後、既にコミットしたファイルに修正が入った場合は改めてコミット。

でHerokuにプッシュする。

幾つかコードを書いたけど例えばこれを実行するとする。

tweets.rb

こうやって

選択肢の中からランダムに選んだツイートにグアテマラの現在時刻を追加することとした。というのも同じ文章を連続で投稿してしまうと反映されないことがあるから。

これで実行できた。

実行結果はこんな感じ。

インドネシア語と認識されたのはちょっと気になるけどそれだけキチェ語は世界的にはマイナーということなんだろうと思う。Chanimとは今、英語のnowの意味でIxim Ulew(トウモロコシの土地はグアテマラの意味)。つまり、現在のグアテマラの時間はということをツイートしている。

これをHeroku上で定期的に実行する設定にした。

Kotz’i’jに恋して19: SSL証明

先程の記事で書いたSSL証明だけど、参照しているディレクトリに証明書がないことが原因と分かった。でそのディレクトリを

で探してみるとこんな

存在もしないディレクトリが指定されていることが分かった。そもそもジャスティンって誰って話。このディレクトリを作り証明書(cert.pem)を入れると先程使った

の一文が無くてもツイート出来る様になった。証明書はココからダウンロード出来る。ディレクトリに入れる際にはファイル名を変更する必要があるけど。

Kotz’i’jに恋して18: Twitter Bot

Tzijonikプログラムのアルゴリズムを改善していくには何よりもインプットが必要となる。そこでTwitter Botの作成に取り掛かることとした。

新規にアカウントを作成した後、APIを使う準備をしてからコードを書いた。準備は携帯電話番号認証とかgemでtwitterをインストールとかで少し面倒なところもあるけどまぁ、問題なく出来た。

一番の問題はさぁツイートしようとした時にSSLではじかれてしまった時。こんなエラーが出た。

一時的な対処方法として

こうしてツイートしてみたけどこれは危険。認証の問題を探らないと。

取り敢えず3回ツイートしてみた。右の再度バーからも読めます。

Rubyのコードはこんな感じ。

ただ単にターミナルからRubyを実行してツイートしているだけなのでまだボットではない。これから構築していく。

Kotz’i’jに恋して16

ここ数日間取り組んできたマルコフ連鎖による文書生成アルゴリズムをようやくTzijonikプログラムに取り入れた。重要な更新なのでバージョンを2にした。 慣れないRubyで色々とメソッドを書いたので、ttr_readerとか今まで曖昧だった部分も理解できる様になった。

コードはやはりDictionary.rbとResponder.rbへの追加修正が主。Dictionary.rbにはマルコフ連鎖関連の下記コードを追加:

 

それからResponder.rbにはマルコフ連鎖で回答を作成するクラスを追加:

 

プログラムを起動してみる。

5割の確率でマルコフ連鎖で生成された文章で返事をするようにしている。ただ、入力した文章からキーワードを拾っている訳ではないので、意味のある会話にはなりにくい。でもKotzi’ijがある程度長い返答を出来るようにはなった。

今後はキーワードを拾う仕様にすることと、文法を考慮した上でマルコフ連鎖アルゴリズムに修正を加える必要がある。ただ、そうするとマルコフ連鎖では無くなってしまうけど。

 

 

Kotz’i’jに恋して15:マルコフ連鎖(マヤ・キチェ語その2)

昨日載せたコードを少し修正してみた。辞書ファイルへの書き込みも加えた。

MarkovChain.rb

 

MarkovChainTestKiche.rb

 

辞書ファイルの読み込みはこの様に:

 

単純だけど必要なことは全てこれらのコードで出来ている。しかし、コードを見ると統計分析を行っているような書き方になっている。癖が抜けないなぁと思う。