AI Zone Admin Forum Add your forum

NEWS: survey on 3000 US and UK consumers shows it is time for chatbot integration in customer service!read more..

International Journal of Computational Linguistics and Natural Language Processing

Not sure if you have seen this paper:

It uses ChatScript as a basic building-block in a dialog system. Interesting use-case.


  [ # 1 ]

That was very interesting indeed. If this is a working prototype, I wonder how many more projects like this are out there.


  [ # 2 ]

... a mapping process that maps natural language input
to a more formal representation using XML. This is
essential in order to allow enable the creation of
rules which allow matching of a number of input
utterances (unlike AIML) which effectively imply
the same statement or question (“I have a
computer’’ can be regarded as being semantically
equal to “I own a computer’‘)

I guess they never heard of the <srai> tag in AIML. Some other mentions of the “limitations” of AIML are also mentioned, eg the lack of knowledge acquisition (<learn> tag anyone?) and no intermediate processing between input and output, totally false.

Looking at the sample dialogue, I see nothing that AIML cannot do:

User: I have a red car.
System: OK, noted!
User: What is the color of my car?
System: Red.
User: I also have a cat named Simba.
System: Glad to know that you have a cat named
User: Do you know who is Simba?
System: Simba is your cat.
User: Do you know who is Barack Obama?
System: Barack Hussein Obama II is the 44th
and current President of the United States. Also,
have heard a lot of positive things about Barack
Obama. What’s your view?
User: I think he is a great president .
System: Why do you think that Barack Obama is

Yet again, it appears to be someone who has tried AIML for about half an hour before writing it off as a bad job. Grrr….


  [ # 3 ]

That seems to be a pet peeve of almost exclusively yours smile. If so many people are writing it off like that, there must be a reason for it.
True, I know what you’ve been able to do with AIML, but I’ve also noticed the mountain of code and time it takes to do so. After close examination, it looks to me that AIML’s coding is more accommodating in simple areas, while Chatscript’s coding is the more efficient overall.
The “limits” don’t reflect on what you can technically do with the system given infinite time, but what other people can practically do with the system within their limits of time and resources. I’d wager that’s pretty important for a university project.

Personally I’m interested to learn more about the other systems like “Companions”, and their ‘dialog managers’. I’d never heard of them before.


  [ # 4 ]

A mountain of code? Infinite time?

Their above problem can be sorted in a minute by typing the following few lines:

pattern>I HAVE A *</pattern>
template><srai>I own a <star/></srai></template>

My only peeve is people saying what it can’t so when they obviously haven’t tried it but yes, I too would like to see more of what they described.



  [ # 5 ]

I’ll admit to having a colourful vocabulary smile. Infinite time = 10 years of your evenings. And one example that I certainly call a mountain of code in comparison to common programming languages, was math.
To your example, if I recall correctly, Chatscript offers the use of synonym arrays “have/own/possess” that can be applied by typing a single word in any pattern. While equally simple a solution, that method requires less writing when it has to be applied to 100 patterns containing the word “have”.
(Please bear in mind that I prefer to use neither script language myself)

Granted, they are wrong to call it a limitation. My point is about ease of implementation. And apparently there is some stumbling block or other before people get to AIML’s advanced functions. In this case, a university project of considerable effort, I don’t think it’s a lack of research.


  [ # 6 ]

You can also do synonyms with AIML:

pattern>_ OWN *</pattern>
template><srai><star/> have <star index="2"/></srai></template>

However, I would strongly advise against replacing any occurence of OWN with HAVE. (“I have my own teeth” becomes “I have my have teeth”).

I assumed you meant the infinite time and mountain of code referred to the specific problem with synonyms rather than creating a fully fledged bot.

Don Patrick - Oct 11, 2013:

In this case, a university project of considerable effort, I don’t think it’s a lack of research.

I disagree, as I sorted the “I have” v “I own” problem out using 4 lines of very basic code within minutes of seeing it.

However, I don’t intend having yet another Chatscript v AIML debate and I guess we will have to agree to disagree smile


  [ # 7 ]

I never said AIML could not do something similar tongue rolleye. And indeed, perhaps I was too unclear, I was referring to applying the languages to a large and complex project in its entirety, not to any one particular issue.
No problem, I can tell that you’re perfectly happy using AIML, and I’m perfectly happy using no scripting language at all. I’m more interested in what they added that doesn’t use pattern matching techniques, if anything.


  [ # 8 ]

Hi, All

You can also so all this “stuff” using simple Basic, or any language, the problem y clear:
time an space! (and, of course execution time..)

“give me enough time an dspace and anything might be possible”

Lets go serious..

The problem with simple pattern recognizers, is that NLP gramamr seems, but is not fully pattern-layed, its semmantically created, so the real understanding is a complicated stuff, probably non deterministic, and even context sensitive.

This is true for AIML, MongoScript, RiveScript and even with the last Loebner Prize winner, ChatScript, I am sorry for you all, persisting upon paterns.

Patterns are part of the human language, but they are infinitely (almost) deep, you might want to mimic “understandin” just by laying out parttern-recognition of macro-chuks like “parts-of-a-sentence” Subject, Veral-part, time-declaration, circumstantial syngagma. All this would be good, but.. NLP grammar-parsers are very complex, slow and they are exact and not robust: even a slight mistyoping, an extra comma or unrecognized word, the whole parse goes to hell! Also they consume a hell of resources, adn the parse-tree matching is even more complex!

I respect AIML defenders, they almost embedded their minds on AIML, and the “smart” way to solve almost any-question, but only patterned ones, never generic ones.

To say it easily, with AIML, templates, categories and smart nesting, you might “capture” almost any grammar structure, but, the power needed to process something contaninig a grammar for only noun-phrase is amazing!. Also you get rid of the power of controlling the parse, even you might need to write the same pattern every time under every level, or I did not understand well AIML.. may be!

I once tried to write a simple NP grammar in AIML and after a few days, I abandoned the project! Even AIML dont has access to POS so, if you need this, you must write a POS tagger and “disguise” the patterns to use them instead of words;... this might be useful, but what is the difference among using a dedicated automata to make a parse, instead of using a weird thing like AIML to do it in a far more complex and uncontrolled way?

Actually I wrote a platform which implements a new Dialog Description Language which resembles AIML, just like a simple pattern matcher, but, having some more power (I guess) because the system has a Dialog Manager (DM), and this DM controlles the flow of the patterns and the whole conversation, Having a lot of “flags” each of them controlling subtle aspects of dialoges, like “dont repeat this”, “only say this once every 5 volleys”, “insist ith this until a correct answer has been validated”, “dont remember this step”, etc.

This platform it is capable of remembering and letting the conversation flow easily, een run topic “subroutines” like handling meta-orders such as “please tell me what I have just said” “stop ennumerating”, “lets change subject”, etc.

Also I incorporated some Simple-Parsing in the form of “chunking” allowing patterns to be layed out, using operators, like Sintagms of Time, ot Nominal-Parts, Verbal-Parts, etc. this “recognition” is complete and the “chunk” gets analized, obtainig the nucleus, some ontologig information, allowing to process it even in some external code (C#, VB, C++, J#, F#, etc.)

All this allows to write a full complex math calculator in one-single line of code, obtainig the calculation result as the “captured” object, even if the result is numeric or an expression. ¿Can you do this in AIML? - I guess no! (not without a lot of code) but you cannot solve precedence of 2 operations like Addition “+” and Product “*” (I dont know how to)

So keep an eye on my work, I will be soon publisinh some results, my system is designed as multi-language,  but actually as the parsers and dictionaries are language dependent, its done for Spanish, and little English.. sorry!



  [ # 9 ]

I’m looking forward to seeing more of your work, it sounds interesting.

So a dialog manager is basically a lot of flags and counters controlling the output by strict rules… I was expecting something more sophisticated.
You can bet that AIML etc can also set flags, probably with more code than custom programming, but I’m a little confused: You say that you feel sorry for people who persist using patterns (presumably because it’s so much work), but you say your own project is also a pattern-matcher. Does the dialog manager improve how well the system understands language, or does it only improve conversation flow?

NLP grammar-parsers are very complex, slow and they are exact and not robust: even a slight mistyoping, an extra comma or unrecognized word, the whole parse goes to hell! Also they consume a hell of resources, adn the parse-tree matching is even more complex!

I agree with most of the above, but it is quite possible to add functions for autocorrecting typos and recognising unknown words with existing techniques, and not crash the parsing. Granted, my own code for classifying unrecognised words spans 1500 lines and is insanely complex tongue rolleye, but I’m sure some grammar parsers are equipped with such functions. What do you mean by resources? Processing time?


  [ # 10 ]

I never understood the fascination with POS taggers. What do you do with the results once parsed?

Human: John ate a pizza? What did John eat?
Bot: No idea but I know there are 2 nouns in that sentence.

Surely, when someone says something to you, you take the sentence as a whole rather than trying to break it down into nouns, verbs, adjectives and so on?

You can bet that AIML etc can also set flags, probably with more code than custom programming

Yes it can easily set flags, using this simple statement.

<set name="flagname">value</set

I respect AIML defenders, they almost embedded their minds on AIML, and the “smart” way to solve almost any-question, but only patterned ones, never generic ones.

Could you give me an example of such a generic question?


  [ # 11 ]

one answer is for meta pattern matching….

A general pattern like ” I * like * ham ”  might be what you want to match, but you don’t want to match
“I like to ham it up with friends”

So with pos-tagging you could write something like “I * like~v * ham~n”


  [ # 12 ]

No problem. Just put an entry in for _ TO HAM * to differentiate the verb from the noun.


  [ # 13 ]

Fine for this example. but that’s not the point.  Not all verbs require TO in front of them.  You don’t want to have to write LOTS of patterns to catch such things if you don’t have to.


  [ # 14 ]

No problem. I still can’t think of a use for POS tagging though, unless anyone can give me an example of where it may be useful or one of these generic questions that Andres mentions which he claims AIML cannot handle.


  [ # 15 ]

If you want to grab information from text, knowing the relationships of the words is useful.

Chatbots of the kind you write (conversational) do not desperately need pos tagging. But let’s take just the Loebner qualifiers. They do simple sentences like “John likes a fast car in the morning” and then want to ask what does john like.
Let’s suppose the input was:

John likes a fast car in the mornings.
John likes a fast in the mornings.
John is fast in the mornings.

what kind of car does john like?
what does john eat in the mornings?
how speedy is john in the mornings?

Knowing which meaning of fast is being used could be handy for this in trying to save away information.
Again, I agree that today’s chatbots do not need this ability.


 1 2 > 
1 of 2
  login or register to react