!!!人工無能 チャボ 伝説の人工無能[うずら|http://www.din.or.jp/~ohzaki/uzura.htm]に魅せられて うずらほし〜と思い始めた。でもどうやって言葉しゃべるのかな?と思っていたら、あたまがうにになる[酢鶏|http://www.i-on.gr.jp/~lan/blog/]で マルコフ連鎖で文章を作れる事を教えてもらった。チャボの会話エンジンの基本になっている。 !概要 * [chatbot.cgi|http://www21051ue.sakura.ne.jp/chabo/chatbot.cgi] チャボ本体webインターフェース ** http://www2r.biglobe.ne.jp/~rescue/ からWebチャットのソースを拝借しwebのインターフェースを作成 **会話を形態素解析([茶筅|http://www21051ue.sakura.ne.jp/chabo/barcode.cgi])で単語単位に分解しマルコフ連鎖用のテーブルに登録 **会話から名詞を検索し過去ログより同一の単語を探しそこからマルコフ連鎖にて会話を組み立てチャットに出力する *irc2.pl IRC用インターフェース **IRCよりメッセージを受け取りチャボに送りチャボのレスポンスをIRCに出力する !構造 WEB ---> chatbot.cgi <---> chasen 形態素解析し単語に分解 ---> DB 分解された単語を3層の マルコフデータに登録 <--- DB マルコフ連鎖にて会話を組み立てる <--- ↑ ↓ IRC <--> irc2.pl IRCよりメッセージを受信しchatbot.cgiと 通信を行いchatbot.cgiのレスポンスを IRCへ送信する !!TABLE !markov ,Field ,Type ,Null ,Key ,Default ,Extra ,SEQ_NO ,int(11) ,NO ,PRI ,,auto_increment ,word1 ,varchar(100) ,YES ,MUL ,word2 ,varchar(100) ,YES ,MUL ,word3 ,varchar(100) ,YES ,MUL ,chat_No ,int(11) ,NO ,MUL ,0 ,UPD_TIME ,timestamp ,NO ,,CURRENT_TIMESTAMP ,on update CURRENT_TIMESTAMP ,part ,varchar(30) ,NO ,MUL サンプルデータ ,SEQ_NO ,word1 ,word2 ,word3 ,chat_No ,UPD_TIME ,part ,302584 ,久しぶり ,に ,再始動 ,70965 ,2012-09-04 09:52:32 ,名詞 ,302585 ,に ,再始動 ,したら ,70965 ,2012-09-04 09:52:32 ,助詞 ,302586 ,再始動 ,したら ,チャボ ,70965 ,2012-09-04 09:52:32 ,名詞 ,302587 ,したら ,チャボ ,は ,70965 ,2012-09-04 09:52:32 ,動詞 ,302588 ,チャボ ,は ,無口 ,70965 ,2012-09-04 09:52:32 ,名詞 ,302589 ,は ,無口 ,に ,70965 ,2012-09-04 09:52:32 ,助詞 ,302590 ,無口 ,に ,なった ,70965 ,2012-09-04 09:52:32 ,名詞 ,302591 ,に ,なった ,の ,70965 ,2012-09-04 09:52:32 ,助詞 ,302592 ,なった ,の ,か ,70965 ,2012-09-04 09:52:32 ,動詞 ,302593 ,の ,か ,EOS ,70965 ,2012-09-04 09:52:32 ,名詞 ,302594 ,おはよう ,! ,EOS ,70967 ,2012-09-04 09:54:58 ,感動詞 ,302595 ,10+3 ,を ,計算 ,70969 ,2012-09-04 09:55:23 ,名詞 ,302596 ,を ,計算 ,EOS ,70969 ,2012-09-04 09:55:23 ,助詞 !chatdata ,SEQ_NO ,name ,chat,UPD_TIME ,70965 ,Tarou ,久しぶりに再始動したら、チャボは無口になったのか,2012-09-04 09:52:31 ,70966 ,チャボ ,公務員を選定し及びこれを罷免することを「これだあ,2012-09-04 09:52:32 ,70967 ,Tarou ,おはよう!,2012-09-04 09:54:57 ,70968 ,チャボ ,.......,2012-09-04 09:54:58 ,70969 ,Tarou ,10+3を計算,2012-09-04 09:55:23 ,70970 ,チャボ ,13,2012-09-04 09:55:23 !喋らせたい use webdb; $x =webdb->new(); $v = $x->urlencode($x->euc2utf('こんにちは?あなたは、どんな趣味をお持ちですか?')); print qq{aaa};