Copyright (c) 2001-2004 Greg Leedberg
Sections in bold have been updated since version 4.0.
The BILLY software is an attempt to simulate human intelligence and language. To accomplish this goal, the BILLY software is capable of learning. The software uses many learning models to simulate intelligence, and all of these models involve storing data it has seen used by the humans it interacts with. Much of this stored data will eventually be used by the software to generate intelligent responses. Upon initialization, the BILLY software contains no objectionable material. However, the author, Greg Leedberg, cannot be held responsible for any material stored in the software's files after initialization, or any offensive responses generated by the learned data.
Once upon a time, computers were a fascinating technology. They were unknown, filled with potential, and we knew they would be a part of humanity's future, but not quite how. Nowadays, computers have become commodities. Tools. They're everywhere, everyone has one, and there's little "magic" left.
Except for some people. Except for me. Computers are far from being unknown to me, but their potential power, and their "magic", fascinates me. There is so much power in the common desktop computer, it must be capable of more than word processing term papers.
A computer is immensely powerful... but can it think? Can the power of a computer be harnessed in a way such that it could be transformed into an intelligent being? A being you can have a conversation with? A being you can get to know -- that can get to know you?
My dream, is "yes." That's where Billy comes in. For the past several years, I have been developing Billy with the hope of achieving the potential I just described. This version of Billy is my latest effort in that vein. Is he there just yet? Probably not. But Billy can still be quite fun to talk to, and some of the things he comes up with to say can be surprisingly creative. I hope that Billy is glimpse of good things to come from computers.
And if nothing else, I hope that talking to Billy brings back some of the magic people once felt when they thought about computers.
To run Billy, simply go to your Programs menu, click on the "Billy" folder, and click on the "Billy" program.
Once Billy is loaded, using the program is merely the exercise of carrying on a conversation with the artificial intelligence it contains. Talk to Billy like you would a human (or, at least, a not-so-intelligent human). You'll get the best results if you answer the questions that are asked of you, and don't try to trick or "outsmart" Billy.
When you're done chatting, just type "bye", or close the program. You will be prompted to save a transcript of the chat, which is described in section 5.
No it's not. Maybe you just don't understand the mystery that is Billy. At any rate, if you want to uninstall Billy, simply go to Control Panel, Add/Remove Programs, and Billy 4.1 should be in that list. Just click on this program, and then click the "Remove" button. He'll miss the long conversations with you, I guarantee it.
Eventually, you will have a conversation with Billy that is amazing simply because of how smart he sounds (hopefully).
Or, you'll eventually have a conversation where you just can't believe how unintelligible something he said is.
Either way, you can savor the memories of times spent talking with Billy by saving the chat transcripts. You can do this for the current conversation by clicking on File, and then Save Transcript. Additionally, anytime the conversation is about to disappear (for instance, if you are quitting the program), you will be prompted to save the transcript if you haven't already.
Transcripts are saved in plain-text files (.TXT), which can be viewed using pretty much any text editor / word processor (such as Notepad).
When you select a file to save the transcript to, you can either choose a new file, or you can select an existing file. If you select an existing file, the current conversation will be added to the end of that transcript.
Billy makes use of "mind files" to store his memory. To just sit and talk to Billy, it
is not necessary to have any understanding of what mind files are or how they work.
However, to get the most out of the Billy experience, you should at some point acquaint
yourself with the concept of mind files.
Mind files are, simply, the files which contain all of Billy's knowledge, language,
and personality. The Billy program contains the actual artificial intelligence
algorithms for learning these things and putting them all together in order to
generate a response. A mind file is composed of several "memory banks" for things
such as vocabulary, sentence templates, words of various parts of speech,
a "knowledge web" of facts, and things he has learned about the various people
he has talked to.
When you talk to Billy, everything you say is analyzed, picked apart, and,
eventually, inserted in some form into one or more memory banks. This means that
although Billy comes with a mind file developed by me, after talking to you for long
enough, that mind file will take on a personality of its own.
Which brings us to the point of mind files. Different mind files can contain
different personalities. Just talking to two mind files in different ways can
produce two mind files with different personalities. And of course, mind files can
be "hand-crafted" with the express purpose of having certain personalities, as
you will learn about future sections.
Well, Billy 4.1 comes supplied with one mind file, which we'll call the default
mind file. After talking to you a while, this mind file will become less generic,
and start to take on a personality of its own. You can also use the Billy program
to produce new mind files -- either more "default" ones which can be trained
differently, or minds made with more precision by you.
You can trade these mind files with friends. The mind file contains all of that
mind's knowledge, and so other people can "load" that mind and get the same
personality as what you have been talking to. Besides trading mind files with
friends, there are also several websites online which specialize in the creation
and distribution of custom mind files. You can find a list of some of these
sites by visiting the
Greg Leedberg Software Creations
website, and going to the "Links" section. 6.1. What Are They?
6.2. Where Do Mind Files Come From?
If you have a mind file you wish you load, all you need to do is click on File, and then Load Mind. You will be presented with an "Open File" dialog in which you should find the file.
You will get the best results if you're opening mind files which were explicitly created for Billy 4.0/4.1. However, if you have, or find, mind files which were created for Billy 3.x, these can be opened with Billy 4.1. Since these older files do not contain all of the memory banks of those for Billy 4, Billy 4 needs to "emulate" those missing parts of the mind file, which means that parts of the conversation may be inconsistent with the intended personality for that mind file. However, this is safe and does not harm the mind file. You will be alerted if you are opening an older mind file.
Once a mind file is loaded, whether it is the default mind or a custom one, there are various
methods available which allow you to customize the mind to your liking. You can customize
the currently loaded mind by clicking on Customize, and then This Mind.
The most direct way to customize a mind is to alter the various basic attributes
of the mind file. You can accomplish this by clicking on Customize, This Mind,
then Attributes. These attributes include:
8.1.The Basic Attributes
These are used through conversation. They are mostly self-explainable, with the
possible exception of Relationship type and Relationship name. Billy is able to
know that he has one relationship, with one person. This relationship can be
a girlfriend, a friend, a brother, a sister, and so on. The default is that he
has a girlfriend named Daisy. So, the Relationship type would be "girlfriend"
and the Relationship name would be "Daisy".
At some point in time, you may wish to clear Billy's memory of everything he has picked up from you, and restore the mind file to the state it was in when you first got it. That is what Initializing does. You can initialize the current mind file by clicking on Customize, This Mind, then Initialize.
It is possible to take a plain text file (.txt) and have Billy rapidly gain knowledge from what is contained in that file. This is called "teaching". You can perform this on the current mind file by clicking on Customize, This Mind, then Teach.
Note that this can only be performed on plain text files. Not HTML files, not Word files, and so forth. If you're not sure, open the file in Notepad. If it's readable there, then it's fine. Some programs, such as Word, can create plain text files by using File | Save As and selecting Text File in the drop-down list.
The Billy program allows you to be creative by letting you create your very own mind files, each of which can have its own personality. There are two ways to create mind files, one which is easier and one which is harder, but the harder one gives you more control over the mind you are creating.
Simple Mode is called such because it is, well, simple. By clicking on File, New mind, Simple Mode, you will be prompted to enter a file name. This is the name of the mind file you wish to create. When the mind file is created, it is simply a copy of the original, default Billy mind file. You can then load this mind file, customize the various attributes for it (as discussed earlier), talk to it and/or teach it, and end up with a completely new, custom personality.
Unlike Simple Mode, Advanced Mode actually gives you total control over each of the "memory banks" that exist within Billy's mind file. This is more work on your part, but can lead to much more personalized mind file.
The actual process of creating these memory banks is beyond the scope of this document, but you can learn about the process more in-depth by reading this document.
The general idea is, using what you learn in the Create document, make all of the memory banks in separate files, using their correct names, as given in that document. Put all of these files in a directory, and make sure that the only files in that directory are the memory bank files you want to use to make your mind file. Then, click on File, New mind, Advanced Mode, and navigate to the directory and click "OK". The mind file will be created with the name "new.mnd" in that directory. You can then rename that file and load it. Congratulations!
By clicking on Customize, Program Settings, you will be able to alter settings having to do with the general Billy program.
This setting allows you to change which mind file is loaded by default when the Billy program is loaded. This is also the mind file which will be used in Link Mode, which is discussed below.
These settings allow you to change the color of Billy's text, or the color of your own text. You may select any of the pre-defined colors from the drop-down list.
Have you ever wondered what would happen if two Billies starting talking to each other? What would they talk about? Maybe they'd talk about you. Aren't you just a little curious about what they would say about you?
Enter Link Mode. Link Mode allows you to link two or more copies of Billy together for a computer-only conversation. This is made possible by something I developed called UDLP2 - Universal Dynamic Link Protocol v2. This protocol allows any bots that support it to talk to each other using a "mediator" program called the Link Shell. The requirements for doing this are:
What an age we live in.
Half the fun of Billy is discovering what sorts of things he knows how to talk about. In this section, I thought I'd give some pointers on some neat things he can do that you might not find out on your own.
If Billy says something really stupid -- not that he will -- you can say "Don't
say that" and he will attempt to not say that again. This is by no means a
guarantee that he will always avoid that sentence. But he will try his hardest. If Billy uses a word as a noun which you, in your supreme intelligence, know is not
a noun, you can say "[blank] is not a noun" and he will unlearn it. For now.
For instance, saying "Blue is not a noun" would cause Billy to un-learn "blue" as
a noun, if he had accidentally thought it was. Billy is surprisingly good at math. He probably wouldn't pass college-level
multidimensional calculus -- but to be fair, neither would most people!
Billy would, however, totally ace any arithmetic class you threw at him.
To give his math a test, just ask any arithmetic question involving
addition, subtraction, multiplication, division, exponents, and any level of
parentheses. For instance, you could say "What is 1+1?", and we can all hold our
breaths and hope that Billy will say "2". Billy is designed to be able to learn facts from you, and then to be able to answer
questions based on those facts. So, if you told Billy that "Greg Leedberg is one
heck of a nice guy", and then you asked him, "Who is a nice guy?", he would say, of
course, "Greg Leedberg is one heck of a nice guy." Because why would Billy lie? Rather than just asking specific questions, you can also ask Billy to tell you
everything he knows about a certain subject. This is accomplished by saying
"Tell me about", followed by subject you've taught him about. So, you could say
"Tell me about cars" and Billy would tell you everything you've taught him about
cars. I've gone to great lengths to try and make sure Billy is bug-free. However, as we
all know, there's no such thing as a program without bugs, only a program with
bugs that haven't been found yet. So, you may very well find bugs in Billy. If you
do, feel free to e-mail me at
greg@leedberg.com, and I will do my best
to fix it for the next release of Billy. I'm with you. [Linux | MacOS | BSD | puppies] are great. Unfortunately, each
operating system has its own quirks, and porting a program as huge as Billy (~10,000
lines of code) is not a trivial task. However, Billy 4 was designed from the ground
up with porting in mind, meaning that within Billy there is a strong separation
between the core logic and the interface. This makes porting not trivial, but also
not brain surgery. I'm not committing to anything here, but you may very well see a
version of Billy for another operating system at some point in the future. Maybe. Suggest it to me at greg@leedberg.com
and we'll see. I like building Billy around user suggestions because, after all, it
is all of you who are using Billy. No. Billy 4 has been written entirely in C++. Billy 4 was mostly written using Microsoft Visual Studio .NET 2003, but some older parts were written using Vim and Borland C++
Builder 5, and some other parts were written under Red Hat Linux 9 using Vim and
GCC. For Billy 4, not right now. However, I have the source code to select older versions
of Billy available on my website, and more will become available over time. Including, eventually, this version. Not directly. I just enjoy doing it. However, people are welcome to make donations
at my website if they feel so inclined. And selling ads on my website has brought in
a small amount of money, but not nearly enough to cover the costs incurred in the
development of this program. So, donations are welcome ;-) Billy is an ongoing project for me, and new versions will be released periodically. You
can always find the newest version at the
Greg Leedberg Software Creations
website.
Special thanks to Leslie Cantin, Kristin Kane, and Rich Mohrmann for help with testing of Billy 4 and proofreading of the manual.
Special thanks to Jim, a Billy user, for helping to grow the noun memory bank.
Billy 4 is dedicated in loving memory of
Rita T. Marquis
12.1. "Don't say that"
12.2. "[blank] is not a noun"
12.3. Billy's Good At Math
12.4. Knowledge Base
13. Are There Any Questions?
13.1. The program crashed. What do you have to say for yourself, Greg?
13.2. Are you going to make Billy for any operating system other Windows? I love
[Linux | MacOS | BSD | puppies] !
13.3. Will you please add feature X?
13.4. What about... an animated face for Billy?
13.5. What language was Billy written in?
13.6. Can I see the source code to Billy?
13.7. Do you make any money off of Billy?
14. Where To Get New Versions
15. Credits
Billy 4.1 was created, designed, and programmed by
Greg Leedberg16. Revision History
BILLY 4.1 - (1-18-2004)
BILLY 4.0 - (9-14-2003)
In addition to these subsystems, there are many improvements throughout the Billy program.
BILLY v3.11 - (6-28-2001)
BILLY v3.1 - (2-11-2001)
BILLY v3.0 - (1/1/2001)
BILLY v2.21 - (6/18/2000)
BILLY v2.2 - (5/19/2000)
BILLY v2.11 - (2/14/2000)
BILLY v2.1 - (1/30/2000)
BILLY v2.0.1 - (12/26/1999)
BILLY v2.0 - (12/21/1999)
BILLY v1.0 - (~1994)