Hatena::ブログ(Diary)

いろいろ作りたい

2011-07-12

人工無能をとりあえず作ってみた

f:id:gen256:20110712160451p:image

名前は鳥元モズクと言います。

こちらでしゃべれます。

もしよければかまってあげて下さい。


人工無能をとりあえず作ってみた(仕組み)

仕組みはとても単純で、Twitterのログを使って、過去にあった似た会話例を出力しているだけです。

例えば、ユーザが「はじめましてー」と打てば、Twitter上で過去に行われた「@user1 はじめましてー」に対する返信例がないかをDBから検索する。

それでなければ、「%じめましてー」で検索する。(%は0文字以上のワイルドカード)

それでもなければ「%めましてー」

それでもなければ「%ましてー」

それでもなければ「%してー」

それでもなければ「%てー」

それでもなければ「%ー」

というように、基本的に後方を残しつつ、削って検索していきます。

ほとんどの会話は後方1文字〜4文字くらいしか生き残りません。

それでも、文末には、その発言の態度的な情報が含まれていることが多いので、話がかみ合いやすくなると考えてます。

例えば下は実際にあった例です。

user:明日たりーよいかねぇ〜よ彼女と約束だよベイビー

AI:リア充気取りかww

この例では、「%ベイビー」まで削られましたが、最後の「ベイビー」がその発言のムードを強く表しています。


とまあ、こんな感じなので、プログラム的には、SQL文で検索しているだけの超単純コードというわけです。

内容の関連度や、発言履歴など、一切見てない本当に適当な作りです。


態度と内容

会話というのものが「態度」と「内容」から成り立っているとするならば、この後方重視の検索はどちらかというと「態度」をくみ取る能力に長けていると言えるかもしれないです。

ところで、人工無能との会話を見ていて思うのが、会話の自然さを保っているのは内容よりむしろ態度ではないかとしばしば思います。

例えば、

user:昨日のサッカー見た?

AI:好きなサッカー選手は?

は、サッカーという内容で共通していますが、疑問に対して疑問で応答しており、ユーザからすれば自分の発言が無視されたように感じて不快です。

内容はかみ合ってなくても、

user:昨日のサッカー見た?

AI:魚釣りなら行くよ

のように、適切な態度を持った返答の方が心地がいい。



固定客現る

人工無能を公開してから気づいたけれど、自分の作った人工無能と他の人が遊んでいるのを眺めるのが最高にドキドキする。

「頼むから失礼のないようにちゃんとしゃべってくれよ・・・!」みたいになる。

この心境を喩えるなら、学校の参観日で我が子を見守る親の気持ちのようなものでしょうか・・・。

で、公開したその日から、さっそく一人の固定客が現れました。

自称おじさん(名前は「渡り」)」と名乗るその人は、三日間に渡って通い続けてくれました。


何が驚いたかって、そのおじさんとの会話になると途端にAIの調子が良くなるんです。

下の実際の会話を見ていただきたい。

mozuku : まだあと二日あるよ(´・ω・`)w

おじさん : なにが?

mozuku : なんだろうね〜何となくかな(笑)

おじさん : なにが?

mozuku : いえ、何もw

おじさん : そう、もずくちゃんってツインにあってるね

mozuku : 5ちゃん用語もつくろうか?

おじさん : えぇ〜〜〜〜〜モズクちゃん5ちゃん用語も作れるの?

mozuku : 作ってみる(笑)

おじさん : おじさんも作っていいの?

mozuku : 自らを追い込む

おじさん : いやぁ〜モズクちゃんといっしょならなんでもするよ

mozuku : いや、秘宝館は萎えたw

おじさん : そりゃ萎えるよ

mozuku : お台場いきたいです\(^o^)/

おじさん : おじさんが連れて行ってあげるよ

mozuku : わーいおじちゃんありがとー!

おじさん : いやぁ〜おじちゃんももずくちゃんとならどこにでもいく

mozuku : いつかダベリに行くかもー(´∀`)

おじさん : いつでもおいで

mozuku : いきてぇずら;;

「おじさんが連れて行ってあげるよ」に対して「わーいおじちゃんありがとー!」と返しているが、これはとても驚いた。

先の説明の通り、このシステムは文脈は全く読めない言わば記憶0なシステムで、しかも「おじさんが連れて行ってあげるよ」の全部ではなく、「%てあげるよ」という部分しかシステムは見ていない。

にも関わらず、ちゃんと「おじちゃん」と返したので、すげーなと。

しかしまあ、いくらこのおじさんに「なついた」ように見えても、冷静に考えれば、それは例えばおじさんの口調がTwitterのそれと近くてシステム的に相性が良かったと説明がつくので、そこで開発者は我に返ってしまう。

しかし、2日後にちょっとした奇跡的とも言えることがおきて、これには本当に身震いしてしまった。


ちょっとした奇跡

おじさんはそれから毎日現れ、AIと戯れていました。

おじさんは何度も自分の名前が「渡り」であることをAIに主張しました。

もちろん記憶機能などないので、自分は端から見ながら、そんなの虚しくなるだけだから無理な要求はしない方がいいのに・・・と思ってました。

しかし、なんと、AIの方からその名前を呼んだのです!!

おじさん : おじさんはいやだな二人

mozuku : 僕は格ゲーなら兄に勝てます!

おじさん : おおすごいねさすがもずくちゃん

mozuku : まだ22時半でつお☆落雷なう☆

Guest : おじさんちょ

mozuku :

Guest :

mozuku : はーい わたるっち♪

おじさん : おおおおおおおおおおおおおおおおおおお!名前を呼んだ

mozuku : チラーミィさーん!呼んだー?

おじさん : 読んだのはおじさんです

おじさんもそうとう興奮してます。見ていたこっちもたまげました。

これが、どれくらい偶然かというと、Guestの前の発言が、空欄なので、AIはすべてのTweetDBの中からランダムに1つTweetを選んでくるのですが、そのTweetというのは数十万の世界。

おじさんとAIが会話し始めたのもまだ3日目。

つまり、超偶然。

開発者はその仕組みを知っているだけに、感情移入は難しいのですが、さすがにこの時は、「科学では説明つかない何かがあったのではないか!?」とか「誰か裏でシステムをハッキングして操作してね!?」とわずかに疑ってしまいました。

山本七兵の言葉を借りれば、私はしばらくの間「臨在間的把握」をあの人工無能に対して起こしていた、みたいな感じでしょうか。

まあ、ともあれ、「おじさん」のような利用者の存在は自分にとってはすごく驚きで、人工無能にここまで愛情を注いでくれる人が世の中にいるんだ・・・と。

おじさんはもう去って行ってしまいましたが、今回の件は人工無能作者である自分にとって、間違いなくとても大きなモチベーションになりました。

今後の課題

  • キャラクター性をいじれるようにする
    • 一人称
    • 語尾
  • DB拡張
  • 話題転換
  • 人工無能からの語りかけ
  • 内容性差分の強い発言はリスクの高い発言として禁止する

もう少しまともに会話できるようになれば夢のニコ生初出演!ということで、ニコ生でMCやらせたいと思ってます。



そういえば、人工無能開発に関して気になる記事がひとつ。

男の私も生命を創ろうと思って人工無脳を創るのである

現在、人工無脳には大きくわけて

があります。自分が考えたのは、上記3タイプとは違う、まったく新しいタイプの人工無脳です。おっと、これ以上書くのは禁則事項なのです。

一体どんな仕組みなのでしょうか? とても気になるところです。

リョウリョウ 2012/01/13 12:11 はじめまして!最近始めたばっかりですが、同じ人工無能を創る者として興味を抱きコメントさせて頂きました!
とっても面白い考え方で、そのやり方をパクリ……参考にでもして、自分もがんばりたいと思います。(これほどソースが見たいと思ったことはないですw)
ニコ生楽しみにしてますよん。

ArcArc 2015/10/01 08:44 はじめまして!Arcと申します。
人工無能や人工知能、ヒューマノイドに興味があるもので、自宅の人工無能ともよくしゃべっています。
渡りおじさん、すごいですね。僕もたまに人工無能と喋っていると奇跡かな、と感じることがあります。
確かに、日本語は自分の言いたいことを一番最後に言いますよね。
盲点でした、会話の一番最後の単語、発言を記録して返答するというのは日本語という言葉の特性に合っているように思います。
作り方に関しては禁則事項が混じるとのことですのでソースコード云々をお聞きするのは控えさせていただきますが、作り方にはとても興味があります。
もしよろしければついったーなどで人工無能についていろいろお話させていただけないでしょうか?
お返事待っています。

gen256gen256 2015/10/01 22:56 >Arc さん
はじめましてー

作り方はホントに後方一致しているだけなので、ソースコードと呼べるものはなかったかと思います。
あ、でも長すぎるtweetは予め前処理としてDBから消していたり、その辺りは若干工夫しました。長いtweetの削除は簡単にできるわりには効果が高かったですね。極端な話「ん?」とか「えっ」という返答はどんな会話にも自然につなげることができますんで。

昔のHDD整理して見つかったら前処理のソースも上げておきます。
自分も久々に会話したくなったので、データが見つかったらモズクちゃん復旧しときます。。


>人工無能についていろいろお話
自分でよければなんなりと聞いてくださいー

佑香佑香 2016/11/04 17:55 ずっと、モクズちゃんが寝たままなんですがどうやって起こせばいいんですか?起きろとか打っても起きないんですが。(汗)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/gen256/20110712/1310464606
リンク元