The Corby Home page
Corby is a
Windows application that implements an intelligent conversation robot. Its most
distinctive features are its ability to learn and its language independence.
Welcome to the Corby home page.
Original Articles
What is (Artificial)
Intelligence?
Corby is a
release of Future Algorithms.
Corby is an
intelligent conversation robot that simulates human verbal behaviour. It is
based on a very simple stimulus-response model. The stimulus consists in a
statement provided by the user, which causes Corby to provide an appropriate
response.
Corby
learns from the normal interaction with its users. The basic learning model
uses a pair of paragraphs where one of them constitutes the stimulus and the
other is the appropriate response to that stimulus. This can be done
automatically during normal system use; in this case Corby will consider any
statement input by the user as the appropriate response to its previous
production. You can also submit text or HTML files for Corby to learn from, in
an autonomous way.
Everything that Corby knows about the world is
stored in the knowledge base. When you say something to Corby, the first thing
it does is to parse your input into the appropriate knowledge structures and
then store the result in the knowledge base in the form of links between
knowledge elements. Therefore, the knowledge base contains, among other things,
Corby’s world model, which it uses to build responses to your questions.
Corby’s
ability to find a response to an arbitrary statement can be used to write a
file where each paragraph is the response to the previous one. This facility
uses, basically, the same mechanism that is used for interactive mode. You can
either use a set of keywords to bootstrap the process or use a template.
Corby is
based on the following definition of intelligence:
Intelligence
is the ability to discover the rules that govern the relationships between
elements of the environment.
For an
explanation of this definition see the article What is (Artificial)
Intelligence?.
As you can
infer from the above definition, Corby represents a back to basics approach to
Artificial Intelligence; that definition depicts intelligence essentially as a
prediction tool. In this particular application, the environment contains only
the elements of the target language: These are the elements whose relationships
Corby must determine, in order to later discover the rules behind them. On the
other hand, this process is generic enough that it can be applied to aspects of
intelligent activity, other than language processing. For this reason, the part
of the Corby software that deals specifically with Artificial Intelligence
issues was put together in a static library. The library is called The Corby AI engine.
You can use it to build your own version of a chatbot or some other Artificial
Intelligence application.
Corby’s
design tried to avoid, as much as possible to use solutions that we already
know do not work. Therefore, it provides innovative solutions to the usual
problems in Artificial Intelligence: Learning, abstraction, inference,
conceptualisation, knowledge representation and world models. But its most
important contribution to the field is in the area of semantics, one of the
thorniest problems in Artificial Intelligence. If you want to learn how Corby
is able to understand what people say, take a look at the Learning Page,
which is part of the Operation
Manual.
Corby’s
architecture is a mixture of the symbolic and connectionist approaches to
Artificial Intelligence. It is true that the symbolic approach is much
discredited nowadays, to the point that many people blame it for the lack of
progress in the field. Fortunately, Corby is able to overcome one of the major
problems that plague most of the programs of this type existing nowadays: They
rely on the ability of the programmer to understand the language they deal
with. Instead, Corby uses algorithms that enable it to simulate that
understanding.
The most
important consideration that presided the design of the Corby application was
biological plausibility. If some feature were not present in living intelligent
organisms, it would be rejected. Conversely, if some feature, like for instance
the ability to learn were common to all living intelligent organisms it would
be included. The language independence feature is also the result of the fact
that human beings can learn any language. At some crossroads in the design path
the question would arise: Is this algorithm compatible with the human brain
with its simple, slow processors working in parallel by the millions? If the
answer was no, then the algorithm would be abandoned and replaced by another,
best suited to the human brain. However, the objective of the program is not to
emulate biological brains, it tries only to simulate some aspects of their
external behaviour.
To see some
examples that show how Corby can be trained to understand what people say go to
the Examples page.
For a list
of the most frequently asked questions and respective answers regarding
Artificial Intelligence in general and Corby in particular go to the Frequently Asked Questions
page.
This site
includes some original articles that constitute the theoretical foundation that
presided the development of the Corby application. They are available at:
What is (Artificial)
Intelligence?
The Corby
application is free for all non-commercial uses. To get yourself a copy of the
current version of Corby including the executable, auxiliary files and
documentation, go to:
At the
download page you will also find instructions for installing and uninstalling
the program on your system.
CAUTION The Corby distribution package doesn’t include
a knowledge base. Therefore, the first time that you use the application you will
get a warning to that effect. Also to use Corby, you must teach it the
appropriate responses to your input. Take a look at the Learning Page for
specific instructions on how to do that.
If you
already know the program and you just want to know what is new in the latest
version you can take a look at the Corby history.
To put it
bluntly, Corby is a resource hog. It takes up resources faster than you can
provide them, in terms of disk space and bandwidth but especially in terms of
memory and CPU time. Fortunately, it is possible to shift some of its
sub-processes to the background, so that you do not have to wait for a very
long time for a response from the system. It is also possible to trade CPU
power for quality: When the system is looking for the best response, it is
bound by a certain time to do it; if that time expires, then Corby returns the
best response it got so far, although this may not be the best one.
But most of
the resources are taken up by the learning process. Learning in Corby is done
mostly by background processes and takes a very long time. This should not come
as a surprise to you if you consider that it takes some 20 years for a human to
learn what he needs to start his productive life.
There are
also some processes, associated with housekeeping, that also run on the
background. These are kept asleep when the main process is interacting with the
user, so as not to consume resources, but they awake as soon as the main
process becomes idle. For this reason, if you decide to be a serious user of
Corby, you should consider leaving the application always running. You can do
so safely because although Corby is very demanding in terms of resources, it is
well behaved and will not interfere adversely with other applications.
For more
information about how to use resources effectively, take a look at the Resources Page,
which is part of the Operation
Manual.
Comments and suggestions about this page are welcome and should be sent
to fadevelop@clix.pt
Rev 1.1 - This page was last modified
2005-08-26 - Copyright © 2004-2005 A.C.Esteves