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

Noob question on community driven development
 
 

Hi gang,

First post and incredibly new to the word of NLP and chatbots. I hope my questions don’t sound child like and I am sure they have been answered before but I am so new, I don’t even know what to search for!

I have been reading up on AI through the A.L.I.C.E. and Rosie projects and have downloaded and installed Rosie with her default “vocabulary”.  My first question is what do I call the sum of her categories, sub-categories and templates? Is that referred to in the chatbot world as an ontology?

Second question. As people build chatbots to serve different purposes and specialties, are there community driven ontologies that can be downloaded? For example, if I was building a chatbot to talk sports with, is there an ontology that is already built around all the sports terms I would need to know (along with the reductions and recursions)? If so, where can I look for these?

Thanks very much for your answers and looking forward to exploring this new (to me at least) area of technology!

 

 
  [ # 1 ]

Welcome!  I would call an AIML chatbot’s categories its programming.

An ontology is a classification of things and their relationships and attributes.

Check out the Semantic Web:
https://en.wikipedia.org/wiki/Semantic_Web

and Web Ontology Language (OWL)
https://en.wikipedia.org/wiki/Web_Ontology_Language

Here is an interesting site on a Suggested Upper Merged Ontology:
http://www.adampease.org/OP/

Generally ontologies are for storing structured data about things and their relationships.  They can provide knowledge specific to one domain or topic or they can be large and provide the underlying knowledge for “common sense” reasoning or knowledge of the world.

AIML is mainly for managing question/answer dialog through pattern matching and provides the <sraix> tag for querying external web services and urls that would be the actual stores for large amounts of data.  In AIML there is no easy way to “reason” over large amounts of data or make inferences about facts in a stored ontology or other database.  This falls more into the category of Strong AI.  I would suggest searching on “semantic reasoner”  to see if your interest in ontologies is leading you in that direction which is the direction of creating a truly reasoning AI.

AIML is a good introduction to creating chatbots, especially question and answer or dialoging chatbots and you could create a basic sports themed chatbot fairly quickly starting with basic FAQ.

See Mitsuku for an example of one of the most advanced AIML chatbots and ask her some questions about sports (not sure if she is interested in sports or not) and you can see what is possible with AIML.
http://www.mitsuku.com/

Check out the AIML section for posts on specific AIML topics and discussion about what is or is not possible using it.

Rivescript and ChatScript are other options with topics here on this forum that do provide connectivity to databases and ontologies that you can set up and host yourself.

Have fun.

 

 

 
  [ # 2 ]

Under the SUMO link I noticed there was an ontology for sports.

https://github.com/ontologyportal/sumo/blob/master/Sports.kif


Here is a sample of the file:


<!—
https://github.com/ontologyportal/sumo/blob/master/Sports.kif
...
We ask that people using or referencing this work cite our primary paper:
21
22 ;; Niles, I., and Pease, A.  2001.  Towards a Standard Upper Ontology.  In
23 ;; Proceedings of the 2nd International Conference on Formal Ontology in
24 ;; Information Systems (FOIS-2001), Chris Welty and Barry Smith, eds, 
25 ;; Ogunquit, Maine, October 17-19, 2001.  See also http://www.ontologyportal.org

...

(subclass Archery Sport)
90 (documentation Archery EnglishLanguage “The &%Sport of shooting &%Arrows with a &%Bow.”)
91 (subclass Badminton Sport)
92 (documentation Badminton EnglishLanguage “A game played on a court with light long-handled rackets used to volley a shuttlecock over a net.”)
93 (subclass Cricket Sport)
94 (documentation Cricket EnglishLanguage “A game played with a ball and bat by two teams of 11 players; teams take turns trying to score runs.”)
95 (subclass Curling Sport)
96 (documentation Curling EnglishLanguage “A game played on ice in which heavy stones with handles are slid toward a target.”) 
97 (subclass Cycling Sport)
98 (documentation Cycling EnglishLanguage “The &%Sport of traveling on a &%Bicycle or similar.”)
99 (subclass MountainBiking Cycling)
100 (documentation MountainBiking EnglishLanguage “Mountain biking is a sport which consists of riding bicycles off-road, often over rough terrain, using specially adapted mountain bikes.”) 
101 (subclass Diving Sport)
102 (documentation Diving EnglishLanguage “An athletic competition that involves diving into water.”)
103 ;scuba diving in in MILO as sub from Swimming
104 (subclass Snorkeling Diving)
105 (documentation Snorkeling EnglishLanguage “Snorkeling is the practice of swimming on or through a body of water while equipped with a diving mask, a shaped tube called a snorkel, and usually swimfins.”)
106 ;(subclass ScubaDiving Diving)
107 ;(documentation ScubaDiving EnglishLanguage “Is a form of underwater diving in which a diver uses a scuba set to breathe underwater.”)
—>

It you did not want to find or create a website to host a web service that would store and return records in an ontology you could just convert them to AIML categories to play with:

<category><pattern>xsubclass Archery Sport</pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation Archery English</pattern>
<
template>The Sport of shooting Arrows with a Bow.</template></category>

<
category><pattern>xsubclass Badminton Sport </pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation Badminton English</pattern>
<
template>A game played on a court with light long-handled rackets used to volley a shuttlecock over a net.</template></category>

<
category><pattern>xsubclass Cricket Sport</pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation Cricket English</pattern>
<
template>A game played with a ball and bat by two teams of 11 playersteams take turns trying to score runs.</template></category>

<
category><pattern>xsubclass Curling Sport</pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation Curling English</pattern>
<
template>A game played on ice in which heavy stones with handles are slid toward a target.</template></category>

<
category><pattern>xsubclass Cycling Sport</pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation Cycling English</pattern>
<
template>The Sport of traveling on a Bicycle or similar.</template></category>

<
category><pattern>xsubclass MountainBiking Cycling</pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation MountainBiking English</pattern>
<
template>Mountain biking is a sport which consists of riding bicycles off-roadoften over rough terrainusing specially adapted mountain bikes.</template></category>

<
category><pattern>xsubclass Diving Sport</pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation Diving English</pattern>
<
template>An athletic competition that involves diving into water.</template></category>

<
category><pattern>xsubclass Snorkeling Diving</pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation Snorkeling English</pattern>
<
template>Snorkeling  is the practice of swimming on or through a body of water while equipped with a diving maska shaped tube called a snorkel, and usually swimfins.</template></category>

<
category><pattern>xsubclass ScubaDiving Diving</pattern>
<
template>Yes</template></category>

<
category><pattern>xdocumentation ScubaDiving English</pattern>
<
template>Is a form of underwater diving in which a diver uses a scuba set to breathe underwater.</template></category>

<
category><pattern>xsubclass *</pattern>
<
template>No</template></category>

<
category><pattern>xdocumentation * </pattern>
<
template>I am not sure.</template></category
 

 
  [ # 3 ]

Here are some basic patterns to get you started with a sports chatbot:

<category><pattern>is a *</pattern>
<
template><srai>is <star/> <star index="2"/></srai></template></category>

<
category><pattern>is *</pattern>
<
template><srai>xsubclass <star/> <star index="2"/></srai></template></category>

<
category><pattern>what is * </pattern>
<
template><srai>xdocumentation <star/> english</srai></template></category>

<
category><pattern>describe * </pattern>
<
template><srai>xdocumentation <star/> english</srai></template></category

Sample output:

Human: is curling a sport  
sienna4: Yes

Human: what is curling
sienna4: A game played on ice in which heavy stones with handles are slid toward a target.


The problem is with the following example:
Human: is scubadiving a sport  
sienna4: No

First off, the ontology has the words scubadiving combined.  So you will need to find a way to remove the space before checking the xsubclass.  Or you can use a substitution file to substitute the words for the term used by the ontology.  Or you can do what I do and substitute spaces in terms with a character such as a vertical pipe scuba|diving.  You would then need to update the above categories separating the words with vertical pipes.  There are some samples in the AIML section that show how to do this.

Secondly, in order for the chatbot to “know” scubadiving is a sport it would need to infer that scubadiving is diving and diving is a sport therefore scubadiving is a sport.  That is pretty tricky using AIML only and this is where you would be better off using the <sraix> tag to query a web service that would perform the search and inferencing. 
 

 

 

 
  [ # 4 ]

Alaric,

Thank you for this response! This is great.  I used “ontology” but indeed, my goal was to find a “list” of definitions that were categories with pattern/template pairings.  As a noob, I knew I was using the word ontology in correctly.

My other poor choice was sports.  I was just trying to use a commonly understood topic.  We are actually building a chatbot that works with data networks so the “list” we are looking for is network related stuff.  Terms like “traffic”, data”, “inbound”, “outbound”, “uploaded”, “downloaded” would all be category examples.

It might be such a small list that we could just build it.

Thanks again for the guidance!

 

 
  login or register to react