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:
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:
Visit http://www.daxtron.com/aiml.htm for
background on AIML.
Visit http://www.alicebot.org for details on
AIML. Look for the AIML tutorials.
Visit http://www.aimlpad.com for details of
Program N. Look for the Program N tutorials.
Visit http://www.opencyc.org for details on
OpenCyc. Look for the CycL tutorials.
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.