Steve Worswick - Jan 12, 2016:
Amanda June Hagarty - Jan 12, 2016:
Steve, I think that perhaps some people don’t stick with AIML long enough or really explore it’s full potential to see the complexity it is capable of creating.
This is exactly the issue. People play with it for a while and then give up. Even Andres says he ONCE tried it. If I were to try playing piano and made a noise on my first attempt, this is normal. I certainly wouldn’t start claiming what it can or cannot do.
Andres - If your bot had 2,000 categories and was as bad as you say, you need to look at what you were doing than writing the whole language off. I have around 300,000 categories and my bot usually replies in less than a second.
Hi Steve, you have all my full respect, and may be a hell of a AIML programmers, or whatever. But let me introduce some concepts here which might be misunderstood by many readers/writers here, no regrets.
As I can barely understand AIML, a category is just a path in the graphmaster, which connects among situations, or partial matches which gets simplified over and over until a full “parsing” in terms of the graphmaster is achieved.
But a category set cannot be compared by far to a single true-parser, even the tiniest chunker, whichever kind it is. Almost all Natural Languages have non-regular grammars, so they must be handled by a mixup of statistics and deterministics, like a pull-down automata, governed by relations, as well as a disambiguator, pos tagger and all the crap you surely know, or can find out in wikipedia as well. I don’t want to go too technical, but not a LL nor any LR parser won’t work fine on human grammar, even GLR parser which complexity if more than O^3 can’t cope fully with irregular human grammar. (I tried it also) only some dependency grammar and chunking works fine with unstructured dialog-like conversations.
for example a AIML section-pattern like
[subject] [direct object] [predicate] is barely impossible, and in a parser (or my DDL language) you can do this in a breeze, on single line!
As showed above, any single section grammar oriented parser can be equivalent to a unlimited number of categories, and the power of a graphmaster-like path below this is almost unlimited. As you add categories to a AIML engine, the more patterns you have at one single point, and worse if they are nested; the slower render the engine, because the system can go into a huge testing loop. Many engines fought this, adding catching (I must confess, on certain loops I also do this) but it is not enough to assure a decent speed. (respond under a few milliseconds, on a server).
Also the complexity to handle all this categories who embed the responses is too big, and exceeds normal flow of response of an agent.
You cannot set up a selector to the next response, in any insulated section of the conversation, based on (let’s see.. a 300 documents text-file set), and drag the conversation on the subject of any of them using a statistically learned classifier like a SVM-based on semantic-vector-space similarity, which has a better than 95% quality (F-score ~ precision and recall) and based upon the success of the conversation you can make this section to learn better any new pattern it might catch!
Also all the AIML responses are somehow “canned” or built out of relations found on the path to the patterns, but you can hardly do something like “read 100k documents, and decide you have been talking with a user about “similar stuff” to the content of a tiny sub-group of them, and find out what section of which document you were talking about, without writing tons of AIML. And then do the “magic” like answering some user’s questions, deducted by a true reasoning engine, which is embedded in the specific sub-issue/problem you were talking about. To build a AIML that can respond questions about a continuously changing (even learning) database is (at least for me) impossible, unless you re-load continuously automatically generated AIML from the data, which is unpractical.
I bet you to solve a simple exercise, ¿can any write a AIML section that understands full math?, lets see all the 4 operations (+ - * / ) of any order and length, even with parenthesis and nesting, regarding the priority of the operations? - As I can see it this may be too complex (I tried unsuccessfully, it and saw/thought this might be impossible by the model itself)
And provided you do it, ¿how many times I need to copy this sections to use it over and over, in different sections? like a subroutine.
¿Can a AIML system with 300k categories, talk simultaneously to 1000 users without collapsing?
As I see each ‘user-talk’ needs to be “booted” (load the categories) filling the server memory up. Am I right or wrong?
Despite of that, the kind of things you can accomplish with AIML is astonishing, but as well as you scale in complexity the number of AIML lines you need to create does not scale linearly with the problem, it scales potentially (dont know the index) but it’s not 1.
I also apologize to you all, about my English writing, which might not be as expressive and rich as a native English speaker, but I try as much as I can. I learned English at age 6, got my other 2 mother languages from the crane, and my last 3 languages at age 21.
I am not a detractor, but the single approach of parsing as well as responding, and decision making of AIML makes it, as I can see, a hobby language, nothing more, nothing less.