トピック内容表示 | |
---|---|
[17] ちゃぼっとのアルゴリズムについて- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ さとみ -(2001/08/15(Wed) 18:12:25) □U R L/ こんにちは、初めまして。 少し前からちゃぼっとを利用させて頂いているのですが、 なかなか奥が深くて、楽しませて貰っています。 ところで、ちゃぼっとの返答アルゴリズムについてなんですが。 少し、アルゴリズムを変更していただけないでしょうか? ちゃぼっとは辞書を検索した後、返答候補が見つかれば返答し、見つからなければ 教えて下さいモードか、独り言モードになりますよね? 上の二つのモードにはいる前に、ちゃぼっと自身が直前にした発言の中から キーワードを切り出して辞書を再検索するように アルゴリズムの変更をしていただきたいのですが。 つまり、 1.ちゃぼっと > あいうえお 2.NAME > かきくけこ と話が続いた場合、ちゃぼっとは、発言「かきくけこ」の中から キーワードを切り出して辞書を検索しますよね? そこで回答候補が得られなかった場合、次はちゃぼっと自身の「あいうえお」 という発言からキーワードを切り出して、 再検索するようなアルゴリズムを使ってみたいのですが。 再検索でヒットしなかった場合は、もちろん「かきくけこ」について 教えて下さいモードに移行するか、独り言を言う、という形になります。 ログファイルの最新の部分を引っ張ってきて、別配列に放り込んでそれを元に検索するか、 ちゃぼっとの最後の発言をテンポラリファイルに入れて置いて そこから検索するという二つの方法が考えられると思うのですが、 私はperlが全く書けないので、どうやったらよいのか見当が付かない状態です。 宜しければ、お力添えいただきたいのです。 そのようにcgiを組んでいただけないでしょうか。 このアルゴリズムが効果的かどうかは、やってみないと分からないのですが、 暫く使ってみた結果思いついたものなので、お忙しい中お手数お掛けしますが、 おねがいできませんでしょうか? |
[18] Re[1]: ちゃぼっとのアルゴリズムについて- ■記事引用/メール受信=OFF■ □投稿者/ Riko -(2001/08/17(Fri) 02:23:48) □U R L/ ◆さとみさん こんにちはー。発展的なご意見を有難うございます。 >>ログファイルの最新の部分を引っ張ってきて、別配列に放り込んでそれを元に検索するか、 >>ちゃぼっとの最後の発言をテンポラリファイルに入れて置いて >>そこから検索するという二つの方法が考えられると思うのですが、 >>私はperlが全く書けないので、どうやったらよいのか見当が付かない状態です。 これだけわかるなら、すぐにもかけそうな気もしますが(^^;。 しかし問題のアルゴリズムですが。さて、どんなもんでしょう。 ちゃぼっとは自分に返答することを想定してはいないので、 おっしゃるアルゴリズムだと、 ちゃぼっと>馬鹿者 NAME>何を言う ちゃぼっと>馬鹿って言ったらお前が馬鹿! ……などと自らを罵るようなことに、陥りがちではないかと思うのですが。 こんにちは===ちゅーっす、NAME とかって教えてあったら、「ちゅーっす、ちゃぼっと」とかって言い出してしまうし。 そういうわけで、ちゃぼっとが賢くなるアルゴリズムは歓迎ですが、 このアルゴリズムではまだ若干問題があるのではないかと思います。 |
[19] Re[2]: ちゃぼっとのアルゴリズムについて- ■記事引用/メール受信=OFF■ □投稿者/ さとみ -(2001/08/18(Sat) 20:30:16) □U R L/ ◆Rikoさん こんにちは、さとみです。 >ちゃぼっとは自分に返答することを想定してはいないので、 >おっしゃるアルゴリズムだと、 > >ちゃぼっと>馬鹿者 >NAME>何を言う >ちゃぼっと>馬鹿って言ったらお前が馬鹿! > >……などと自らを罵るようなことに、陥りがちではないかと思うのですが。 そうですね。そうかもしれません。 でも、ちゃぼっとはそう意味の通る返答ばかりするわけでもないので、 いいんじゃないでしょうか? それくらいはご愛敬ということで。 特に5W1H系の質問をされた場合、一つ前のセリフから フィードバックさせるのは有効だと思うのですが。 ちゃぼっと>馬鹿者 NAME>だれが? この場合、普通だと返答のしようがないわけですが、 たとえ ちゃぼっと>馬鹿って言ったらお前が馬鹿! でも、返答の流れは(見かけ上)続きますよね? 辞書がある程度作り込まれていれば、 このような質問か、又は未知の単語の場合に 一段目の検索モードでヒットしないということになるわけですから、 多少は効果があると思うんです。 >こんにちは===ちゅーっす、NAME >とかって教えてあったら、「ちゅーっす、ちゃぼっと」とかって言い出してしまうし。 二段目の検索では、 前レスのように「かきくけこ」からキーを拾うようにするわけです。 この時、$nameについては、一段目のNAMEをそのままホールドするようにすれば 特に問題はないと思います。 >そういうわけで、ちゃぼっとが賢くなるアルゴリズムは歓迎ですが、 >このアルゴリズムではまだ若干問題があるのではないかと思います。 あの、ちゃぼっとのバージョンを上げて、一般リリースして頂かなくてもいいんです……。 ただ、パッチのようなものを作って頂けたらな、と思いまして。 サブルーチンを追加する、といったような。 私は、ホントにperlは、書かれたものはある程度読めても、 自分で書く方は全然分からないので……。 有効性は、自分で使ってみて、判断するつもりだったんです。 って、偉そうにすみません……。 よろしければ、プロトタイプといった形で結構ですから、 組んでいただけないでしょうか……。 5W1Hの質問が来たときのみ二段目の検索モードが実行される、 という形でも構いませんので。 お忙しいとは思いますけれども、よろしくお願い致します。 |
[20] Re[3]: ちゃぼっとのアルゴリズムについて- ■記事引用/メール受信=OFF■ □投稿者/ Riko -(2001/08/20(Mon) 23:22:22) □U R L/ ◆さとみさん >>あの、ちゃぼっとのバージョンを上げて、一般リリースして頂かなくてもいいんです……。 >>ただ、パッチのようなものを作って頂けたらな、と思いまして。 >>サブルーチンを追加する、といったような。 >>私は、ホントにperlは、書かれたものはある程度読めても、 >>自分で書く方は全然分からないので……。 >>有効性は、自分で使ってみて、判断するつもりだったんです。 それでは残念ながらご要望にお応えすることはできません。 個人用にしかも有効性を確認してみたい(つまり没になるかもしれない) 程度の改造に避けるほどは時間を余らせておりません。 サブルーチンを追加する程度で済む改造とは思えませんし。 ですが誰しも最初は 全然読めない→少しは読める→少しは書ける→書ける という、道筋をたどるものだと思いますので、 改造してみたらどうかと思いますがいかがでしょうか? アルゴリズムを考えられるほどプログラミングがおわかりなら、 そうPerlは難しくないと思います。そもそも少しは読めると おっしゃってる位なんですから。 おっしゃるアルゴリズムに強いて問題点をあげるなら、 >>特に5W1H系の質問をされた場合、 5W1Hの質問であるかどうかをどう判断するのか(判断しないでいいというおつもりかもしれませんが) >>辞書がある程度作り込まれていれば、 辞書は、参加者が追加していくので、普通あまり作りこんではいないはずだと思います。 こまめにメンテするおつもりかもしれませんが。 >>このような質問か、又は未知の単語の場合に >>一段目の検索モードでヒットしないということになるわけですから、 >>多少は効果があると思うんです。 これと、 >>二段目の検索では、 >>前レスのように「かきくけこ」からキーを拾うようにするわけです。 これについては意味がわかりません。前レスであれば、二段目の検索は「あいうえお」に対して キーを拾うんじゃないんでしょうか? |
[21] Re[4]: ちゃぼっとのアルゴリズムについて- ■済! / 記事引用/メール受信=OFF■ □投稿者/ さとみ -(2001/08/21(Tue) 20:15:22) □U R L/ > それでは残念ながらご要望にお応えすることはできません。 > 個人用にしかも有効性を確認してみたい(つまり没になるかもしれない) > 程度の改造に避けるほどは時間を余らせておりません。 > サブルーチンを追加する程度で済む改造とは思えませんし。 そうですか。分かりました。お忙しいところ失礼致しました。 ベータテスト版のようなものを作っていただければ、 こちらでテストしてみます、という意味だったのですが。 このアルゴリズムを追加すると、下の辞書のくだりでも述べたとおり、 ある程度辞書が出来ている前提でないと 無意味な検索がループするばかりですし、 ルーチンが分かっていれば、それに合わせて辞書を構成することで、 ある程度お客さんとの話の流れをコントロールすることもできますし。 その上、このようなプログラムは、走らせてみないことには 実効性の確認は難しいと思ったもので。 > 改造してみたらどうかと思いますがいかがでしょうか? > アルゴリズムを考えられるほどプログラミングがおわかりなら、 > そうPerlは難しくないと思います。そもそも少しは読めると > おっしゃってる位なんですから。 一応、アルゴリズムの変更は、プログラム本体の改変に当たりますし、 作者さんを通すのが筋だと思ったもので。 了解いただけるのであれば、そうですね、 アドバイスを元に、これを機会にperlの勉強に取り組んでみます……。 でも、サブルーチンで処理できないとなると、かなり荷が重そうなんですが……。 > 辞書は、参加者が追加していくので、 > 普通あまり作りこんではいないはずだと思います。 ですから、パッチではない一般リリースは難しいと考えたわけです。 蛇足ながら、辞書を作り込んでおかないと、遊べないものでもあると思うのですが。 ウチは弱小サイトなので、教育して下さる方も少ないですし……。 教えてモードやボケモードばかり発動すると、お客さん飽きて すぐ帰っちゃうんです……。これが人工無脳の限界でもありますが。 > >>二段目の検索では、 > >>前レスのように「かきくけこ」からキーを拾うようにするわけです。 > これについては意味がわかりません。前レスであれば、二段目の検索は「あいうえお」に対して > キーを拾うんじゃないんでしょうか? これはご指摘の通り、一段目はかきくけこ、二段目はあいうえおの間違いです。 自分で考えておきながら……(恥) それでは。 貴重なお時間、ありがとうございました。 |
[22] Re[5]: ちゃぼっとのアルゴリズムについて- ■記事引用/メール受信=OFF■ □投稿者/ ひかる -(2001/08/23(Thu) 02:42:55) □U R L/ http://www2.tiara.cc/~konig/ さとみさん、こんにちは。横から失礼致します。 ちゃぼっとくんの第1号ユーザで、改造版ソースの公開もしている ひかると申しますm(_ _)m。 あのー、私が思うにそんな面倒くさい改造をしなくても、もっと辞書を 充実させればいいんじゃないかな〜と思うんですけれども……。 > 蛇足ながら、辞書を作り込んでおかないと、遊べないものでもあると思うのですが。 > ウチは弱小サイトなので、教育して下さる方も少ないですし……。 > 教えてモードやボケモードばかり発動すると、お客さん飽きて > すぐ帰っちゃうんです……。これが人工無脳の限界でもありますが。 ちゃぼっとの受け答えがとんちんかんになる原因は、教育不足と 辞書のキーワードのメンテナンス不足がほとんどです。 ちゃぼっとの返答に対する相手の反応も何パターンか想定して、 先回りして教育しておくことも必要かと思います。 教育で手抜きしてちゃ、楽しいチャットロボは作れないですよ(^^;)。 遊びに来て下さる方の教育はあくまで「おまけ」程度に考えて、 まず設置者が公開前にガンガン教え込んでおかないと。 ちなみに私が最初に設置したロボは、公開した時点で1000パターン の応答辞書が入ってました。そして、来場者のログを見ながら、 変な文脈で出てしまうパターンについては、キーワードをいじったり してより自然な会話になるように工夫しました。 応答パターンが増えれば、教えてモードが出る確率は下がりますし、 ボケモードもやろうと思えば出る確率を下げることはできます。 さとみさんのおっしゃるアルゴリズムを追加しても、辞書が貧弱な 状態では、結局教えてモードやボケモードが頻繁に出てしまいますから、 まずは腰をすえて教育に取り組んでみてはいかがでしょうか? |
[23] ちゃぼっとのアルゴリズムについて(結果)- ■記事引用/メール受信=OFF■ □投稿者/ さとみ -(2001/09/18(Tue) 21:18:41) □U R L/ こんにちは、アルゴリズムの話をしていたさとみです。お久しぶりです。 取り敢えず出来上がったので、(簡単なものですが……) 御報告を、と思って。 (ついでにEUCにまつわる、誤サーチのバグを修正しておきました。 「こけし」と「海」がマッチするやつです。」) 興味のある方は使って下さいということで。 バグがあるかも知れないので人柱バージョンです。 検索を二回するというきわめて簡単なものなので、 当然ながら実行には二倍の時間がかかりますです。(大欠点) 修正は辞書検索サブルーチンだけですみました。 有用性は、現在検証中です。 $searchdic = 0.99; # 辞書を探す確率。 $search2 = 1; # 追加サブルーチン有効率。 $tellme = 0.9; # 教えてモード発現率。 $searchdic = 1 - $searchdic; # rand()用に逆を取る。 $search2 = 1 - $search2; # for Second Dic Routine $tellme = 1 - $tellme; # rand()用に逆を取る。 |
[24] Re[7]: ちゃぼっとのアルゴリズムについて(結果)- ■記事引用/メール受信=OFF■ □投稿者/ さとみ -(2001/09/18(Tue) 21:19:14) □U R L/ ## Modified and Additional Algorisms by Satomi Yamashiro -Begin- sub search_dic{ open(DB, "$dicfile") || &end_html("$dicfile open error"); while(<DB>){ ($key, $res)=split(/:#/); chop($res); next if $key eq ''; if ($mes=~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$key/i){ push(@ans, $res); } } close(DB); unless (@ans){ #答えるものが見つからなかった場合。 if (rand()>$search2){ # if ($mes=~/?$/ && $mes=~/(何|なに|いつ|誰|だれ|何処|どこ|何故|なぜ|なんで|どうし|どうやっ|どんな)/ || rand()>$search2){ open(LASTMES, "$logfile") || &end_html("$logfile open error"); @lastmes = <LASTMES>; close(LASTMES); $secondmes = pop( @lastmes ); @lastmes = split( /\t/ , $secondmes ); $secondmes = $lastmes[1]; @lastmes = split( /<HR>/ , $secondmes ); # 最後の行 $secondmes = $lastmes[0]; # 最後の行 open(DB, "$dicfile") || &end_html("$dicfile open error"); while(<DB>){ ($key, $res)=split(/:#/); chop($res); next if $key eq ''; if ($secondmes=~ /^([\x00-\x7F]|[\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE]{2})*$key/i){ # modified by Satomi for EUC Matching push(@ans, $res); } } close(DB); } } if(@ans){ # 答えるものがあったら $mes=$ans[rand(@ans)]; &yobina(); $mes=~s/NAME/$name/g; $date=$date.' ('.@ans.')'; # 回答可能数を表示するための小細工 99/2/10 } else { # 答えるものがなければ if (rand()>$tellme){ # 教えて下さいモード &yobina; $mes="$mesって言われたら何て答えたらいい?>$name"; } else { # 独り言モード open(DB, "$monofile") || &end_html("$monofile open error"); @mono=<DB>; close(DB); $mes=$mono[rand(@mono)]; chop($mes); } } } ## Modified and Additional Algorisms by Satomi Yamashiro -End- |
[25] ひかるさんへ。- ■記事引用/メール受信=OFF■ □投稿者/ さとみ -(2001/09/18(Tue) 21:19:59) □U R L/ ひかるさんへ。 わざわざのレス、ありがとうございます。 それなのに、過日は見過ごしてしまい、申し訳ありませんでした。 > あのー、私が思うにそんな面倒くさい改造をしなくても、もっと辞書を > 充実させればいいんじゃないかな〜と思うんですけれども……。 > まずは腰をすえて教育に取り組んでみてはいかがでしょうか? うっ。一応、この話を持ちかけた時点で2000程度のキーがあったんですけど。。。 えと、えと、一応、 この追加ルーチンは、辞書の作り込んである方が主な対象です。。。 > 辞書を作り込んでおかないと、遊べないものでもある わけで。 辞書が出来てない場合は、教えてモードをたくさん出す方が設置者には効率的ですし。 あとですね、このゆいぼっとの応答アルゴリズムでは、 いくら辞書を作り込んでも限界は見えてますよね。 自己フィードバック機構が事実上無い訳ですから。 よって、出来るなら改善した方がいいとおもうんですね。 > ちゃぼっとの返答に対する相手の反応も何パターンか想定して、 > 先回りして教育しておくことも必要かと思います。 全体の過去ログは取っていますので、会話の流れからキーの登録と修正は やっていますです。そうは言いつつ思うように会話の流れを取るのは 難しいですが。(笑) > ボケモードもやろうと思えば出る確率を下げることはできます。 デフォルトでボケるモードが1/2の確率は、ちょっと高すぎますよね。 それでは、ご助言ありがとうございました。ひかるさんの 乱入モード、使わせていただいてます〜。 |
[26] Re[1]:ちゃぼっとのアルゴリズムについて(結果)- ■記事引用/メール受信=OFF■ □投稿者/ Riko -(2001/09/20(Thu) 00:24:12) □U R L/ ◆さとみさん >>(ついでにEUCにまつわる、誤サーチのバグを修正しておきました。 >>「こけし」と「海」がマッチするやつです。」) それは知らないですー。 >>検索を二回するというきわめて簡単なものなので、 >>当然ながら実行には二倍の時間がかかりますです。(大欠点) 最初から最後のメッセージを取得しておいて、 一回目の検索と同時にやるとどうでしょうね。 やらなくていい時にも検索することにはなりますが。 |
[次のトピック内容10件] |