AI Zone Admin Forum Add your forum

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

Advice available for other chat systems, not chatbots per se written in ChatScript
 
 

I am moving a thread that might have started elsewhere to here, as a place to put questions about what others might do in designing their own chat language, or in understanding chatscript engine design—- NOT questions about how to code some particular piece of chatscript script for a bot or bugs reports or whatever. This is a design thread.

 

 
  [ # 1 ]

Bruce,

Merlin gave me a tip on his thread: here, to ask you about POS tagging.  Then, I unexpectedly stumbled upon possibly, something in common between Elizabot and ChatScript, after I downloaded new version 3.62 today. 

Apparently they both may take advantage of WordNet! Though I imagine Elizabot, during her alpha testing, may be on a lower WordNet version than ChatScript.  Just a heads up: Elizabot’s command of WordNet is stilted and much weaker than ChatScript presently.  If she cracks a joke or responds in chatbot lingo, it means she could not answer you with her lower WordNet version. Elizabot is still just a baby in need of some help from Uncle Bruce and Aunt Rose smile

Copied from: Elizabot.com

>> Tell me aboutpart of speech 
<< One of the traditional categories of words intended to reflect their functions in a grammatical context.  Part of Speechn.
<< 
Synsetform class
<< 
Synsetword class
<< 
Hypernymgrammatical category.  Part of Speechn
<< Hypernymsyntactic category.  Part of Speechn
<< Hyponymmajor form class.  Part of Speech


Bruce, I hope this is not off topic. This topic appears to be about providing advice to mature chatbot projects such as AIML.  May you kindly make an exception and provide some advice to the totally new ALPHA version project: Elizabot?  For example, about using POS tagging, and/or any other conversation technology improvements which may take advantage of WordNet?  Instead of AIML, the conversion would be instead PHP.  Don’t know any PHP?  No problem!  PHP inherits syntax from C language, and has classes, so PHP is really not too far off from intermediate level C++.  ChatScript is written in C++. 

Now by “conversion” I certainly don’t mean converting C++ to PHP.  That would be way too ambitious.  But I do mean to suggest, much more reasonably, that informal C language style pseudo code would be very useful, and referencing examples in existing ChatScript source code files in C++ would also be cool, for example.  Or, just putting it in your own words would be just fine.

Thank you!

 

Reference 1: Merlin’s thread: http://www.chatbots.org/ai_zone/viewthread/1492/
Reference 2: Elizabot’s website: http://www.elizabot.com

 

 

 
  [ # 2 ]

I am happy to offer advice to any project, mature or young. Likely you don’t actually know the questions you should ask, but I don’t know what you actually need to know either.

I will say that ChatScript and AIML and PersonalityForge bots don’t “need” pos-tagging or parsing. Many users do not speak in parsable form and hence it would be hard to pos-tag them anyway.

Pos-tagging/parsing are good when trying to read documents for whatever reason, since they generally are grammatically correct. I will also say that I use Wordnet both for ability to pos-tag AND for its ontology information. But there are various WordNet definitions I kill off because they create too much confusion in matching. For example chat~2 is deleted because it is a bird, and I don’t want chat in a sentence to lead to pets. So, ask whatever questions you wish.

 

 
  [ # 3 ]

As background for design goals/constraints on ChatScript’s design, I give you this weblink:
http://brilligunderstanding.com/technology.html

 

 
  [ # 4 ]

Nice that you have that website now.
I didn’t get the meaning of the graffitis. Too esoteric for me I guess.

Please let me know when that journal is published.

In the chatbot/demo page the rest of the links are broken.

 

 
  [ # 5 ]

Duly fixed, thanks for pointing it out. There are two journals pending publication: ARBOR, whose paper I may never realize when it comes out (submitted over a year ago) and which is in the CS Documentation folder, and a paper whose submission deadline is late October.

 

 
  [ # 6 ]
Bruce Wilcox - Sep 18, 2013:

I am happy to offer advice to any project, mature or young. Likely you don’t actually know the questions you should ask, but I don’t know what you actually need to know either.

Indeed, project Elizabot is young.  You may not actually know what I need to know.  Yet, I may have actually extrapolated some improvements or have otherwise been inspired by reading the helpful advice you offered up until this point. 

Surely, I will have a good deal more questions. 

Thank you very much, Bruce.

 

 

 
  [ # 7 ]

Bruce, I have been reading some of your articles, which inspired me to very roughly implement a sketchy WordNET integration this evening for Elizabot.  It has very little testing, but it goes something like this.  The user requests a motorcar joke and is given instructions…

>> Tell me a joke about a motorcar.
<< Click the joke above for the punchline.

The user follows the instruction and clicks on an automobile or car joke. A punchline appears…

<< Music in an automobile, may be what?
>> A car tune.

So Elizabot knows a motorcar is an automobile or a car, sort of smile

Down in the system log, a list of synonyms, Elizabot used to find the joke is displayed…

assure differentiate distinguish enjoin evidence narrate order recite recount say say secern secernate separate severalise severalize state tell apart william tell antic caper gag jape jest jest jest jest jocularity laugh prank put-on trick auto automobile car machine

While this works the same for non-comedy chats, we’ll get to that later.  So, when asked for a joke about an uncommon word such as “motorcar” Elizabot relates that to a joke about more common words “automobile” or “car”.  In any case, it is far from optimized at this point. 

Any thoughts on how to optimize it?  Such as, what can I kill off in WordNET, if anything? As you may notice, the response has increased a few seconds longer.  This may be the price of boosting Elizabot’s IQ just like Eliza in Pygmalion.  He,he…he!!! Just joking! smile .

I won’t get around to trying any optimization at least until tommorrow afternoon.  So, any advice, comments, thoughts, articles… Bruce, I am sure I will find inspirational. 

Thank you.

 

 
  [ # 8 ]

EDIT: I added a limit and made the results distinct.  So it looks like this now…

assure differentiate distinguish enjoin evidence antic caper gag jape jest auto automobile car machine

That was a sweet nothing, and I don’t know if it is a keeper. OK.  No more optimization at least until tomorrow afternoon… For real this time.

 

 
  [ # 9 ]

I don’t actually understand your list of synonyms since they appear to be a list of words which include may unrelated things.
I presume you are only referring to speed optimization when you say optimize. Other choices include memory and time to prototype.  Wordnet has ptrs to words of the same meaning (synset) and words that subsume other words (a hierarchy of hypernyms). So I’d suggest you build the network of parallel links between synset words and the hierarchy of words. Then when someone gives you one word, you can walk all synset words and walk up the hierarchy. Jokes you DO have can have keywords which “mark” words in your dictionary, so as you walk up the hierarchy you can stop when you find a marked entry.

 

 
  [ # 10 ]

Tom - can I ask how it comes up with the “car tune” joke? Does it have a database of jokes or is it doing some fancy wordplay behind the scenes?

 

 
  [ # 11 ]
Bruce Wilcox - Sep 30, 2013:

I don’t actually understand your list of synonyms since they appear to be a list of words which include ma[n]y unrelated things.

That may be my fault. My post was based on an intermediate approach with some unnecessary searching because it was not optimized.  I appreciate your patience.

Bruce Wilcox - Sep 30, 2013:

I presume you are only referring to speed optimization when you say optimize. Other choices include memory and time to prototype.

Yes that is correct, and the other choices may also need optimization in due course, as well.

Bruce Wilcox - Sep 30, 2013:

WordNET has ptrs to words of the same meaning (synset) and words that subsume other words (a hierarchy of hypernyms).

As stated above, I started with an intermediate approach which was not optimized for search.  The synset and hypernym hierarchy are interconnected via keyword, with limits placed on the top five, to stop the search.  This was not intended to be elegant.  Let me explain…  While, not all used,  a number of main components of an optimized approach are present, which made it good for testing stability, before building an “intelligent” system on top of that. 


The results are good, just perhaps not as good as the could be. 

Let’s say Elizabot does not recognize keyword: mutt

>> Tell me a joke about a mutt.
<< 
Click the joke above for the punchline


And let’s say Elizabot does not recognize keyword: mongrel

>> Tell me a joke about a mongrel.
<< 
Click the joke above for the punchline

Elizabot may in both cases recognize “mutt’ and “mongrel”  as “dog” using this intermediate approach.  However, if “canis familiaris” for example, is not in the top five, then it may not be recognized as “dog”.

<< If it may be raining cats and dogshow may you know?
>> 
You may step in a poodle 
Bruce Wilcox - Sep 30, 2013:

So I’d suggest you build the network of parallel links between synset words and the hierarchy of words. Then when someone gives you one word, you can walk all synset words and walk up the hierarchy. Jokes you DO have can have keywords which “mark” words in your dictionary, so as you walk up the hierarchy you can stop when you find a marked entry.

Perfect!  This is an “intelligent” search.  What a wonderful suggestion.  Thank you very much, Bruce.  I am so pleased with your response, that I wish to extend my sincere appreciation to Chatbots.org.

 

 

 
  [ # 12 ]

Hi Steve,

Steve Worswick - Sep 30, 2013:

Can I ask how it comes up with the “car tune” joke?

At the moment, Elizabot tells jokes using pure PHP code.

Steve Worswick - Sep 30, 2013:

Does it have a database of jokes or is it doing some fancy wordplay behind the scenes?

Neither.  No database of jokes, just pure PHP code.  This is still early stages of development.  WordNET is not required for jokes, though it seems to improve recognition a great deal. By fancy wordplay on “car tune”, I suppose you mean like when a chimpanzee learns sign language.  For a stale cookie a chimp may sign “cookie rock” showing that it actually understands that when a cookie is stale, it is as hard as a rock. 

Thanks for this “wordplay” question. I’ll take it as a compliment.

 

 

 

 
  [ # 13 ]

Yes it was a compliment. I was more curious about how it related “car tune” to “cartoon” and also to “music in an automobile”. Can you say on a public forum how it creates the jokes?

It’s impressive and good luck in the competition.

 

 
  [ # 14 ]
Steve Worswick - Oct 1, 2013:

Can you say on a public forum how it creates the jokes?

OK, ok… I’m embarressed to say it in public…
Yes, I admit to using GOTO statements in PHP.

 

 
  [ # 15 ]

lol I will take that as a no then. It’s impressive anyway, I tried it out earlier.

 

 1 2 > 
1 of 2
 
  login or register to react