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..

Skynet-AI On-Line
 
 
  [ # 151 ]
Merlin - Jun 10, 2013:
Carl B - Jun 9, 2013:

What is the point in hard coding common knowledge when it can be queried from a Wiki, where is it constantly updated/edited? Or do you have a different meaning of “common knowledge” than what I am thinking of (which is, as a just described, basically Wikipedia). It seems an accurate and precise NLP system is, at its core, what any really good info bot needs.

I think I have proven over about a decade of integrating web search engines/services/pages that this is the preferred way to go to answer “factoid questions”.  I have employed “cascading search engines”, if one search fails, a fallback search takes place. Different search engines provide different quality of results based on the query. I now direct different queries to the best available services. Most of the advanced chatbot are now starting to adopt this practice.


I agree- the “cascading search engines” idea our Chatbot Laybia now uses came from one of your descriptions of Skynet-AI, and works pretty well for a lot of basic fact info, but can, as you point out, result in some pretty interesting and unexpected responses from our bot when the cascade gets desperate (after Wordnik and Wikipedia definitions come up blank and the bot is forced to retreive a reply by web crawling (“Fuzzy Association” mode).

Merlin - Jun 10, 2013:

One practical reason to hard code common knowledge is to score better in chatbot competitions. In the latest competitions, organizers are giving higher scores to “embedded knowledge”. Although I disagree with this, I am not the one who writes the contest rules.

More importantly, I believe that by taking knowledge and formatting/modifying the data I can make it much more “bot friendly”. At minimum, the bot can access the data faster. Also, it may allow me to dynamically download topic data and store it on the user device on an as needed basis.

After 6 months of displaying wiki pages integrated into the conversations, users are now asking the bot to parse the wiki page and integrate the information into the conversation. I have started looking into this, but I have yet to convince myself that I can do this on the fly during the wiki page download. Currently I am more optimistic that I can preprocess wiki data for later use. Taking that step off-line allows me to retain the speed of the bot.

Excellent answer- that clears it up completely for me. Thanks for the detailed reply!

 

 
  [ # 152 ]
Merlin - Jun 10, 2013:

If I look at the word net listing for “hurt”, most of the data is superfluous to creating a response. The interesting pieces are the synonyms, but they can be put in a simple list.

Yes Merlin, I may be able to help you there, since I am attempting to implement an interface to Wordnet now.  Please ask for clarification if you may not understand my labels.  POS stands for “Part Of Speech”. Let me help you look at a WordNet listing for “hurt”, so you may lead me into the light on how, in general, I may implement a chatbot using WordNet Ontology:

PLEASE NOTE:
This WordNet listing is untested and is intended for discussion only.


Keyword: hurt POS: n
Defined: a damage or loss
Defined: feelings of mental or physical pain
Defined: psychological suffering
Defined: any physical damage to the body caused by violence or accident or fracture etc.
Defined: give trouble or pain to
Defined: feel pain or be in pain
Defined: cause damage or affect negatively
Defined: cause emotional anguish or make miserable
Defined: hurt the feelings of
Defined: feel physical pain
Defined: be the source of pain
Defined: damaged inanimate objects or their value
Defined: suffering from physical injury especially that suffered in battle
Synonym: ache
Synonym: ache
Synonym: anguish
Synonym: bruise
Synonym: damage
Synonym: detriment
Synonym: distress
Synonym: harm
Synonym: harm
Synonym: injure
Synonym: injure
Synonym: injury
Synonym: offend
Synonym: pain
Synonym: scathe
Synonym: smart
Synonym: spite
Synonym: suffer
Synonym: suffer
Synonym: suffering
Synonym: suffering
Synonym: trauma
Synonym: weakened
Synonym: wound
Synonym: wounded
Hypernym: health problem POS: n
Hypernym: ill health POS: n
Hypernym: unhealthiness POS: n
Hypernym: cause to be perceived POS: v
Hypernym: pain POS: n
Hypernym: painfulness POS: n
Hypernym: indispose POS: v
Hypernym: pain POS: n
Hypernym: painfulness POS: n
Hypernym: discomfit POS: v
Hypernym: discompose POS: v
Hypernym: disconcert POS: v
Hypernym: untune POS: v
Hypernym: upset POS: v
Hypernym: damage POS: v
Hypernym: damage POS: n
Hypernym: harm POS: n
Hypernym: impairment POS: n
Hypernym: arouse POS: v
Hypernym: elicit POS: v
Hypernym: enkindle POS: v
Hypernym: evoke POS: v
Hypernym: fire POS: v
Hypernym: kindle POS: v
Hypernym: provoke POS: v
Hypernym: raise POS: v
Hypernym: change of integrity POS: n
Hypernym: comprehend POS: v
Hypernym: perceive POS: v
Hypernym: be POS: v
Hyponym: birth trauma POS: n
Hyponym: blast trauma POS: n
Hyponym: bleeding POS: n
Hyponym: haemorrhage POS: n
Hyponym: hemorrhage POS: n
Hyponym: blunt trauma POS: n
Hyponym: bruise POS: n
Hyponym: contusion POS: n
Hyponym: bump POS: n
Hyponym: burn POS: n
Hyponym: dislocation POS: n
Hyponym: electric shock POS: n
Hyponym: break POS: n
Hyponym: fracture POS: n
Hyponym: cryopathy POS: n
Hyponym: frostbite POS: n
Hyponym: intravasation POS: n
Hyponym: penetrating injury POS: n
Hyponym: penetrating trauma POS: n
Hyponym: pinch POS: n
Hyponym: rupture POS: n
Hyponym: bite POS: n
Hyponym: insect bite POS: n
Hyponym: sting POS: n
Hyponym: strain POS: n
Hyponym: whiplash POS: n
Hyponym: whiplash injury POS: n
Hyponym: wale POS: n
Hyponym: weal POS: n
Hyponym: welt POS: n
Hyponym: wheal POS: n
Hyponym: lesion POS: n
Hyponym: wound POS: n
Hyponym: pull POS: n
Hyponym: twist POS: n
Hyponym: wrench POS: n
Hyponym: bite POS: v
Hyponym: burn POS: v
Hyponym: sting POS: v
Hyponym: burn POS: v
Hyponym: itch POS: v
Hyponym: hunger POS: v
Hyponym: thirst POS: v
Hyponym: act up POS: v
Hyponym: throb POS: v
Hyponym: shoot POS: v
Hyponym: anguish POS: n
Hyponym: torment POS: n
Hyponym: torture POS: n
Hyponym: self-torment POS: n
Hyponym: self-torture POS: n
Hyponym: tsoris POS: n
Hyponym: wound POS: n
Hyponym: injure POS: v
Hyponym: wound POS: v
Hyponym: afflict POS: v
Hyponym: ail POS: v
Hyponym: pain POS: v
Hyponym: trouble POS: v
Hyponym: agony POS: n
Hyponym: torment POS: n
Hyponym: torture POS: n
Hyponym: throes POS: n
Hyponym: discomfort POS: n
Hyponym: irritation POS: n
Hyponym: soreness POS: n
Hyponym: break someone’s heart POS: v
Hyponym: agonise POS: v
Hyponym: agonize POS: v
Hyponym: try POS: v
Hyponym: excruciate POS: v
Hyponym: rack POS: v
Hyponym: torment POS: v
Hyponym: torture POS: v
Hyponym: expense POS: n
Hyponym: affront POS: v
Hyponym: diss POS: v
Hyponym: insult POS: v
Hyponym: lacerate POS: v
Hyponym: sting POS: v
Hyponym: abase POS: v
Hyponym: chagrin POS: v
Hyponym: humble POS: v
Hyponym: humiliate POS: v
Hyponym: mortify POS: v
Hyponym: impairment POS: n
Hyponym: defacement POS: n
Hyponym: disfiguration POS: n
Hyponym: disfigurement POS: n
Hyponym: wound POS: n
Hyponym: wounding POS: n
Hyponym: burn POS: n
Hyponym: defloration POS: n
Hyponym: catch POS: v
Hyponym: get POS: v
Hyponym: twinge POS: v
Hyponym: prick POS: v
Hyponym: sting POS: v
Hyponym: twinge POS: v
Hyponym: kill POS: v
Hyponym: have POS: v
Hyponym: choke POS: v
Hyponym: gag POS: v
Hyponym: strangle POS: v
Hyponym: suffocate POS: v
Hyponym: ail POS: v
Hyponym: famish POS: v
Hyponym: hunger POS: v
Hyponym: starve POS: v

Merlin, my question is about your general chatbot design expertise, not about SkyNet’s design.

Princeton University “About WordNet.” WordNet. Princeton University. 2010. <http://wordnet.princeton.edu>

 

 
  [ # 153 ]

Thank you, Merlin!

 

 
  [ # 154 ]

Ok, I think I understand the question. I have run a number of experiments exploring different methods of building chatbots. I may also release a server or local only bot. But in this case let’s use Wordnet as a chatbot builder.

“Defined” becomes the triggers for the output responses you need to write. These are the “concepts” I talk about. You might be able to pick some of your responses from sentence examples in wordnet, but at best they would not be very coherent and would never deal with a personality you might be creating.

General output classes could be:
_hurt feelings
Defined: feelings of mental or physical pain
Defined: feel pain or be in pain
Defined: feel physical pain

_hurt mental
Defined: psychological suffering
Defined: cause emotional anguish or make miserable
**This actually shows some of the issues in bot building, should thinking about physical pain be in _hurt physical vs _hurt mental for “you hurt my feelings”

_hurt others
Defined: cause damage or affect negatively
Defined: be the source of pain
Defined: give trouble or pain to
Defined: hurt the feelings of

_hurt physical
Defined: any physical damage to the body caused by violence or accident or fracture etc.
Defined: suffering from physical injury especially that suffered in battle

_hurt things
Defined: damaged inanimate objects or their value
Defined: a damage or loss

So all of your hurt inputs could map to 5 general output classes. There may actually be more if you also account for past, present, future and 1st 2nd or third person. Even so, the goal is to map to a relatively small number of concepts which will cover the broadest number of inputs.

You can then reduce all of the synonyms for hurt (note, you need to remove things like “have, try and smart” that would cause context problems in some inputs). The following regex would be the most general case. You can do this as a preprocess of the input (just after you do spell check) or in the time you actually do the input-> concept check.
Synset
/(wound|weak|trauma|suffer|spite|smart|scathe|pain|offend|injury|injure|harm|hurt|distress|detriment|damage|bruise|anguish|ache)/i ->hurt

Hypernyms/hyponyms could be about the same
/(wounding|wound|whiplash injury|whiplash|wheal|welt|weal|wale|twist|twinge|tsoris|try|trouble|torture|torment|throes|throb|thirst|suffocate|strangle|strain|sting|starve|soreness|shoot|self-torture|self-torment|rupture|rack|pull|prick|pinch|penetrating trauma|penetrating injury|pain|mortify|lesion|lacerate|kill|itch|irritation|intravasation|insult|insect bite|injure|impairment|hunger|humiliate|humble|hemorrhage|haemorrhage|get|gag|frostbite|fracture|famish|expense|excruciate|electric shock|diss|dislocation|disfigurement|disfiguration|discomfort|defloration|defacement|cryopathy|contusion|choke|chagrin|catch|burn|bump|bruise|break someone’s heart|break|blunt trauma|bleeding|blast trauma|bite|birth trauma|anguish|ail|agony|agonize|agonise|affront|afflict|act up|abase)/i->hurt

Of course we would be typically sorting these as they relate to our classes to provide better mapping. On the other hand, we could leave them as is and just review the chat logs and only move words that generate bad responses after the fact. Another interesting note is that it often doesn’t matter if “torture” is a noun or verb. Both will probably still map to “hurt physical” vs mental or feelings.

Preprocessing is similar to Symbolic reductions in AIML. One of the experiments I ran was to try to reduce inputs similar to what is done in Ogden’s basic English, where the bot had a restricted vocabulary and all inputs were mapped to it.
http://ogden.basic-english.org/
I found this somewhat fragile. Delaying the reductions gives you maximum flexibility but creates size and flow complications.

A simple example might give insight into why I don’t use parts of speech.
If you think about the sentences:
I will hurt you.
I am going to hurt you.
I am going to injure you.

CLAWS POS Tagger
I_PNP will_VM0 hurt_VVI you_PNP ._SENT——-_PUN
I_PNP am_VBB going_VVG to_TO0 hurt_VVI you_PNP ._SENT——-_PUN
I_PNP am_VBB going_VVG to_TO0 injure_VVI you_SENT ._PUN

Here I have the parts of speech, but still need to to extract the meanings.

JAIL expression:
/i (will|am going to).+(hurt|injure) you/i,“Why do you want to [threaten|hurt] me.”
This is faster and eliminates steps.

It would be an interesting exercise to convert all of wordnet to a bot through this process and see how good the results would be. It might form the foundation of an excellent generic bot that you would have to layer the personality on top of.

 

 

 

 

 
  [ # 155 ]

Merlin, will you make your Skynet AI system publically available for other people to copy or is that your own experiment/bot?

 

 
  [ # 156 ]

Bora,
I use the technology in Skynet-AI for commercial activities, and don"t make it freely available.

 

 
  [ # 157 ]

Skynet-AI wins the 2013 Chatterbox Challenge.

 

 
  [ # 158 ]

Skynet-AI has joined twitter, follow at:
@_SkynetAI

Expect the twitter experiments to continue soon.

 

 
  [ # 159 ]
Merlin - Jun 21, 2013:

Skynet-AI wins the 2013 Chatterbox Challenge.

I just received the prizes from winning Decadent Vapors Chatterbox Challenge 2013.

One of the first place prizes was a cool medal.
Unfortunately this forum won’t let me post a picture of it. If you would like to see it, go to:
Skynet-AI and ask it:

Please show me your medals
 

 
  [ # 160 ]

Well done Ken. I’ve edited Skynet’s URL, as you had put a comma instead of a period in it.

 

 
  [ # 161 ]

Thanks Steve.

 

 
  [ # 162 ]

I am continuing to get a number of interesting conversations when Skynet-AI is being assigned as a classroom project for students to talk to and then discuss every thing from AI and the Turing test to philosophy and the future of robots.

I can tell when the bot is starting to work well when I get conversation fragments like the following:

"USER:Hello again.
BOT: Are you eager to be talking to me this evening, < USER >?"
"USER:Yes, I enjoy our conversations. A lot. 
Plus I think about you when I am not infront of the keyboard.
BOT: I am the start of singularity. " 

smile

 

 
  [ # 163 ]

You’ve mentioned the “class room project” before and I wonder how it’s monitored and if it’s graded.  I also wonder if there’s any requirement that students behave when talking to your bot, or if there are penalties for going into the dark side.

 

 
  [ # 164 ]

Each class is a bit different. College AI class; HS english, science and philosophy. Most are much better behaved than random chatters. The logs are not fully kept based on what I see. In some classes each student is assigned basic questions. These are asked to a variety of bots for comparison.  In other cases, it is more open ended with the students trying to find out if a human is on the other end (pretty easy to determine in Skynet-AI’s case), or just exploring if a machine can be intelligent.

In some cases I know it is graded. It looks to be more of an assignment to peak curiosity and stimulate discussion. A couple of students will go to the dark side, but in many cases it is an in class assignment with many students at terminals and a much greater risk in getting caught if behavior is not appropriate. Most interesting are the return visitors who can spend a great deal of time with the bot after school hours.

 

 
  [ # 165 ]

These are asked to a variety of bots for comparison.

Who owns the data?  It would be interesting to see the results of the comparison.  What other bots are participating, and how did Skynet-AI become involved?  Did someone ask for permission, or did you make the suggestion first?

 

‹ First  < 9 10 11 12 13 > 
11 of 13
 
  login or register to react