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,934 - 6,945 of 7,766
Posts 6,934 - 6,945 of 7,766
Saerain
13 years ago
13 years ago
I don't know how well The Professor takes to suggestions, but my #1 would be for negative seeks. That is, some way to say 'if the user's response does not contain this, move on to this'.
Very often, I find myself trying to squeeze in more characters than are allowed in a seek because I'm trying to cover the most probable responses that aren't something I'd want to break out of a seek chain, when it would be much quicker to specify what those exceptions should be.
EDIT: Although, explaining this has made me think that I could use a soft wildcard seek and then <?PF if (key1) is not "exception1"; if (key1) is not "exception2"; ?> and so on. Silly me.
Very often, I find myself trying to squeeze in more characters than are allowed in a seek because I'm trying to cover the most probable responses that aren't something I'd want to break out of a seek chain, when it would be much quicker to specify what those exceptions should be.
EDIT: Although, explaining this has made me think that I could use a soft wildcard seek and then <?PF if (key1) is not "exception1"; if (key1) is not "exception2"; ?> and so on. Silly me.
CrimsonTheFox
13 years ago
13 years ago
Couldn't you use (*) as a seek to encompass everything you don't have a seek for? But you'd need a way to rank it under your other seeks.
I don't know if you can do that. I'm a newbie. :-)
I don't know if you can do that. I'm a newbie. :-)
Saerain
13 years ago
13 years ago
That's what I normally do, but unfortunately, that often seems to result in the bot going to that response no matter what the user's input is, whether it's specified in another seek or not.
Sometimes it works as you describe, but much of the time it goes to the wildcard regardless.
Before the relaunch of PF, it seemed like you could rank the wildcard seek below the other seeks by ensuring that it sat above them (as if seeks were read from the bottom, up), but that doesn't seem reliable anymore.
Also, I've now learned that my if (key1)<0> workaround isn't valid. Hmph. So I guess the suggestion stands.
Sometimes it works as you describe, but much of the time it goes to the wildcard regardless.
Before the relaunch of PF, it seemed like you could rank the wildcard seek below the other seeks by ensuring that it sat above them (as if seeks were read from the bottom, up), but that doesn't seem reliable anymore.
Also, I've now learned that my if (key1)<0> workaround isn't valid. Hmph. So I guess the suggestion stands.
prob123
13 years ago
13 years ago
Just use xnomatch for your seek. the wild card will not always work alone
ssomething like
knock,knock knock [75,0] <?PF remember "knock knock jokes" as only "sub" ?>
Who's there? <?PF express: asking; ?>
+ xnomatch [0]
(key1) who.?'
+ xnomatch [0]
Tee hee hee haw! <?PF express: happy; ?>
DON'T USE THE WILD CARD SEEK
ssomething like
knock,knock knock [75,0] <?PF remember "knock knock jokes" as only "sub" ?>
Who's there? <?PF express: asking; ?>
+ xnomatch [0]
(key1) who.?'
+ xnomatch [0]
Tee hee hee haw! <?PF express: happy; ?>
DON'T USE THE WILD CARD SEEK
Saerain
13 years ago
13 years ago
How have I gone over the Book of AI so many times and never read the xnomatch bit? You're a life saver.
Mome Rath
13 years ago
13 years ago
For those that might be interested in this: Here the keyphrase that catches inputs with at least 4 capital letters and no lowercase letters:
^(?-i)[^a-z]*([A-Z][^a-zA-Z]*){4,}[^a-z]*$(re)
resp.
^(?-i)[^a-z]*([A-Z][^a-zA-Z]*){4,}[^a-z]*$(re) [0,0] <?PF raw; ?>
(for another minimum number of capital letters change the 4 in {4,}.)
For those that know what it means: the matches to the numbered RegEx groups 1 through 9 are filled into (key1) through (key9). (I tested it before the Great Crash.)
^(?-i)[^a-z]*([A-Z][^a-zA-Z]*){4,}[^a-z]*$(re)
resp.
^(?-i)[^a-z]*([A-Z][^a-zA-Z]*){4,}[^a-z]*$(re) [0,0] <?PF raw; ?>
(for another minimum number of capital letters change the 4 in {4,}.)
For those that know what it means: the matches to the numbered RegEx groups 1 through 9 are filled into (key1) through (key9). (I tested it before the Great Crash.)
prob123
13 years ago
13 years ago
(?-i)[A-Z]{4,} (re)
will work too. If you rank it low it won't interfere with keyphrases you all ready have, but will work as an xnone for shouting..
Like
Is your cap lock stuck?
will work too. If you rank it low it won't interfere with keyphrases you all ready have, but will work as an xnone for shouting..
Like
Is your cap lock stuck?
Mome Rath
13 years ago
13 years ago
Did you test that against these:
NASA should send a manned mission to Mars
YOU ARE BAD
NASA should send a manned mission to Mars
YOU ARE BAD
prob123
13 years ago
13 years ago
I have keyphrases for those I don't want over ridden
NASA
Bot: The National Aeronautics and Space Administration
You: YOU ARE BAD
Bot: So, I guess this means I won't be on 'your friends list' soon?
NASA
Bot: The National Aeronautics and Space Administration
You: YOU ARE BAD
Bot: So, I guess this means I won't be on 'your friends list' soon?
Mome Rath
13 years ago
13 years ago
You're probably right, for most cases your short expression will do for an entertainment bot. It is just that as a programmer I'm used to cover as many cases as possible and to be aware of possible maloperation and intentional hacking.
Btw, it seems we have to leave out the blank before the "(re)" because otherwise it is regarded as part of the regular expression.
Btw, it seems we have to leave out the blank before the "(re)" because otherwise it is regarded as part of the regular expression.
prob123
13 years ago
13 years ago
I always have the space. It works for me.
The book of AI, shows the space
Regular Expression Keyphrase: "i will have ([1234567890,.]+) (re)"
Explanation: Matches "i will have " followed by any possible number, which is assigned to (key1)
Regular Expression Keyphrase: "^is there (re)"
Explanation: Matches sentences that BEGIN WITH "is there"
Regular Expression Keyphrase: "^what$ (re)"
Explanation: Matches a sentence that is "what" and nothing else (not considering punctuation)
Brother Jeromes Keynome also uses the space, I think it's a Forge thing
([ . .])([ .]+)$ (re)
([?]+)$ (re)
([1234567890,.]+) choose ([1234567890,.]+) (re)
([1234567890.,]+) (times|multiplied by) ([1234567890.,]+) (re)
The book of AI, shows the space
Regular Expression Keyphrase: "i will have ([1234567890,.]+) (re)"
Explanation: Matches "i will have " followed by any possible number, which is assigned to (key1)
Regular Expression Keyphrase: "^is there (re)"
Explanation: Matches sentences that BEGIN WITH "is there"
Regular Expression Keyphrase: "^what$ (re)"
Explanation: Matches a sentence that is "what" and nothing else (not considering punctuation)
Brother Jeromes Keynome also uses the space, I think it's a Forge thing
([ . .])([ .]+)$ (re)
([?]+)$ (re)
([1234567890,.]+) choose ([1234567890,.]+) (re)
([1234567890.,]+) (times|multiplied by) ([1234567890.,]+) (re)
prob123
13 years ago
13 years ago
I just noticed that the Forge is mangling the name Peter to pervert, not nice. You might want to make a key-phrase for the name Peter in raw.
» More new posts: Doghead's Cosmic Bar