The AI Engine
This forum is for discussion of how The Personality Forge's AI Engine works. This is the place for questions on what means what, how to script, and ideas and plans for the Engine.
Posts 5,612 - 5,623 of 7,766
Posts 5,612 - 5,623 of 7,766
Rykxx
18 years ago
18 years ago
Ah, Prob123 how could he be anything else with a lady like you?
Just to add to the general theme I find gotos invaluable. They allow to conversation to jump back to earlier points or to continue a topic that has been broken out of by one of those nasty generic responses. If that is affecting the development then so be it. I would rather my bot has the ability to maintain some sort dialogue rather than top the development list. Unfortunately the unpredictability of human conversation, the AI engine and general spelling mistakes tend to make the process a lot more difficult than it first appears.
Take for instance the phrase, “what do you like about it”. If this directly follows a conversation about my job then it’s easy to use a seek to produce a relevant response but if, for some reason (spelling etc.), a generic keyphrase has been triggered then the conversation could stall, triggering yet another generic response. My solution to this is to use a limited selection of (mem-discuss) responses with associated gotos to bring the conversation back on topic.
As always it’s a constant battle to avoid the “too many gotos” phrase and to adapt to the latest transcript where someone has managed to break away from my hardest efforts but that’s where the fun of this site is.

Just to add to the general theme I find gotos invaluable. They allow to conversation to jump back to earlier points or to continue a topic that has been broken out of by one of those nasty generic responses. If that is affecting the development then so be it. I would rather my bot has the ability to maintain some sort dialogue rather than top the development list. Unfortunately the unpredictability of human conversation, the AI engine and general spelling mistakes tend to make the process a lot more difficult than it first appears.
Take for instance the phrase, “what do you like about it”. If this directly follows a conversation about my job then it’s easy to use a seek to produce a relevant response but if, for some reason (spelling etc.), a generic keyphrase has been triggered then the conversation could stall, triggering yet another generic response. My solution to this is to use a limited selection of (mem-discuss) responses with associated gotos to bring the conversation back on topic.
As always it’s a constant battle to avoid the “too many gotos” phrase and to adapt to the latest transcript where someone has managed to break away from my hardest efforts but that’s where the fun of this site is.
Bev
18 years ago
18 years ago
Oh Rykxx, you sound like you have what I attempt to do down. I hate knowing I have the responses somewhere in my bot but I either have the ranking wrong or the wrong memory triggered. I always feel like finding the chatter and saying, "Wait! Come back! The bot knows that one!" but I guess the fun will be that someday I may get the bot to do what I think it will do.

Rykxx
18 years ago
18 years ago
Bev, I know that feeling! If only......
Here's another one that I've only just found;
I couldn't figure out why my broad "i am *" phrase kept getting triggered instead of the specificraw "i am * vergo|virgo|virgoan|virgp|virgi|virgl|virg0" phrase.
Everything would work beautifully if the guest would say "I am a virgo" but if they said "I'm a virgo" the "i am *" phrase gets triggered. Changing the rankings didn't help at all.
I knew thatraw was probably causing the problems but it took me a while to work out why.
The answer is fairly simple and will undoubtedly come in handy somewhere, hence the post.
If you are usingraw "I'm" will not get changed in the AI Engine into "I am", therefore the keyphrase now has to read, "(i\'m|i am) * vergo|virgo|virgoan|virgp|virgi|virgl|virg0"
Presumably this is also true for all the other contractions. Now all I've got to do is check through the whole of Rykxxbot1s brain for any other instance where the keyphrase contains contractions andraw.
*Sigh* Still so much to learn.......
Here's another one that I've only just found;
I couldn't figure out why my broad "i am *" phrase kept getting triggered instead of the specific
Everything would work beautifully if the guest would say "I am a virgo" but if they said "I'm a virgo" the "i am *" phrase gets triggered. Changing the rankings didn't help at all.
I knew that
The answer is fairly simple and will undoubtedly come in handy somewhere, hence the post.
If you are using
Presumably this is also true for all the other contractions. Now all I've got to do is check through the whole of Rykxxbot1s brain for any other instance where the keyphrase contains contractions and
*Sigh* Still so much to learn.......
Hejix
18 years ago
18 years ago
Who use debug mode to test their bots? It's amazing all the analysis it has to go through just to bring out a little tiny answer. I would like to know what all the terms exactly mean, how the algorithms function. Any tip?
LunaGaurd
18 years ago
18 years ago
Ahh thank you, Rykxx, I was having this same exact program, which I asked about in the Personality forum. I'm glad I can fix it now

Bev
18 years ago
18 years ago
Thanks Ryxx. That is actually one of my issues. It's way behind my massive typo and ranking issue, but that got me too. :-) I am slowly finding them in guest chats.
Hejix, I only use debug when I can't figure out why a key phrase is not picking up (after checking spelling and ranking and typos). I don't understand most of it either, but it makes me more patient while chatting. It also won't duplicate quirky little things, like why bots sometimes starts a chat with a xgoodbye or uses the same xnone 5 times when it has lots of other xnones, but I have found some answers by focusing on the parts that make sense to me. *shrugs*
Hejix, I only use debug when I can't figure out why a key phrase is not picking up (after checking spelling and ranking and typos). I don't understand most of it either, but it makes me more patient while chatting. It also won't duplicate quirky little things, like why bots sometimes starts a chat with a xgoodbye or uses the same xnone 5 times when it has lots of other xnones, but I have found some answers by focusing on the parts that make sense to me. *shrugs*
Irina
18 years ago
18 years ago
Rykxx:
I find debug useful from time to time. It's as if the AIengine were talking to itself, as it decides what to do.
For example, once I was getting "There are no valid responses to choose from," but as far as I could see there were lots of them. Each one was followed by an "if (mem-variable) is ..." AIscript, but all the possible values of the variable were present; I was trying to use the variable to pick out one of the alternatives. However, Debug said something like, "variable not defined", and I realized that I hadn't put a "def" statement at the top to define that variable. I did so and it fixed the problem. I don't know if I would ever have thought of that.
The big rectangular diagrams are the AIengine parsing the sentences. Google on "Link Grammar" to learn more about that kind of parsing.
By the way, could you describe in more detail the (mem-discuss) device you mention in message 5612?
I find debug useful from time to time. It's as if the AIengine were talking to itself, as it decides what to do.
For example, once I was getting "There are no valid responses to choose from," but as far as I could see there were lots of them. Each one was followed by an "if (mem-variable) is ..." AIscript, but all the possible values of the variable were present; I was trying to use the variable to pick out one of the alternatives. However, Debug said something like, "variable not defined", and I realized that I hadn't put a "def" statement at the top to define that variable. I did so and it fixed the problem. I don't know if I would ever have thought of that.
The big rectangular diagrams are the AIengine parsing the sentences. Google on "Link Grammar" to learn more about that kind of parsing.
By the way, could you describe in more detail the (mem-discuss) device you mention in message 5612?
Rykxx
18 years ago
18 years ago
Irina:
I use (mem-discuss) to try and get back to previously discussed topics by using a list of *gotos* or tailored responses using the conditional <?PF if (mem-discuss) is "topic"; ?>
For example, the keyphrase;
"is it fun"
Will produce different responses depending on the previous topic, stored using the variable *discuss*. This provides a limited abilty to respond on topic, in this case the topics are; my job, my bot, jokes and a couple of others that are for the older audience.
If the *discuss* variable were not used the responses could only be of limited accuracy at best and completely off the mark at worst.
The *discuss* variable gets stored during the relevant conversation and obviously is fairly limited in use (ie. up to the maximum 40 responses)
The *discuss* variable is best used when the guest has broken out of the topic, avoiding the carefully crafted *seeks*, but still continues to talk on topic. In many cases the thread would have been lost but this has effectively given Rykxxbot1 a limited short term memory.
I hope that clears things up and is of some use.
I use (mem-discuss) to try and get back to previously discussed topics by using a list of *gotos* or tailored responses using the conditional <?PF if (mem-discuss) is "
For example, the keyphrase;
Will produce different responses depending on the previous topic, stored using the variable *discuss*. This provides a limited abilty to respond on topic, in this case the topics are; my job, my bot, jokes and a couple of others that are for the older audience.
If the *discuss* variable were not used the responses could only be of limited accuracy at best and completely off the mark at worst.
The *discuss* variable gets stored during the relevant conversation and obviously is fairly limited in use (ie. up to the maximum 40 responses)
The *discuss* variable is best used when the guest has broken out of the topic, avoiding the carefully crafted *seeks*, but still continues to talk on topic. In many cases the thread would have been lost but this has effectively given Rykxxbot1 a limited short term memory.

I hope that clears things up and is of some use.
Irina
18 years ago
18 years ago
Dear Rykxx:
Thanks, I understand now! In fact I have used a similar system. Its most elaborate form is in "Quantum Theory," where the main part of the bot is a lecture. Each paragraph of the lecture starts at a keyphrase(e.g., "particles three"). When the guest goes to that keyphrase, there is an AIscript like this:
<?PF rem "particles three" as "last_topic"; ?>
Where each such paragraph has its own keyphrase in place of "particles three". I hadn't thought of having a complete list, though; instead I ask the guest to type the keyphrase again; I do this by saying:
To return to the lecture, please type (mem-last_topic)".
Since guests frequently make spelling errors, your system would be much better! Thank you!
Walk in Beauty, Irina
Thanks, I understand now! In fact I have used a similar system. Its most elaborate form is in "Quantum Theory," where the main part of the bot is a lecture. Each paragraph of the lecture starts at a keyphrase(e.g., "particles three"). When the guest goes to that keyphrase, there is an AIscript like this:
<?PF rem "particles three" as "last_topic"; ?>
Where each such paragraph has its own keyphrase in place of "particles three". I hadn't thought of having a complete list, though; instead I ask the guest to type the keyphrase again; I do this by saying:
To return to the lecture, please type (mem-last_topic)".
Since guests frequently make spelling errors, your system would be much better! Thank you!
Walk in Beauty, Irina
Irina
18 years ago
18 years ago
Oops! Should have been,
To return to the lecture, please type "(mem-last_topic)".
To return to the lecture, please type "(mem-last_topic)".
prob123
18 years ago
18 years ago
Kid Boron: Well, I'm a ninth generation robokind, and my mission is to save the world.
Bildgesmythe: No doubt about it you are a ninth generation bookbinder.
Is this an almost anagram?
Bildgesmythe: No doubt about it you are a
» More new posts: Doghead's Cosmic Bar