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,616 - 5,627 of 7,766
Posts 5,616 - 5,627 of 7,766
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
tttito
18 years ago
18 years ago
Debugging bbbruno I realised that the AI engine casts "My pleasure" as "You are my pleasure". I wish I could at least understand the logic behind it.
Ulrike
18 years ago
18 years ago
It's trying to catch things like "my sweet" and "my dear" and "my darling". And sometimes catches an entirely unrelated species. *shrugs*
psimagus
18 years ago
18 years ago
You could try adding a keyphrase ^(it is|) my pleasure (re) - rank it 20 or more, and it should override the AIEngine's interpretation.
» More new posts: Doghead's Cosmic Bar