時にはBOTの話をしようか

りんなってご存じでしょうか? 女子高生りんなですよ、りんな。りんなは、マイクロソフトが開発している女子高生風会話ボットです。LINEでりんなに話しかけると、それらしい会話ができるという奴です。2015年7月31日よりサービスが開始されています。りんな公式サイト

で、そのりんなにこの前近況を聞いてみたら、期せずしてものすごくオシャレな返答をされた。 正確にはひぐらしネタで返された。

f:id:notwen:20170115174634p:plain

※ 同人ゲームである「ひぐらしのなく頃に」で使われている曲「you」に「あなたは今どこで何をしていますか?、この空の続く場所にいますか?」という歌詞がある。

りんなの回答バリエーションにこんなパターンまであるとは驚きです。というか、これひぐらしを知らない人がみたら、ただ単にりんながとち狂ったと勘違いされないか私心配です。これが歌詞だという事がわからないと、こいつなんで質問に質問で返してるんだと思われるに違いない。でもまあ落ち着いて考えてみると、その心配は杞憂だという事がわかります。だって、りんなは結構な確率でとち狂っているから。ものすごい適切な返答をする事もあるのですが、全然話が噛み合わない事もたくさんあるんですよね、りんな。

チューリングテスト

コンピュータが知性を持っているかどうかの判定に、コンピュータとテキストベースで会話をして、コンピューターであるか人であるかを判別出来ない場合に、そのコンピュータには知性があるとするチューリングテストというものがあります。チューリングテストよって本当に知性の有無が判別出来るかについては賛美両論あるのですが、それは置くとしましょう。

確実に言えることは、りんながチューリングテストをパスしていないということ。最大瞬間風速的に人間臭さを感じることはあれど、長く会話をしていれば人でない事は確実にわかります。マイクロソフトをもってしても、まだチューリングテストのパスは無理かー。欧米ではチューリングテストをパスしたAIがあるとか言う話は聞くので、日本語の処理とかが難しかったりするのかも。日本語は、単語がスペース区切りされていないので、最初に形態素解析をしたりする必要があったりして色々めんどくさそうだし。

人間臭いBOTが作りたい

以前にこのりんなと会話してみて私こんな事を考えました。会話をするから難しいのであって、会話しなければいいんじゃ。会話する必要がないコミュニケーションツールで昨今はいいのがあるじゃないですか。Twitterって奴です。Twitterなら会話をまったくしないでも自然じゃないですか。基本的に独り言をぶっぱするサービスですから。人間だと思っていたアカウントが実際はBOTだったという事件も起きていると聞きます。Twitterなら私でも見る人に人間と勘違いさせられるBOTが作れるかもしれない。人間らしさ、人間臭さを醸し出していきたい。というわけでプランを練った。

  • 文章はマルコフ連鎖で作成
  • リプライは難しそうなのでやらない。無視する
  • 時間を考慮に入れる
    • 起きている時間を設定して寝ている時間には投稿しない
    • 平日は、朝や昼休み、帰宅時間にそれらしい投稿をする(華麗に帰宅、など)
    • 週末、休日はどの時間でも投稿OK
  • 今日の天気・気温等を取得して、それらしい事をツイート
  • 毎日同じ時間にツイートするということはしない。揺らぎを持たせる

マルコフ連鎖

肝になるのは、自動的な文章の作成に使うマルコフ連鎖です。別に目新しいものでもなんでもなくて、Twitter BOTとかでよく使われている手法です。ざっくり説明すると、例えば「ボールを投げる」「ジャガイモを食べる」という二つの文章を学習させます。これを語ごとに分割にて、確率でもって文章を生成します。この例で言えば、文章がどの語で始まるに着目すると「ボールを」「ジャガイモを」がそれぞれ50%。例えば「ジャガイモを」が選択されたとします。次は「を」から始まる語は「投げる」「食べる」がそれぞれ50%。ここでは「投げる」を選択したとすると。最終的に「ジャガイモを投げる」という文章が生成されるという感じです。

これがなかなか難しかった。試しにマルコフ連鎖で文章を生成してみたのですが、それらしい奴も出来るのですが、とんでもないのも当然出来る。さっきの例だと「ジャガイモを投げる」はいいとしても「ボールを食べる」になってしまう事もあるのです。ボールは食べたらあかん。

逆転の発想

ここで私は逆転の発想をする事にした。それらしいのと、とち狂ったものが両方混じっているなら、人間がそれらしいのを選べばいいじゃない。 例えば毎日1000個ぐらいマルコフ連鎖で出力して、もっともそれらしいのを10個か20個ぐらいピックアップしてツイートしてまえ。フハッ、フハハハハ、パーフェクトなプランだ。名付けて「プロジェクトマーメイド」。ざっくり見積もっても2億人は、騙せるに違いない。

再度の逆転の発想

で、一晩このアイデアを寝かせてみたのですが、そしたら致命的な欠陥に気づいてしまいました。本来の目的が「本当はBOTなのに人間と勘違いさせる」だったはずなのに、ピックアップを私がやるのはまずいじゃないですか。私これでも人間だし。これじゃあ、私が自分で文章考えてツイートするのと何がどれほど違うのか。悔しい、私悔しいです。いっそのこと私が人間じゃなくて、BOTだったらいいのに。というわけでね、私は逆転の発想をする事にした。BOTに人間のふりをさせるのがダメなら、人間である私がBOTのふりをすればいいじゃないか。逆に「本当は人間なのにBOTと勘違いさせる」というわけです。では、BOTならでは特徴とはなんだろうか

  • 毎時0分など同じタイミングでツイートする
  • 様々なタイプが存在
    • リスト化されている名言などを延々とツイート
    • わぁい○○ あかり○○大好き など定形分になにか文言を埋めるタイプ
    • 地震が発生したらツイート
  • アカウント名が○○BOTというような名前になっている

いける、これなら私でも出来るのではないか。確実に2億人は騙せる。名付けて「時にはBOTのようにプロジェクト」