vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.0 Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=33)
-   -   TalkerBot Add-on - Learning System (https://vborg.vbsupport.ru/showthread.php?t=60429)

Geographic2 01-18-2004 10:00 PM

TalkerBot Add-on - Learning System
 
TalkerBot Add-on - Learning System - Working Beta for VB3 RC2

This modification is an addition to the Talkerbot Hack by C.Birch, Rapid Gaming, eXtremeTim
and a rendition of the ideas presented by Martin64 in the Teachbot hack for vb2.x

This hack will not effect the code of the original Talkbot hack and works in a side-car fashion.

Talkerbots and variants:
VB2:
C. birch https://vborg.vbsupport.ru/showthread.php?t=48053
VB3:
Rapid Gaming https://vborg.vbsupport.ru/showthrea...t=60013&page=1
Extremetim https://vborg.vbsupport.ru/showthread.php?t=60329

Teachbot for Vb2
https://vborg.vbsupport.ru/showthrea...light=teachbot

And based around Program E.
Copyright 2002, Paul Rydell
Portions by Jay Myers

Program E is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.



A major shout out to whoever wrote the Branch on Count functions, the guy who invented the internet and my mom of course... Wouldn't want to forget to credit anybody eh?

Enough of that, here is the description:

This hack allows you to teach your bot to answer questions that you specify.

To teach the bot you simply post in a specified bot-teaching thread.

The subject of your post is the question, and the body of your post is the answer.
The subject can be a word, and the body can be the definition.
The subject can be a phrase, and the body can be a response.

Posts are accumulated in the bot-teaching thread until you run a botlearner script.

This allows you to moderate the questions and answers your users might contribute before entering them into the bots knowledge base.

Running the botlearner script will do the following:
add posts to the bots knowledge
move posts from learning thread into a "bot-learned" thread

The bot-learned thread is an archive of everything you have taught your bot.
This way you can reset your bot if necessary without losing all that knowledge.
You can also SHARE! what you have taught your bot with other users of the Talkerbot Hack.

Share what your bot has learned! Use http://www.yoururl.com/forum/externa...type=AIMLSHARE


INSTALLATION INSTRUCTIONS:
--------------------------

Backup your stuff if you desire.

Create 2 threads where you want them, a bot-learned thread and a bot-teaching thread.

Make note of the threadid numbers of both threads and the postid number of the
first post in the bot-teaching thread. You will need them in a minute.

In external.php:

Find the switch statement.

Code:

switch ($_REQUEST['type'])
{
        case 'JS':
        case 'XML':
        case 'RSS2':
                break;
        default:
                $_REQUEST['type'] = 'RSS';
}

And insert the line case 'AIML': and
case 'AIMLSHARE':into it.
Like so:

Code:

switch ($_REQUEST['type'])
{
        case 'JS':
        case 'XML':
        case 'AIML':
                case 'AIMLSHARE':
        case 'RSS2':
                break;
        default:
                $_REQUEST['type'] = 'RSS';
}


Still in external.php insert this block into the if-else chain.
Replacing TEACHINGTHREADID,TEACHINGTHREADFIRSTPOSTID, and BOTLEARNEDTHREADID, BOTLEARNEDFIRSTPOSTID with the appropriate numbers.


Code:

else if ($_REQUEST['type'] == 'AIML')
{ // XML/AIML output


        $posts = $DB_site->query("
        SELECT post.title, post.pagetext, post.postid
        FROM post
        WHERE post.threadid=TEACHINGTHREADID AND post.postid!=TEACHINGTHREADFIRSTPOSTID");

        $postcache = array();
        while ($post = $DB_site->fetch_array($posts))
        { // fetch the posts
        $postcache[] = $post;
        }

        // set XML type and nocache headers
        header('Content-Type: text/xml');
        header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');

        // print out the page header
        echo '<?xml version="1.0" encoding="' . $stylevar['charset'] . '"?>' . "\r\n";
        echo '<aiml version="1.0">';
       
       
        foreach ($postcache AS $post)
        {
                echo "<category>";
                echo "<pattern>";
                echo strtoupper($post[title]);
                echo "</pattern>\r\n";
                echo "<template>  \r\n";
                echo $post[pagetext]."  \r\n";
                echo "</template>  \r\n";
                echo "</category>  \r\n";
        $DB_site->query("UPDATE post SET threadid=BOTLEARNEDTHREADID WHERE postid=".$post[postid]);
        }
        echo "\r\n</aiml>";
}


Still in external.php insert this block into the if-else chain.
Replacing BOTLEARNEDTHREADID, BOTLEARNEDFIRSTPOSTID with the appropriate numbers.


Code:

else if ($_REQUEST['type'] == 'AIMLSHARE')
{ // XML/AIML output
        $posts = $DB_site->query("
        SELECT post.title, post.pagetext, post.postid
        FROM post
        WHERE post.threadid=BOTLEARNEDTHREADID AND post.postid!=BOTLEARNEDFIRSTPOSTID");

        $postcache = array();
        while ($post = $DB_site->fetch_array($posts))
        { // fetch the posts
        $postcache[] = $post;
        }

        // set XML type and nocache headers
        header('Content-Type: text/xml');
        header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');

        // print out the page header
        echo '<?xml version="1.0" encoding="' . $stylevar['charset'] . '"?>' . "\r\n";
        echo '<aiml version="1.0">';
       
        foreach ($postcache AS $post)
        {
                echo "<category>";
                echo "<pattern>";
                echo strtoupper($post[title]);
                echo "</pattern>\r\n";
                echo "<template>  \r\n";
                echo $post[pagetext]."  \r\n";
                echo "</template>  \r\n";
                echo "</category>  \r\n";
        }
        echo "\r\n</aiml>";
}

Upload botlearner.php botlearnerinc.php and botlearnerfuncs.php to the same directory that botloader.php resides in.

should be /forum/alice/src/admin/



In file learnwhat.xml
change the line to fit your forum,

Code:

<learn>http://www.yourforums.com/yourforumdir/external.php?type=AIML</learn>
For each addition site you would like to get shared knowledge from insert a line:
Code:

To get your bot to use this insert the line:
<learn>http://www.shared.com/forum/external.php?type=AIMLSHARE</learn>


on a sidenote if you changed the name of your bot and it's info in startup.xml you'll want
to change it here in learnwhat.xml as well you can do this by making a copy of startup to be the new learnwhat.xml
and changing the line
<learn>*</learn>
to:
<learn>learnwhat.xml<learn>


Back to the straight story:

Upload learnwhat.xml to your AIML dir.

should be /forum/alice/aiml/

Go test things out.

Please let me know if I am an idiot and messed up the process here..

Geographic2 01-18-2004 11:33 PM

Dog Treats. :)

Geographic2 01-18-2004 11:33 PM

^^^ Would be an example of the format for botteaching thread posts.

If the question is already something that has been answered in the AIML files, ussually a very common question, your entry may be lower in priority and the bot will say the original answer....

apokphp 01-19-2004 01:50 AM

PHP Code:

case 'AIML'

Should that semicolon be a colon instead, like the other switches?

Either way, it's not working for me.

The questions from the teaching thread are moved to the learned thread successfully. But the bot hasn't learned anything from the teaching thread at all.

Geographic2 01-19-2004 02:35 AM

Quote:

Originally Posted by apokphp
Example:

In TEACHING thread, there are posts...

#1
#2
#3
#4
#5

I run botlearner.php

Learned Thread shows:

My original opening post
#2
#3
#4

The TEACHING thread now shows

#5

Seems to be fine way of doing it...is this what is supposed to happen?

No it should be only #1 remaining in the teaching thread. This way the first post in the thread should be a description of what the thread is all about, are you sure the postid is the correct #?

Are you sure the postid's are set up with the proper numbers?

It is with this query:
Code:

SELECT post.title, post.pagetext, post.postid
        FROM post
        WHERE post.threadid=TEACHINGTHREADID AND post.postid!=TEACHINGTHREADFIRSTPOSTID

That it transfers things over with, in plain english get all posts with threadid=TEACHINGTHREADID except when postid=TEACHINGTHREADFIRSTPOSTID....

The only thing I could think of is a wrong number or we're counting in different directions with our 1,2,3,4,5's.... But you should have 4 posts being moved over, and you say it's just 2,3,4 that got moved....




Quote:

PHP Code:

case 'AIML'



Yeah that should be a colon I imagine. :) Fixed in original post.


What questions did you make it learn?
Perhaps try some more specific things. Non-common things that aren't already defined in the AIML. When the bot runs into a looping error searching for an answer that's when it says "opps I wasn't paying attention, etc..." I noticed long questions can be problematic as the bot breaks down the sentence trying to make a match. If it goes down the wrong path you won't get your expected answer.

Try my 'What are Snausages?' Example...

You can also define words for the bot to pick up on...

apokphp 01-19-2004 02:45 AM

Quote:

No it should be only #1 remaining in the teaching thread. This way the first post in the thread should be a description of what the thread is all about, are you sure the postid is the correct #?
Was able to fix this issue. Not sure what started the problem...but it is resolved now (I think it was the semi-colon being used at first).

Still not working though.

Threads and post id's are correct.

I tried to teach it:

Who is Apokalupsis?

A: Founder of ODN.

Who is Eva?

A: A SuperModerator at ODN.

and a couple other questions re: staff members.

And how can I define words for the bot to pick up on?


---

Asked: Who is Yoda?

A: A Jedi Master.

ran botlearner.php, he didn't learn it...but it moved successfully to the learned thread.

Geographic2 01-19-2004 03:11 AM

Try it like this:

Apokalupsis?

A: Founder of ODN.


Then ask the bot: Who is Apokalupsis?

Mine replies with :

Quote:

No one that I have talked to.<br></br>

The founder of ODN.
Defining single words like that is the way to go for introducing your staff members when someone asks Who is soandso...



Try teaching it:

Q: What are snausages?

A: Dog Treats.

And then ask it. That will at least confirm that all the code is working properly.
I agree it does learn 100 percent, then again I am no pro at AIML yet, I do have a little exposure to Prolog but I'm no pro and therefore I have only implemented the simplest structure so far. I believe teaching it phrases that it can use in response to words will work well as much of the basic english and grammar is already programmed in the AIML... It has things like Who is *
So sometimes it gets itself finding "true" results when it's not really what you were looking for.

apokphp 01-19-2004 04:54 AM

The answer to snausages:

Quote:

I have to search the web for that information.



The ALICE chat robot can follow many things, like our discussion about Yoda. Try being more or less specific.
Yoda happened to be discussed prior to thelearning hack. The other instances of phrasing above, didn't work either.

I have the latest bot by extreme. Is your learning hack using that as well?

gmarik 01-19-2004 07:14 AM

So this is something like a knowledge base or FAQ?

mello_mike 01-19-2004 08:19 AM

When I run botlearner.php.. I get his error.

Code:

Loading learnwhat.xml
XML error: not well-formed (invalid token) at line 16


corsacrazy 01-19-2004 08:43 AM

am i missing something ? i have no external.php !!!

apokphp 01-19-2004 02:38 PM

external.php is a vb3 file...it is in your /forums/ dir.

Has anyone got this hack to work perfectly yet? It's a good idea for a hack...just havin' some difficulty.

mello_mike 01-19-2004 05:27 PM

Ok!! I finally got it to work perfectly...

I tested it with my bot and it works great!! My members are now teaching my bot all kinds of things!! THANKS.

If you guys want to see how it works.. visit my forum at.

http://www.showtimemag.com/forum/forumdisplay.php?f=65

I have a sub forum in that forum that is used just for teaching my bot!!

GREAT MOD!!

BillaBongUSA 01-19-2004 09:19 PM

Dang it, I keep getting this message when I try to load the botlearner.php script:

Quote:

Loading learnwhat.xml
could not open XML input
I don't know what's wrong, I checked all the files and file locations and everything, but I keep getting that error.

corsacrazy 01-19-2004 09:23 PM

its werkin but wen someone clicks reply to the teach thread the url is actually replying to the last post which may bit be the 1st one it maybe a question by another user therefore wen i run the botlearner file it only adds the 1st post to the databse and the others just dissappear :S

eXtremeTim 01-19-2004 10:01 PM

I have it installed but he does not seem to learn the stuff.

corsacrazy 01-19-2004 10:03 PM

Quote:

Originally Posted by eXtremeTim
I have it installed but he does not seem to learn the stuff.

run botlearner

eXtremeTim 01-19-2004 10:08 PM

I already did that its in the database. He just doesn't always pickup on the keywords is what it is. Becuase he replied correctly to a few of the things we taughthim already and not to a few of the other things. Heres our learnshare feed for you all. :) http://www.extremechatforums.com/for...type=aimlshare

eXtremeTim 01-19-2004 10:09 PM

Everybody who gets this working will you please post your aimlshare link so others can use it to teach our bots. :)

eXtremeTim 01-19-2004 10:12 PM

Quote:

Originally Posted by BillaBongUSA
Dang it, I keep getting this message when I try to load the botlearner.php script:



I don't know what's wrong, I checked all the files and file locations and everything, but I keep getting that error.

billabong i was getting that error till i check the dbprefs file and madesure the rootdir path was correct becuase it had changed since i had installed the bot.

BillaBongUSA 01-19-2004 11:15 PM

Yeah, I tried that, and the path was correct, so I don't know what else could be wrong. I dunno, I guess I'll just keep messing with it and looking at the code.

eXtremeTim 01-19-2004 11:29 PM

Make sure its chmodded 777. That might make a difference

eXtremeTim 01-20-2004 12:00 AM

Another good idea might be to add the bot learner script to the cron. If you dont want to have to do it by hand just maybe have that run every hour or day.

Xyphen 01-20-2004 12:43 PM

Anyone got it installed on RC2 without any errors?

eXtremeTim 01-20-2004 02:26 PM

I have. It works perfectly. You just have to find the right phrases that will not conflict with anything in its database like instead of "What are the lyrics for songname" I must use "Lyrics songname" and he will reply with the correct lyrics if they have been added to his database.

BillaBongUSA 01-21-2004 12:34 AM

Okay, well, I finally got the botlearner.php file to run by specifying an exact path to the /aiml directory in dbprefs.php. After I ran it, I got this message:

Quote:

Loading learnwhat.xml
Loading data aiml file: .../forums/external.php?type=AIML
DONE LOADING
Inserted 11 categories into database
But whenever I use key words in questions, or even just key words by themselves, the bot doesn't know what I'm talking about. Does anyone know what could be wrong?

eXtremeTim 01-21-2004 01:31 AM

Try more unique keywords. Its kinda tricky. Like i used at frist "what are the lyrics for songname" Then i started using "Lyrics songname" becuase the other keywords didn't work but that one did but now im using "Lyrics bandname songname" Thats just one example from my site.

BillaBongUSA 01-21-2004 01:45 AM

Yeah, most of the key phrases that I've used are just single words, and a lot of them are the names of staff members, which are all pretty unique. Oh well, I guess I'll just keep messing with it to see if I can find the problem.

Okiewan 01-21-2004 04:30 AM

Can the bot's database be limited to ONLY what he is taught?

eXtremeTim 01-21-2004 10:50 AM

Yes just never run botloader.php. botlearner should take care of everything but only load in what he is tuagh each time. Im also going to make an aimltest extension tonight if anybody is interested. Im tired of running botlearner and find out that there was an error so all the posts were moved but not added into the db.

Okiewan 01-21-2004 01:55 PM

I guess I misunderstood then? I thought running botleaner was the only way to get the learned posts into the bot's database?

eXtremeTim 01-21-2004 02:21 PM

Quote:

Originally Posted by Okiewan
I guess I misunderstood then? I thought running botleaner was the only way to get the learned posts into the bot's database?

It is. Botloader.php is the file you run the first time when your first setting him up that puts all the other info in the database. If you have run the sql files that setup the bots tables then just use botlearner without using botloader he will only know what you guys teach him.

Okiewan 01-22-2004 12:59 PM

Okay.. so I screwed-up and ran botloader, having troubles getting him going.
How can I removed the database entries loaded? As I said I want him to only know what we teach him (going to use it as a FQ of sorts, specific to my site's audience)

It's installed and learning, but is NOT moving the posts from "Teach" to "Learned"

Question: is the post ID (the first in either thread) supposed to be the post NUMBER (ie; "1") in the thread or the actual post ID number?

I have to admit I got a little confused during installation with this part:
Quote:

on a sidenote if you changed the name of your bot and it's info in startup.xml you'll want
to change it here in learnwhat.xml as well you can do this by making a copy of startup to be the new learnwhat.xml
and changing the line
<learn>*</learn>
to:
<learn>learnwhat.xml<learn>
Someone care to make that a little more clear? I have learnwhat and startup in the same directory and they contain different info... I modified "learnwhat" only. Do I just copy the contents of learnwhat into startup, then put <learn>learnwhat.xml<learn> in it (into startup)?

eXtremeTim 01-22-2004 02:04 PM

Dont even read that part its not needed. Just start with bot learner and modify it to make your bot custom. To reset the bot you need to drop the tables that the sql file setup. I would list all the tables but i dont have the files handy.

Okiewan 01-22-2004 07:46 PM

Got it working, he does learn and the teach and Learned threads work.

When you ask him who someone is, he returns the right answer but always starts his reply with something like "I don't know the name". Ugg.

dano 01-22-2004 07:50 PM

Quote:

Originally Posted by BillaBongUSA
Dang it, I keep getting this message when I try to load the botlearner.php script:



I don't know what's wrong, I checked all the files and file locations and everything, but I keep getting that error.

I am having a simular issue. Mine is saying

XML error: junk after document element at line 2


I think it may be in my external.php as when I go to my AIML I get this error

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Okiewan 01-22-2004 08:30 PM

Okay, I give up. What table is the learned (via this mod) data stored in?

eXtremeTim 01-23-2004 01:27 AM

Quote:

Originally Posted by dano
I am having a simular issue. Mine is saying

XML error: junk after document element at line 2


I think it may be in my external.php as when I go to my AIML I get this error

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Yes thats from your external.php not being hacked correctly.

Okiewan drop these tables "bot,bots,conversationlog,dstore,gmcache,gossip,pa tterns,templates,thatindex,thatstack" then run the sql file included in my talkerbot hack then run botlearner.php to start teaching it stuff.

Geographic2 01-23-2004 02:30 AM

Quote:

Originally Posted by Okiewan
Okay, I give up. What table is the learned (via this mod) data stored in?


pattern and template.

Geographic2 01-23-2004 02:38 AM

Quote:

Originally Posted by eXtremeTim
Im tired of running botlearner and find out that there was an error so all the posts were moved but not added into the db.

What errors are you running into? DB errors or something? I don't have any traffic flowing through mine so it's hard to test for everything. What is happening?


All times are GMT. The time now is 04:49 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02797 seconds
  • Memory Usage 1,867KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (8)bbcode_code_printable
  • (2)bbcode_php_printable
  • (15)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete