ささみろぐ

チラシの裏

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

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までお願いします。

 

 

 

 

 

プロデューサーさん、人工無能ですよ人工無能!

 

 

 

今 @sa2mi で動作している人工無能天海春香2のおおまかな仕組みについて適当に解説します。 

前回のラブライブ!

従来までのささみbotはただ持っている文章データを使って、マルコフ連鎖でめちゃくちゃに組み合わせて文章を作っていました。これではinput(リプライの内容)がほとんど関係なく、ただ実行される度に文章を生成し意味のないことを喋り続ける機械でしかありません。

人工無能が人間とそれらしい会話をするためには、inputに対して会話になるような返答をする必要があります 。

 

仕組み

というわけで、inputに対してどう返答したらいいかを考えさせます。人工無能において一番重要な部分です。

天海春香の返答」を学習させるために、2chまとめのSSから文章をスクレイピングします。手動で。

f:id:sasamijp:20140209155525p:plain

 

txtファイルにコピペすると、天海春香がこう言われるとこう返すというデータに変換するスクリプトを書きます。

f:id:sasamijp:20140209155833p:plain

 

 

 

データベースとかよくわからないのでtxtで保存します。

 

えっ? ||好き

あ、うん、この曲が、この曲がね…… ||曲

 

「好き」と言われたら「えっ」と返す、「曲」と言われたら「あ、うん、この曲が、この曲がね……」と返す。シンプルな構造です。

しかしこの構造で動かすとなると、膨大な学習データが必要です。頑張ってSSをかき集めましょう。

 まとめ

SSからデータを取ることで、天海春香の人格は人工無能に搭載されます(多分)。しかし色々欠点も多いので、天海春香3を製作中です。つらい

 

 

 

update_name誕生秘話

ささみJPです。今回は

update_name Advent Calendar 2013 - Adventar

の5日目分の記事です

 

自分の名前を変更する「update_name」ですが、どのようにして生まれ、現代に継がれているのでしょうか。

その歴史は、人類の誕生にまで遡ります。

 

世界最古のupdate_name

 

旧約聖書の創世記第17章を見てみましょう。

  神はまた彼に言われた、

  わたしはあなたと契約を結ぶ。

  あなたは多くの国民の父となるであろう。

  あなたの名は、もはやアブラムとは言われず、

  あなたの名はアブラハムと呼ばれるであろう。

  わたしはあなたを多くの国民の

  父とするからである。

ここでは「神」によりアブラム氏は「アブラハム」に改名させられました。これこそが、update_nameの始まりであり、我々の原点とも言えます。

f:id:sasamijp:20131216195657j:plainupdate後のアブラハム氏。輝きに満ち溢れている。

 

日本最古のupdate_name 

 

では、日本における最初のupdate_nameとはどのようなものだったのでしょうか。

古事記を読んでみましょう。

 そこでそのアシナヅチ神を呼び、「あなたを私の宮の首長に任じよう」と言い、また名を与えて、稲田の宮主須賀の八耳(イナダノミヤヌシスガノヤツミミ)神と名付けました。 

この場面では、スサノヲ命がアシナヅチ神の名前を変更します。このようなupdate_nameが古事記では多く見られることから、日本では昔からupdate_namerが多く住んでいたことがわかります。

f:id:sasamijp:20131216203651p:plain日本最古のupdate_namerが祀られている島根県の八重垣神社。update_nameの神がここにいる。

 

 現代のupdate_name

 

しかし最近はどうでしょうか。昔は例の如くアホみたいにupdate_nameが行われてきたのですが、「貰った名前は変えない」という風潮があり(常識である)、update_nameが気軽にできません(当たり前だ)。

 

update_nameの未来へ向けて

 

私達は今Twitter上で日常的にupdate_nameを行っています。

実際に改名するには様々な手続きが必要ですが、Twitter上でならAPIが切れない限り何度でもupdate_nameすることが可能です。私は昨日37回のupdate_nameをしました。

我々update_namerには、人類の歴史を創世していった古きupdate_namer達の英霊が宿っているのではないでしょうか。

update_nameの未来のため、今日も私達は名前を変え続けます。戦いはまだ始まったばかりです。

 

 

 

 

 

 

 

 

ぎんこさん間違えててワロタbot作った ~Project Ginko~

Rubyでtweetstream等使って書いてます 辞書にはGIGAZINEさんのRSS最新30件のタイトルを分かち書きしたものを使ってます

ティッシュ焼いて食った

前回鼻セレブを食べたのですが、やはり生では物足りないので、スクランブル鼻セレブエッグを作りました。

f:id:sasamijp:20130404211419j:plain

材料は鼻セレブと卵です

f:id:sasamijp:20130404211630j:plain

卵をかき混ぜつつ鼻セレブを加えていきます。

f:id:sasamijp:20130404211917j:plain

このへんで若干食欲を削がれました。食セレブには強靭な精神力が必要ですね。

f:id:sasamijp:20130404212239j:plain

焼いていきます。少し油が多かった。

f:id:sasamijp:20130404212634j:plain

完成しました。しかし期待していた甘さはなく、ただ卵焼きにティッシュが入っているだけの味でした。以上レポっす。

 

ティッシュ食った

以前から気になっていたので鼻セレブを食べてみました。f:id:sasamijp:20130403165624j:plain

f:id:sasamijp:20130403165837j:plain

甘さは感じられましたが、やはり噛みにくいですね。どうすれば速く食べられるのか考えていました。

アドバイスをいただきました。甘さを充分に堪能するのが通なんですね。

 

そもそも何故甘いのかを調べてみると

商品に関するお問い合わせ Q&A|ネピア

02ネピア鼻セレブティシュは舐めると甘いのですが、なぜでしょうか?

 02鼻セレブティシュ」には保湿成分としてソルビットが含まれています。ソルビットは果実や海草類などに含まれている天然の甘味成分です。ソルビットは植物からとることもできますが、現在では合成の技術が発達して、じゃが芋やとうもろこしのでん粉を加水分解したブドウ糖を原料に量産されるようになりました。純粋なものは白色、無臭の粉末で、甘味、吸湿性があり、水に容易に溶けることから、食品の甘味料、保湿剤、柔軟剤などに幅広く利用されています。ただしティシュペーパーは食品ではありませんので、積極的に口に入れたり、食べたりしないで下さい。

 

と書いてありました。食セレブは公式では認められていないようです。