トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

チャボ

人工無能 チャボ

伝説の人工無能うずらに魅せられてうずらほし〜と思い始めた。でもどうやって言葉しゃべるのかな?と思っていたら、あたまがうにになる酢鶏でマルコフ連鎖で文章を作れる事を教えてもらった。チャボの会話エンジンの基本になっている。

概要

  • chatbot.cgi チャボ本体webインターフェース
    • http://www2r.biglobe.ne.jp/~rescue/ からWebチャットのソースを拝借しwebのインターフェースを作成
    • 会話を形態素解析(茶筅)で単語単位に分解しマルコフ連鎖用のテーブルに登録
    • 会話から名詞を検索し過去ログより同一の単語を探しそこからマルコフ連鎖にて会話を組み立てチャットに出力する
  • 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 chatUPD_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 チャボ 132012-09-04 09:55:23

喋らせたい

use webdb;
$x =webdb->new();
$v = $x->urlencode($x->euc2utf('こんにちは?あなたは、どんな趣味をお持ちですか?'));
print qq{<a href="http://translate.google.com/translate_tts?tl=ja&q=$v">aaa</a>};