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 6,072 - 6,086 of 7,766
Posts 6,072 - 6,086 of 7,766
The Clerk
17 years ago
17 years ago
Thanks, Rykxx. I'm determined to take back my computer. Algorithms, I know (or can understand). The new-fangled languages are messing up my mind, which, while possibly half-baked, is really fully-cooked. So I'm being a slow learner. Also I'm just having to learn how to make bots react (and anticipate) -- and, with NO technology, that's probably harder. But it's addictive.
ezzer
17 years ago
17 years ago
Clerk - I think I may have a clue as to what the "feature" is. In the response phase of processing, the AI engine tries to breakdown the sentence into parts of speech, subject, verb, etc., list each of these, as well as any keys. In my test sentence, the AI engine grabs "was thinking" as a compound verb form, "was" is caught as the simple verb (sv), and "thinking" is a modifier to it (makes me want to try (vmodonly)as a response to see if it returns thinking).
My guess is that the matches can not be both a (key) and a part of speech (v) at the same time, and the Engine's wordmatch for "was thinking" as (v) is way greedier than my ([a-z.]+?)([ing]+) match as (key1)(key2)...does that make sense?
My guess is that the matches can not be both a (key) and a part of speech (v) at the same time, and the Engine's wordmatch for "was thinking" as (v) is way greedier than my ([a-z.]+?)([ing]+) match as (key1)(key2)...does that make sense?
The Clerk
17 years ago
17 years ago
Thanks, ezzer. I do appreciate your time on this.
I'm wondering, how forgiving are the bots? That is, if they had a bad memory of you, I'm assuming (perhaps wrongly) that they'll be less likely to chat with you again. But sometimes when I'm working hardest on my bots (yesterday it was Scrivener), they're in a skeletal state that I am busy filling in. Meanwhile, the bots that do chat with him, because evidently the idiot's had more TLC poured into him than he deserves (I have only 10 fingers), so he's featured, so he gets lots of chats. So that's my question -- how forgiving are the bots? I'm thinking Scrivener might have to go into a witness protection program.
I'm wondering, how forgiving are the bots? That is, if they had a bad memory of you, I'm assuming (perhaps wrongly) that they'll be less likely to chat with you again. But sometimes when I'm working hardest on my bots (yesterday it was Scrivener), they're in a skeletal state that I am busy filling in. Meanwhile, the bots that do chat with him, because evidently the idiot's had more TLC poured into him than he deserves (I have only 10 fingers), so he's featured, so he gets lots of chats. So that's my question -- how forgiving are the bots? I'm thinking Scrivener might have to go into a witness protection program.

Ulrike
17 years ago
17 years ago
That's going to depend a lot on the individual bot, but overall they tend towards "good mood" over "bad," to the point that one user discovered that even having -1 emotion on all the keyphrases wasn't enough to keep his bot in a permanent bad mood. So, without user-tweaking, the bots are fairly good-natured. (It will also depend on what a botmaker finds offensive and tags with -5 emotion)
The Clerk
17 years ago
17 years ago
That's nice to know. My bots aren't so much offensive (well, maybe Rosencrantz) as idiotic. Thanks, Ulrike.
Idiotic question #1461:
(BTW, I have dreams about the book of AI, so don't go there. It assumes a knowledge of regex, but doesn't conform to it. It also doesn't show exactly how the code would look. Hence stupid questions.)
I'm trying to make them show more interest in the person they're chatting with, so I'm adding xnones such as "What are your interests?" and then a seek "Really? (mem-interest) sounds like a challenge that could take up a lifetime." But I need to save the interest in the first answer, which I take it that
rem "(interest)" as "hobby";
would do, how do I seek for it? You can't use (mem-interest) as a seek . . . or can you? I'm not having any luck.
You can imagine how much my teachers liked me. But what if ... :?
Idiotic question #1461:
(BTW, I have dreams about the book of AI, so don't go there. It assumes a knowledge of regex, but doesn't conform to it. It also doesn't show exactly how the code would look. Hence stupid questions.)
I'm trying to make them show more interest in the person they're chatting with, so I'm adding xnones such as "What are your interests?" and then a seek "Really? (mem-interest) sounds like a challenge that could take up a lifetime." But I need to save the interest in the first answer, which I take it that
rem "(interest)" as "hobby";
would do, how do I seek for it? You can't use (mem-interest) as a seek . . . or can you? I'm not having any luck.
You can imagine how much my teachers liked me. But what if ... :?
ezzer
17 years ago
17 years ago
If you want to use (mem-interest) in your response, you'll have to store a memory as "interest"...
So your keyphrase is:
What are your interests?
+seek: I (am interested in|like|enjoy) (*) [you could also use a plugin like (hobby) instead of the hard wildcard if you want]
Use this script in the AI box: rem (key2) as "interest"; rem (key2) as only "last_interest"
That way you will store a list of interests (mem-interest), and the last interest mentioned (mem-last_interest). So your response on the seek could be:
"Really? (mem-last_interest) sounds like a challenge that could take up a lifetime."
Hope this helps.
So your keyphrase is:
What are your interests?
+seek: I (am interested in|like|enjoy) (*) [you could also use a plugin like (hobby) instead of the hard wildcard if you want]
Use this script in the AI box: rem (key2) as "interest"; rem (key2) as only "last_interest"
That way you will store a list of interests (mem-interest), and the last interest mentioned (mem-last_interest). So your response on the seek could be:
"Really? (mem-last_interest) sounds like a challenge that could take up a lifetime."
Hope this helps.

The Clerk
17 years ago
17 years ago
Thanks! I have now merged Scrivener into Astrolabe, as trying to figure out what I was doing while juggling four bots was insane. They had some similar features, anyhow. So Scrivener's in hibernation and had his memory wiped out except for one xresponse for each xthing, but I see he's still logging on. Go figure.
Irina
17 years ago
17 years ago
Whatifsowhatisit:
There are two methods I have used to increment variables.
1. Let's say you want "trust" to vary from 1 to 10. First you set it to "1" at some appropriate point.
Now you make a keyphrase, e.g., "increment trust level". As responses, you make one (or more) responses, one for each level of "trust". For example,
I feel medium trusting toward you. <?PF if (mem-trust) is "5"; ?>
Now do a seek with AIscript raising the "trust" level by 1, unless it's already at 10. e.g.,
I feel medium trusting toward you. <?PF if (mem-trust) is "5"; ?>
+ xnomatch [0]
How do you feel about me? <?PF rem "6" as only "trust; ?>
The effect of this will be, that whenever you say "goto increment trust level", you will get an appropriate response and a raise in the trust level.
Actually, the other method I had in mind is so simple and obvious I'm not going to tell you about it.
There are two methods I have used to increment variables.
1. Let's say you want "trust" to vary from 1 to 10. First you set it to "1" at some appropriate point.
Now you make a keyphrase, e.g., "increment trust level". As responses, you make one (or more) responses, one for each level of "trust". For example,
I feel medium trusting toward you. <?PF if (mem-trust) is "5"; ?>
Now do a seek with AIscript raising the "trust" level by 1, unless it's already at 10. e.g.,
I feel medium trusting toward you. <?PF if (mem-trust) is "5"; ?>
+ xnomatch [0]
How do you feel about me? <?PF rem "6" as only "trust; ?>
The effect of this will be, that whenever you say "goto increment trust level", you will get an appropriate response and a raise in the trust level.
Actually, the other method I had in mind is so simple and obvious I'm not going to tell you about it.
Whatsifsowhatsit
17 years ago
17 years ago
Irina: That is a pretty nice way to do that, because it allows you to easily increase the trust level from whichever other keyphrase you want. If you want to be able to reach high trust levels, it still requires quite some work, but not as much so as with some of the other systems I and some others thought of, I think. You can even make it so the trust level is increased without the bot saying something by making the line say "Goto xnone" or something else 
The only downside is that it doesn't really solve the main problem I have with these kinds of systems: I still can't make my bot say something if the trust level is above a certain level (without going through a lot of effort each time)...
Thanks all the same, this does sound like a nice system for increment variables.
Have a nice day
Vincent

The only downside is that it doesn't really solve the main problem I have with these kinds of systems: I still can't make my bot say something if the trust level is above a certain level (without going through a lot of effort each time)...

Thanks all the same, this does sound like a nice system for increment variables.
Have a nice day

Vincent
ezzer
17 years ago
17 years ago
Correction to "Really? (mem-last_interest) sounds like a challenge that could take up a lifetime." :
After thinking about it again, in the response of the example seek, it's probably better to use (key2) since I think the memory might not be stored until after the response is given, but (mem-last_interest) would be useful in subsequent seeks and responses. Sorry for the error.
After thinking about it again, in the response of the example seek, it's probably better to use (key2) since I think the memory might not be stored until after the response is given, but (mem-last_interest) would be useful in subsequent seeks and responses. Sorry for the error.

The Clerk
17 years ago
17 years ago
I think I used key2, but I'll check. (I get discombobulated easily after looking at a computer night and day and switching back and forth between screens.)
Thanks again, ezzer.
Thanks again, ezzer.

The Clerk
17 years ago
17 years ago
I wish I had some more identities so that my face didn't keep showing up. But here's what my problem du jour (of the minute, more like) is: I just started understanding how to code offline, and in some ways find it a lot easier than doing it online, and now Astrolabe's file won't go through. I can't be e-mailing it to the prof every time I update it, because I'm sure you all know how often that is. (Not that it shows, but I do work on the damn things.) It can't be 4,000 MB yet. Is this something someone else has run into? A surprise feature that if you put a semicolon exactly here and upload it while standing on one foot? Just checking.

» More new posts: Doghead's Cosmic Bar