Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.0 > vBulletin 3.0 Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
TalkerBot Add-on - Learning System Details »»
TalkerBot Add-on - Learning System
Version: 1.00, by Geographic2 Geographic2 is offline
Developer Last Online: Apr 2007 Show Printable Version Email this Page

Version: 3.0.0 Rating:
Released: 01-18-2004 Last Update: Never Installs: 38
 
No support by the author.

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..

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #92  
Old 05-14-2005, 07:10 PM
jilly jilly is offline
 
Join Date: Jul 2002
Location: central maryland
Posts: 461
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I have this add on installed, and I post questions and answers on the learning thread, I run botlearner.php, and it runs and inserts the data in, but when I go back and ask the bot, it did not learn what it was supposed to. I tried using the snausages example verbatim, and it didnt work, and I tried a few other made up words that wouldnt already be in the database, and those didnt go in either.

Any ideas?
Reply With Quote
  #93  
Old 05-19-2005, 07:13 PM
jilly jilly is offline
 
Join Date: Jul 2002
Location: central maryland
Posts: 461
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm thinking my problem may be that I havent put the two code segments in the correct place in the 'if/else chain' - could you please re-do the instructions, and pick a specific place to put the code, this will be easier for those of us who aren't exactly sure where to put it.,.(i.e. us non-programmers)
Reply With Quote
  #94  
Old 06-06-2005, 02:47 AM
kylek kylek is offline
 
Join Date: Oct 2003
Location: British Columbia, Canada
Posts: 798
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kylek
Loading learnwhat.xml
Loading data aiml file: http://www.xxxxxxxxxxxxxxxxxx/forum/....php?type=AIML
XML error: mismatched tag at line 2

When I run botlearner I now get this, what do I need to look for?
Still getting this same error, reinstalled 2 times, and error pops up when I run botlearner.

Loading learnwhat.xml
Loading data aiml file: http://xxxxxx.xxx/forum/external.php?type=AIML
XML error: mismatched tag at line 2
Reply With Quote
  #95  
Old 06-08-2005, 11:32 PM
Ambie Ambie is offline
 
Join Date: Apr 2005
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The information is going in to the database, but nothing is moving to the learned thread. Nor is he learning any of it. :disappointed: Does anyone know what could be wrong?
Reply With Quote
  #96  
Old 10-28-2005, 05:58 AM
unixdotcom unixdotcom is offline
 
Join Date: Nov 2001
Posts: 23
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This was an easy hack to install, I got it to work, but there are potential problems:
  • The external.php URL in the botlearner.php routine has the potential to wipe out existing AIML files - a lobotomy!
  • The AIML transformation is too simple.... too basic.

Nice shell, but needs a lot of work. We can't use it in "production" at UNIX.COM..... YET!

Great idea..... needs work! Thanks so much!

Neo
Reply With Quote
  #97  
Old 10-28-2005, 06:32 AM
GuaRRand GuaRRand is offline
 
Join Date: Oct 2005
Posts: 337
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is there anything like this for 3.5 ?
Reply With Quote
  #98  
Old 09-18-2006, 03:26 PM
bigtime bigtime is offline
 
Join Date: Jun 2002
Location: Houston, Texas
Posts: 171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is this going to be available for 3.6.1?
Reply With Quote
  #99  
Old 09-21-2006, 10:11 AM
eXtremeTim eXtremeTim is offline
 
Join Date: Jun 2002
Location: eXtremewebtech.com
Posts: 1,201
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Creating a more advanced shared learning database for the current 2.2.2 version of talkerbot. I decided having a non centralized version was really limiting the power of teaching the bot things when I can create a system on my site for users to contribute data for the bot to learn in different categories.
Reply With Quote
  #100  
Old 09-02-2008, 02:23 PM
RvG2 RvG2 is offline
 
Join Date: Jan 2007
Posts: 457
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Tim... i hope you can update this to 3.7

my bot is so useful in my forum... i need to make the bot learner to work.
Reply With Quote
  #101  
Old 09-13-2008, 05:43 PM
gpc10347 gpc10347 is offline
 
Join Date: May 2008
Posts: 180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

For those about to rock, this can be made to work in 3.7.3.whatever I have!

I tried and tried to make the modifications as shown for external.php work out and finally drank myself to sleep. This morning, I discovered it working and here's what I had done.

Rather than create the two cases mentioned, I created a single case and nested it as you see below (between a case xml and a case rss) - I didn't use the SHARE option as it doesn't appear any of the sites are still doing that.

Working well for me though.. it's learning what the other aiml files didn't already answer and it's awesome.

PHP Code:
case 'XML':
        if (!$vbulletin->options['externalxml'])
        {
            exit;
        }
        break;
// HERE'S THE BEGININNG MY MODIFICATION
    case 'AIML':
{ // XML/AIML output

    $posts = $db->query_read("
    SELECT post.title, post.pagetext, post.postid 
    FROM post
    WHERE post.threadid=**TEACH THREAD** AND post.postid!=**FIRST POST ID**");

    $postcache = array();
    while ($post = $db->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->query_write("UPDATE post SET threadid=**LEARNED THREAD** WHERE postid=".$post[postid]);
    }
    echo "\r\n</aiml>";
}
// HERE'S THE END OF MY MODIFICATION
    case 'RSS':
        $vbulletin->GPC['nohtml'] = 0;
    case 'RSS1':
    case 'RSS2':
Hope this helps someone else out!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 06:12 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04826 seconds
  • Memory Usage 2,332KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (6)bbcode_code
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete