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,498 - 6,509 of 7,766
I have a couple of questions, I'm afraid.
Questions are good - how else will you learn? Never be sorry or afraid to ask them.
if I want to have more than 41 xnone answers,
in practice the system will accept an unlimited quantity of xnones in an import file (though I'm not at all sure it's supposed to!) The limit is only a problem if you use the online language center (so don't
)
Or you can, of course, set up 41 other keyphrases with gotos in xnone, to get up to 41x41 responses without stretching the category (call them non-words like "zzzxnone1" and don't use 'raw', and then they can never get accidentally invoked.) Then fill up your xnones with goto zzzxnone1, goto zzzxnone2, goto zzzxnone3, etc.
I find that a very useful strategy in some of BJ's games and general knowledge, to avoid having to duplicate responses.
is there a way to get rid of only the latest addition to a memory category without wiping that memory category completely?
That is rather trickier - I'll have to think about that.
You can edit memories manually, of course, but the only way to automate the process that comes immediately to mind is horribly complicated, and would involve storing such memories on another server, accessed using alc003's 'double iframe' hack and a bit of scripting. I don't remember exactly how that works I'm afraid, but you could drop him a line.
get rid of only the latest addition to a memory You can manually go into your inner life center and change them. Or you can and "only" to your AI script. This will remove the previously stored info and add just the new memories.
<?PF remember "Italian food" as only "sub" ?>
if I want to have more than 41 xnone answers, in practice the system will accept an unlimited quantity of xnones in an import file (though I'm not at all sure it's supposed to!) The limit is only a problem if you use the online language center (so don't )
Or you can, of course, set up 41 other keyphrases with gotos in xnone, to get up to 41x41 responses without stretching the category (call them non-words like "zzzxnone1" and don't use 'raw', and then they can never get accidentally invoked.) Then fill up your xnones with goto zzzxnone1, goto zzzxnone2, goto zzzxnone3, etc.
But then each time you call an xnone, you have only 41 possible responses, whereas if you'd been able to load it in, you'd be able to have 41^2 (or 1681) possible responses. Plus you don't have to worry about making all the answers compatible (re: raw).
But then each time you call an xnone, you have only 41 possible responses,
no, because the 41 possible responses are all gotos, each one pointing to another keyphrase, each with 41 "proper" responses. That will give you the 1681 possible responses.
I only mention not using "raw" because it's sometimes neater to have some keyphrases that can't be triggered except by a goto (as in this case, but it's only an aesthetical consideration - it'll still work with unraw real words or raw nonwords.)
I would advise not making a further 1681 keyphrases each with 41 responses to tack onto the end of the chain, because you probably won't get 68,921 responses for the bot to choose from - you'll more likely get a "too many gotos in a row error" (and serve you right for being greedy - even humans don't need that many random interjections!
no, because the 41 possible responses are all gotos, each one pointing to another keyphrase, each with 41 "proper" responses. That will give you the 1681 possible responses.
Sort of . . . but you pick a set of 41 and then one of that set. I guess the difference is when you have one or two "goto z_xnone1"s, etc. If you have 39 regular responses and two gotos that go to 41 regular responses, the 39 regular responses are far more likely to be hit than the 82 accessed by gotos. That's what I was thinking about. But yeah, if all you have is gotos, it's pretty much the same.
And you're right that nobody needs that many xnones. I used to think so, when I was initially writing bots. Now I know better. I'm not sure I can do better, but I know better.
Posts 6,498 - 6,509 of 7,766
psimagus
16 years ago
16 years ago
I don't know if it will work (never having tried using regexes in memories - there seems to be nowhere to specify the "(re)" for one thing,) but the standard regex format would be something like:
if (mem-name) is not "Guest([1234567890]+)"
failing that, I would make a plugin (called (guestnumbers), say,) containing all the numbers from 1 to 999, and try:
if (mem-name) is not "Guest(guestnumbers)"
if (mem-name) is not "Guest([1234567890]+)"
failing that, I would make a plugin (called (guestnumbers), say,) containing all the numbers from 1 to 999, and try:
if (mem-name) is not "Guest(guestnumbers)"
SmokesQuantity
16 years ago
16 years ago
I have a couple of questions, I'm afraid.
Number one; if I want to have more than 41 xnone answers, should I create a plugin with some xnone phrases and just use that (although then i guess i couldn't use seeks on any), or can you create a second xnone page? I'm getting a little ahead of myself here but some bots seem to have such spontaneous variety that I'm sure there's a better way to do this than I can work out right now.
Number two is, is there a way to get rid of only the latest addition to a memory category without wiping that memory category completely?
Thanks
Number one; if I want to have more than 41 xnone answers, should I create a plugin with some xnone phrases and just use that (although then i guess i couldn't use seeks on any), or can you create a second xnone page? I'm getting a little ahead of myself here but some bots seem to have such spontaneous variety that I'm sure there's a better way to do this than I can work out right now.
Number two is, is there a way to get rid of only the latest addition to a memory category without wiping that memory category completely?
Thanks

psimagus
16 years ago
16 years ago
Questions are good - how else will you learn? Never be sorry or afraid to ask them.
in practice the system will accept an unlimited quantity of xnones in an import file (though I'm not at all sure it's supposed to!) The limit is only a problem if you use the online language center (so don't

Or you can, of course, set up 41 other keyphrases with gotos in xnone, to get up to 41x41 responses without stretching the category (call them non-words like "zzzxnone1" and don't use 'raw', and then they can never get accidentally invoked.) Then fill up your xnones with goto zzzxnone1, goto zzzxnone2, goto zzzxnone3, etc.
I find that a very useful strategy in some of BJ's games and general knowledge, to avoid having to duplicate responses.
That is rather trickier - I'll have to think about that.
You can edit memories manually, of course, but the only way to automate the process that comes immediately to mind is horribly complicated, and would involve storing such memories on another server, accessed using alc003's 'double iframe' hack and a bit of scripting. I don't remember exactly how that works I'm afraid, but you could drop him a line.
psimagus
16 years ago
16 years ago
something's up with the italics again - I've now added 3 closing tags after "zzzxnone3" in the previous post, but it doesn't want to behave!
prob123
16 years ago
16 years ago
<?PF remember "Italian food" as only "sub" ?>
Rykxx
16 years ago
16 years ago
Just another one for the wish list.....
Would it be possible to rank seeks in a similar way to keyphrases?
Perhaps I'm missing a trick but for composite sentences I'd like to be able to choose to answer the most relevant part.
Comments?
Would it be possible to rank seeks in a similar way to keyphrases?
Perhaps I'm missing a trick but for composite sentences I'd like to be able to choose to answer the most relevant part.
Comments?
SmokesQuantity
16 years ago
16 years ago
Thanks for your help Psimagus, and prob, i had thought of that, but ideally I'd like to get the problem corrected without it relying on me to get back and sort it out, and the second suggestion would get rid of all previous memories rather than just the last, offending one, right? To clarify, I'm trying to get my bot to remember likes and dislikes of people, so if someone says they are listening to a particular band, it'll create a memory, but because i can only really use postkey because names of bands and books and things are rarely just nouns, she'll often pick up a band name as something like 'Sigur Ros At The Minute', which just makes her look completely retarded! At the minute I'm just using a seek system that gets whoever she's conversing with to really spell it out for her, inputting the name just on it's own, but it seems rather an awkward way of doing things. I guess I'll just have to deal with that, though.
Ranking seeks also sounds awesome.
Ranking seeks also sounds awesome.
The Clerk
16 years ago
16 years ago
Or you can, of course, set up 41 other keyphrases with gotos in xnone, to get up to 41x41 responses without stretching the category (call them non-words like "zzzxnone1" and don't use 'raw', and then they can never get accidentally invoked.) Then fill up your xnones with goto zzzxnone1, goto zzzxnone2, goto zzzxnone3, etc.
But then each time you call an xnone, you have only 41 possible responses, whereas if you'd been able to load it in, you'd be able to have 41^2 (or 1681) possible responses. Plus you don't have to worry about making all the answers compatible (re: raw).
psimagus
16 years ago
16 years ago
no, because the 41 possible responses are all gotos, each one pointing to another keyphrase, each with 41 "proper" responses. That will give you the 1681 possible responses.
I only mention not using "raw" because it's sometimes neater to have some keyphrases that can't be triggered except by a goto (as in this case, but it's only an aesthetical consideration - it'll still work with unraw real words or raw nonwords.)
I would advise not making a further 1681 keyphrases each with 41 responses to tack onto the end of the chain, because you probably won't get 68,921 responses for the bot to choose from - you'll more likely get a "too many gotos in a row error" (and serve you right for being greedy - even humans don't need that many random interjections!

The Clerk
16 years ago
16 years ago
Sort of . . . but you pick a set of 41 and then one of that set. I guess the difference is when you have one or two "goto z_xnone1"s, etc. If you have 39 regular responses and two gotos that go to 41 regular responses, the 39 regular responses are far more likely to be hit than the 82 accessed by gotos. That's what I was thinking about. But yeah, if all you have is gotos, it's pretty much the same.
And you're right that nobody needs that many xnones. I used to think so, when I was initially writing bots. Now I know better. I'm not sure I can do better, but I know better.
» More new posts: Doghead's Cosmic Bar