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.
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:
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.
Comments and suggestions about this page are welcome and should be sent to firstname.lastname@example.org
Rev 1.1 - This page was last modified 2005-08-26 - Copyright © 2004-2005 A.C.Esteves