Project CyN

Project CyN is the merger of a AIML interpreter used to develop chat bots with the OpenCyc inference engine. This unique tool allows the product of one of the largest, continuous AI projects to be accessed by one of the largest chat bot development community. Basically Cyc + Program N = CyN.

One of the first questions that interested programmers want to know about OpenCyc is what kind of natural language interface is there and can they talk with it. And one of the things that interested programmers who learn AIML ask is how to make their chat bots appear smarter. CyN tries to address the desires of both communities.

Also See: Special AI Tools

TECHNOLOGY AREA: Natural language chat bot development system

OBJECTIVE: Cyn (source code) is an AIML interpreter that can access OpenCyc.

DESCRIPTION: CyN is a modification of Program N by Gary Dubuque at http://www.aimlpad.com .

  • A desktop AIML interpreter for the Windows environment.
  • Can access OpenCyc and use it to make AIML side decisions, and use OpenCyc information.
  • Provides a basic IRC capability to Program N with basic logging
  • Provides a basic web server capability to Program N with basic logging
  • Adds some additional selection options to Program N

System goals:

  • provide a pattern based parser for use with OpenCyc suitable for chatbots / virtual human experimentation and basic knowledge entry of logical relationships
  • be an interpreter that allowed an easy way to interface AIML to OpenCyc
  • create a set of example AIML categories to answer questions using OpenCyc
  • provide a tool for experimentation with both systems
  • provide a natural language front-end ahead of the current OpenCyc schedule
  • be a tool capable of creating a “personality” for OpenCyc systems
  • be a scaleable tool (AIML sets have 40,000 language patterns and full Cyc has 1.6 million facts)
  • be a tool that can be integrated with other systems
  • be open; based on Program N it is free to download, modify and reuse

CyN is not:

  • A full natural language parser for OpenCyc. It can provide basic pattern template based parsing.
  • A full chat bot. The basic system is an interpreter. It still requires a full AIML set.
  • A drop-in, general purpose, natural language AI. Ideally it should function as an AIML bot with an inference engine. Details can be found in the description .pdf
  • Finished. This is the sort of project that is never finished, because better functionality can always be added. Please let us know of additional functionality needed. More categories of language patterns can always be written.

CONTAINS: C code for windows executable, along with necessary data files.

RECOMMENDATION:

ADDITIONAL WORK REQUIRED:

  • Tighter integration with OpenCyc for linguistic and logical information. Pending C version of CycLink.
  • OpenCyc KE definitions for all logical predicates.
  • AIML definition of all OpenCyc logical predicates

DOWNLOAD 2004-01-25 version: Cyn (source code) Includes basic CyN interpreter and nano-IRC client. Goes to a IRC-channel and responds to private messages sent to it. See option.ini file.

DOWNLOAD 2004-03-18 version: Cyn (source code+Win32 EXE) Includes basic CyN interpreter and nano-IRC client and micro-web server. See option.ini and CynDiff.txt file.

SourceForge 2004-04-02: Program N with CyN (source code+Win32 EXE on SourceForge) CyN's innovations have been assmilated back into Program-N which now has a SourceForge site. The new Program-N also has a a serverside Java Script engine. Probably the best site for the latest code.

Publications :

Living in CyN : Mating AIML and Cyc Together with Program N

KEYWORDS: Natural language parser, CycL, OpenCyc, AIML, Chat bot

Example Dialog:

Is a human a mammal ?

Affarmitive. I agree.

is a dog a vegetable ?

Nope. I can't prove that.

is kino alive ?

Affarmitive. I agree.

is a lion a animal ?

Affarmitive. I think so.

is a lion a product ?

Nope. I can't prove that.

is a lion a thing ?

Affarmitive. I beleive that.

is a dog a plant ?

Nope. I can't prove that.

Name some plant

FloweringPlant

is a dog a person

Negative. I can't say that.

who is a cyclist

I think CycAdministrator is a cyclist.

Is CycAdministrator a cyclist

Right. I agree.

Is CycAdministrator a person ?

Affarmitive. I agree.

Who is a student?

I think Self is a student. <-- one of the things in the system profile

Are you a studen ? <-- note: fi-complete fixed the typo and guessed right

Right. I think so.

guess studen

I think studen means #$Student to Cyc

What do you want ?

I want Susan to like Self.

What do you want ?

I want Self to like Self.

[Since the cyc explainer is not avaiable yet through the API I asked OpenCyc through the web browser and got the following justification]

Mt : DAX-SelfAwareMt

EL Query :

(desires Self ?WHAT)

Answer Bindings :

?WHAT ? (likes-Generic Self Self)

Justifications :

(implies

(isa ?ANYONE Person)

(desires Self

(likes-Generic ?ANYONE Self))) in DAX-SelfAwareMt

:ISA (isa Self Person) in DAX-SelfAwareMt

Hence the system wants to like itself.

Make Rover a Dog

200 #$Rover

200 T

Make Skippy a Dog

200 #$Skippy

200 T

Is Skippy a Dog ?

Affarmitive. I agree.

Is Rover a Dog ?

Right. I agree.

Is Skippy a Person ?

No. I can't prove that.

What is Skippy?

200 (((?REPLY . #$Thing)) ((?REPLY . #$Individual)) ((?REPLY . #$Dog)))

Is skippy a mammal ?

Right. I agree.

Is skippy a animal ?

Affarmitive. I beleive that.

is skippy a person ?

No. Not that I know of.

What is rover ?

200 (((?REPLY . #$Thing)) ((?REPLY . #$Individual)) ((?REPLY . #$Dog)))

Forget Skippy is a Dog

()

What is Skippy ?

FALSE

Is skippy a mammal ?

Negative. I can't prove that.


Basic Explaination Debug Dialog:

<kinoc2> guess pistol
<Cyn> I think PISTOL means #$Pistol to Cyc
<kinoc2> what is a pistol
<Cyn> Generalizations:200 (((?WHAT . #$ComplexPhysicalObject))
((?WHAT . #$Product)) ((?WHAT . #$PartiallyTangibleProduct)) ((?WHAT
. #$SolidTangibleThing)) ((?WHAT . #$SolidTangibleProduct)) ((?WHAT .
#$PhysicalDevice)) ((?WHAT . #$TwoOrHigherDimensionalThing))
<Cyn> ((?WHAT . #$SpatialThing)) ((?WHAT .
#$SpatialThing-Localized)) ((?WHAT . #$SomethingExisting)) ((?WHAT .
#$PartiallyTangible)) ((?WHAT . #$InanimateThing)) ((?WHAT .
#$InanimateThing-NonNatural)) ((?WHAT . #$Thing)) ((?WHAT .
#$Individual)) ((?WHAT . #$T
<Cyn> emporalThing)) ((?WHAT . #$Artifact-Generic)) ((?WHAT .
#$Artifact)) ((?WHAT . #$Weapon)) ((?WHAT . #$Gun)) ((?WHAT .
#$Gun-Portable)) ((?WHAT . #$Handgun)) ((?WHAT . #$Pistol)))
<Cyn> ((?WHAT . #$PartiallyIntangible)) ((?WHAT . #$Intangible))
((?WHAT . #$MathematicalOrComputationalThing)) ((?WHAT .
#$MathematicalThing)) ((?WHAT . #$Thing)) ((?WHAT .
#$SetOrCollection)) ((?WHAT . #$Collection)) ((?WHAT .
#$FirstOrderCollection)) ((?WHAT
<Cyn> . #$StuffType)) ((?WHAT . #$TemporalStuffType)) ((?WHAT .
#$ExistingObjectType)))
<kinoc2> name some pistol
<Cyn> Pistol-9mm
<kinoc2> is a Pistol-9mm a weapon
<Cyn> Right. I beleive that.
<kinoc2> why is that ?
<Cyn> "pistol - 9mm" is a kind of "pistol" . "pistol" is a
kind of "handgun" . "handgun" is a kind of "gun - portable" .
"gun - portable" is a kind of "gun" . "gun" is a kind of
"weapon" .
<kinoc2> is a dog a person ?
<Cyn> No. I can't prove that.
<kinoc2> explain why dog is not person
<Cyn> "dog" is a kind of "domesticated animals" .
"domesticated animals" is a kind of "non-human animal" .
"non-human animal" is disjoint with "person" .

<kinoc2> explain why car is not plant
<Cyn> "car" is a kind of "motor vehicle" . "motor vehicle"
is a kind of "land vehicle" . "land vehicle" is a kind of
"transportation device" . "transportation device" is disjoint
with "naturally-occurring substance" . "plant material" is a
kind of "naturally-occurring substance" . "plant" is a kind of
"plant material" .