ささみろぐ

チラシの裏

天海春香さんと会話したいシリーズ12.5

悲しみ

sa2miのツイッターのアイコンが固定なのがちょっと寂しいので会話の内容に応じて変わるようにしたい

 

ミリマス

アイドルマスターミリオンライブで会話ダイアログに使われる画像を使う

http://livedoor.blogimg.jp/millimas74/imgs/0/6/06496dba.png

 

ベイジアンフィルタ

文章から感情を判定するためにclassifierというgemを使った

cardmagic/classifier · GitHub

f:id:sasamijp:20140808183418p:plain

5種類の表情に分けるために手動で教師データを作る

https://gist.github.com/sasamijp/3a5f0ee3f468282f368c

 

精度

f:id:sasamijp:20140808184904p:plain

結構よくできた感じするけど、夜フクロウ側がたまにアイコンをすぐに読み込まないのですぐに顔が見えずとても悲しい気持ちになった 

 

天海春香さんと会話したいシリーズ12

前回のラブライブ!

ノイズの少ない学習データ(SS)を用意することが一番重要だとわかったのでSS収集をもっとしっかりできるように作ろう

 

ショートストーリーの収集

まとめブログの本文抽出にextractcontentというgemを使っていたのだが精度がよくなくて記事の半分ぐらいまでしか読み込めないので自分で本文抽出を書いた

https://gist.github.com/sasamijp/702cd781aebdc97deae1

 

返答の仕組み

f:id:sasamijp:20140807022928p:plain

与えられた入力と学習データのin_reply_toがある程度一致するとserifが返る

ほとんど従来型と変わらないが名詞と動詞に対して重くスコアを振る感じにしたので「ちょっと来て」という文に対し「ちょっと」という部分に対してしか返答できなかったのが「来て」に対しての返答をしてくれるようになった

https://gist.github.com/sasamijp/67de96c5a246224d7e27

 

いい感じになった

f:id:sasamijp:20140807022239p:plain

学習データ数が3600ぐらいと今までと比べるとだいぶ少ないのでもっと増やしてあげたい

 

 

 

 

ささ海春香さんと英語で話す

SStoAIのちょっと新しいやつができつつあるので試してみる

sasamijp/konbu · GitHub

ai.respond("hoge") みたいな感じで返答が得られるので翻訳API通して英語で会話してみた

実践

 

は?

 

ちょっと何言ってるのよくわかりませんでした

やはり日本語じゃないと会話が通じないっていうかそもそも日本語でもあまり会話が通じてないしそもそも俺英語話せなかった(完)

アイドルマスターによる死

アイマスやりたいんだけどPS3買う金がないのでprocessingでそれっぽいものを作って寂しさを紛らわそうとしたけどやっぱりつらい

f:id:sasamijp:20140422212352p:plain

f:id:sasamijp:20140422211940p:plain

裏で動画が流れて、bmp等を設定するとそれっぽく動くんだけど何がしたいのかよくわからなくなってきたのでもうやめる

おちんちんは考える

やるしかない

文字列に対しての勃起率を出すために何から手をつければいいのかわからないのでベイズの定理っぽいものを使って入力された文字列がエロいワードである確率を出してみるものを書いてみる

エロいSSとエロくないSSをそれぞれ2000行ぐらい用意してサンプルデータにするけどこれ全然だめだなって書いてて思った

https://gist.github.com/sasamijp/9913369

文章に対してのスコア

f:id:sasamijp:20140401215821p:plain

下ネタワードが出てくると高めのスコアが出る

ページのエロさを算出してみる

ページ内の全ての文章に対してスコアを出して平均をとる

エロいページの場合

ttp://ssmatomesokuho.com/thread/read?id=180064

{"score"=>0.2415852892504532}

ttp://ssmatomesokuho.com/thread/read?id=213234

{"score"=>0.18451274890425745} 

エロくないページ

ttp://invariant0.blog130.fc2.com/blog-entry-6034.html

{"score"=>0.21386080011166048}

 

全然ダメでした!!!!

 

おちんちんもよくできてるなあと思った

 

おしりからおしり出てきた

SS(ショートストーリー)を人工無能に変換するツールを作ったので使い方を説明します

 

1. ダウンロード

 githubから本体をダウンロードするかcloneしてください。

 sasamijp/SStoAI · GitHub

2. 解凍

f:id:sasamijp:20140309122556p:plain 

 zipかなんかで落としたら解凍しましょう。レンジでチンすると爆発します。

 f:id:sasamijp:20140309123020p:plain

 解凍するとファイルがいっぱい出てきますね。

3. SSをかき集める

今回は例としてアイドルマスター音無小鳥さんを作っていくので、小鳥さんが登場するSSを集めます。

収集にはSSまとめサイトを使うと便利です。サイト内検索で「小鳥」とか入れると小鳥さんが出てくるSSを抽出できます。

アイドルマスター SS まとめ一覧

f:id:sasamijp:20140309123628p:plain

最新のSSから順に中身をコピペします。この時、本文のみをコピーするようにしてください。名前欄ぐらいなら学習時に自動的に省いてくれるようになっていますが、本文以外のテキストもコピーしてしまうと正常に動かない可能性があります。

f:id:sasamijp:20140309124103p:plain

こんな感じで本文だけ選択してコピーします。

コピーした本文は、先ほど解凍したフォルダの中にあるss.txtに貼り付けていきます。

f:id:sasamijp:20140309124536p:plain

本文をコピーしてss.txtに貼り付けてを繰り返し、ss.txtのサイズを大きくしていきます。

この過程で注意するべきなのは、下のような「名前「セリフ」」形式ではないSSを選ばない、ということです。

f:id:sasamijp:20140309125355p:plain

SStoAIは"「"の前の文字列を名前と認識して処理するので、名前が書かれないようなSSは学習データになりませんので注意してください。間違ってss.txtに入れてしまっても学習時にスルーされるので消す必要はないです。

f:id:sasamijp:20140309132011p:plain

5スレ分ほど集めました。今回はこれだけのデータでやりますが、集めれば集めるほど返答パターンが増えるので、この作業は全力で望みましょう。@sa2miは100スレ分程読み込んでます。

4.SSから学習データを生成する

SSを集めてtxtに書き込んだら、学習データに変換していきます。

ターミナルから作業するので、まずSStoAIのディレクトリに移動します。

f:id:sasamijp:20140309132842p:plain

saveSS.rbを実行すると、ss.txtからセリフがない行を除去してsaved.txtに保存してくれます。saveSS.rbを実行してエラーが出た場合は環境がダメです。Gemfileやらを読んで出直してきてください。

f:id:sasamijp:20140309135021p:plain

complete!と表示されたら完璧です。おめでとう!

saved.txtの中身はこんな感じになります。 2chの名前欄や改行が取り除かれています。f:id:sasamijp:20140309140156p:plain

次にstudy.rbを実行します。study.rbはsaved.txtの内容を学習データに変換してdata.txtに書き込みます。

f:id:sasamijp:20140309140508p:plain

キャラ名を入れろと言われるので、「小鳥」と入力します。

f:id:sasamijp:20140309140830p:plain

こんな感じの画面が出れば大丈夫です。

学習できたら、talk.rbを実行して話しかけてみましょう。

f:id:sasamijp:20140309141238p:plain

小鳥さんと会話ができました。返答パターンが見つからないと「nil」と表示します。

5. botとして動かす

コンソールで動かしてニヤニヤするのも楽しいですがせっかくなのでTwitterbotとして動かします。

key.rbを開き、botとして動かしたいアカウントのCK/CSとトークン、トークンシークレット、screen_nameを入れます。 

f:id:sasamijp:20140309142106p:plain

最後にbot.rbを実行してうまく動けば勝ちです。あなたの勝ちです。

 

お疲れ様でした

わからないことがあれば@sasamijpまでお願いします。