The Billy Project

In Pursuit of Artificial Intelligence


Overview | Downloads | Manual FAQ Screenshots History Donate |

Join the mailing list!

To view the archives and statistics for the list,
go here.

The Billy Project mailing list is proud to be hosted by Topica

Latest news

November 4, 2005 - Updated the Links page. Namely, added a link to an article at ComputorEdge about Billy and Daisy, and updated the link to the online Billy.

January 18, 2004 - Released Billy 4.1. Several new features have been added, and many bugs have been fixed. Download it, or check out the release notes. Also, if you are upgrading from 4.0, check out the new FAQ.



Billy is developed by Gregory G. Leedberg. If you have any suggestions, questions, or comments, feel free to send it to me.

Revision History

BILLY 4.1 - (1-18-2004)

  • Features added
    • Billy now evaluates math expressions with a limited amount of natural language (such as, "one plus one"). Namely, numbers one through twenty, and operators "plus", "minus", and "times".
    • You can now change the color of the user or bot text.
    • Added the "tell me about" natural language command.
    • Now there are over 2,000 nouns in the default mind file (previously there were ~500).
  • Bugs fixed
    • The math subsystem will no longer evaluate expressions with just one term.
    • There several small bugs relating to Teach Mode which would often cause Billy to crash when you attempted to teach from a large file, or sometimes would cause a crash when loading a mind file which was taught from a large file. These bugs have been fixed.
    • Rather than having an Advanced menu on the Edit Mind dialog, the items in that menu (Teach, Initialize) have been moved to a sub-menu of Customize, This Mind in the main dialog
    • If Billy crashes during a UDLP2 conversation, there's a better chance now that he'll be able to start up again for the next regular conversation.
    • Fixed a bug where Billy would crash if you entered a blank line when asked your name.
    • Internally, Billy now appends a period to the end of any input sentence which lacks ending punctuation.
    • After loading a mind file, the first "User" prompt disappeared.

BILLY 4.0 - (9-14-2003)

  • Billy 4 is a revolutionary update to the Billy project. This new generation shares no source code at all with previous versions of Billy. It is the product of several separate research projects, all of which looked at discrete areas of artificial intelligence, and each of which have become a subsystem within Billy, much like the original Daisy research project became a part of Billy 3. The notable subsystems within Billy 4 are:
    • Natural Language Processing / Generation - This is Daisy 2. It is a complete re-working of the original Daisy technology. In this new generation, input language from humans is analyzed, and words are grouped together based on the context they tend to be used in. Templates are stored, which consist of sequences of groups, not actual words. The use of templates allows Billy to plug in words from the groups of that template. Once again, Billy is able to actually generate his own language, based on rules he has learned from natural language analysis. This system contains no pre-programmed language. In testing, this new NL system seemed to produce more natural-sounding language as compared to the original Daisy. When all else fails and Billy does not know how to respond to a sentence based on the mind file's rules, this subsystem includes a new technique for figuring out the best response. Billy analyzes conversations, and learns how humans tend to respond to certain stimuli, and then can base a "blind" response on what he has seen before.
    • Conversation fingerprinting - Billy is now able to more uniquely identify the person he is talking to, beyond a simple log-in type process. Facts can be stored about each person, and these facts can then be used in the future to identify people, even if they have the same name. An algorithm has been developed for narrowing the field of possible identities down, and figuring out the best questions to ask.
    • Knowledge base - Like previous versions, Billy 4 is able to learn facts from humans and then answer questions about those facts. Much more attention was given to this feature this time around, however. The new knowledge base is capable of learning many more facts than before. If the same algorithm for searching facts had been used, though, this great amount of data would have meant much slower responses when attempting to sort through all the facts to find an answer. So, new data structures and algorithms have been developed allowing for very quick searching of the knowledge base. Additionally, special care was taken to try and make the answers to questions more relevant than before.
    • Math evaluation - Billy 4 can answer basic arithmetic questions, using a specially-developed set of functions for expression evaluation. Any of the basic operations can be used, plus exponents, and any level of parenthesization. These functions are specially developed for use in a conversational setting, being able to strip out non-math, and determine if the given sentence is even a math question at all.
    • Context response - This is the more "traditional" part of Billy. It uses rules defined in the mind file to scan for certain contexts, and give certain responses back. The "black box" functioning of this system has remained basically the same since Billy 3, but internally the code is much more efficient. It is also more accurate when it comes to automatically identifying parts of speech in sentences.
    In addition to these subsystems, there are many improvements throughout the Billy program.
    • Many new contexts added to billy.mnd, and new responses added to old ones.
    • This is the first version of Billy to be a native Windows program, with a true Windows graphical interface.
    • By default, Billy 4 comes with far more knowledge of nouns, names, and adjectives. He has a default vocabulary of hundreds of words in each of those areas.
    • New HTML manual.
    • Transcript saving is now optional, rather than saving every transcript into an increasingly huge file.

BILLY v3.11 - (6-28-2001)

  • Rarely discovered bug fixed: executable (BILLY.EXE) can now be renamed, and UDLP will be able to figure that out and run the new name.
  • Fixed problem of "###!!!###" sometimes showing up in Billy's responses (this was an internal flag, not intended to be used when talking to the user, that leaked through in some cases).

BILLY v3.1 - (2-11-2001)

  • New scripting flag allows Billy to reverse words like "my" and "your" in his responses, if they are taken from the user's input.
  • If you say, "You're a...", Billy won't respond with "You're a, too!" or the like. He recognizes that a noun follows and uses that.
  • An "[X]" has been added to the upper-right of most windows now. You can click on that X to cancel what you are currently doing without having to enter data. For instance, if you are changing Billy's name and click on this, his name will stay as what it was before.
  • Fixed bug that when just ENTER was pressed, global variables such as &botname and &username were not plugged in.
  • The "Create Mind" option now gives you COMPLETE control over the personality you are creating, through the Advanced mode option. You can import your own "memory banks", the formats for which are fully documented in CREATE.TXT.
  • "Don't say that" command added back in
  • "xxx is not a noun" now documented :)
  • Each mind file now has its own transcript file.
  • Billy's greetings are now stored in a memory bank, and so can be edited when you create a new mind.
  • Emoticons ("smileys") are now stored in their own memory bank rather than being hard-coded, so they can be modified in your own mind files.
  • If you want to start Billy with a mind file other than the default one, you can specify it from the command line (if you're using DOS) by putting the mind file name as a parameter. So, to load Billy with a mind file called "JILL.MND", you could type "billy jill.mnd".
  • Removed some awkward contexts ("Do you enjoy using a lot of words?") and added some new ones to BILLY.MND.
  • New TEACH.EXE utility allows you to "teach" Billy from a text file.
  • Added a Table of Contents to the manual.
  • Even though 3.1 adds a number of new memory banks, it can still load mind files created with 3.0 by "emulating" the missing memory banks.
  • If the default mind file is missing, Billy looks for BILLY.MND (if that isn't the default file) before suggesting running INIT.EXE.
  • Added the "-mouseoff" option for disabling mouse support, as well the ability to use slash commands (in the event that you disable the mouse).
  • Billy now can see that a name refers to a person (and can learn new names to look for).
  • Now remembers topics of conversation in between conversations. This also allows for subject-tracking during link mode.
  • Billy now attempts to not repeat sentences he's already said in a conversation. Note the use of the word "attempts".
  • Billy will now never simply repeat what you said, except in very extreme cases (like if that's the only thing he knows how to say).
  • Whoa, one bug in 3.0 I didn't catch until now is that Billy actually recorded transcripts for linked conversations in his own transcript file... and each line of the conversation was treated like a separate chat, header and all. Now, when you combine this with TEACH, feeding Billy hundreds of lines of text through UDLP2... uh oh...
  • Fixed a bug that caused some sentences with reversed pronnouns to not have punctuation. Sound odd? It was.
  • Fixed a nasty general fault protection (error 216) problem that only happened under a very strange circumstance, but did so just enough to annoy the heck out of me.

BILLY v3.0 - (1/1/2001)

  • A complete rewrite of the Billy code, the 3.x generation takes a dual-system approach to natural language generation and processing. One subsystem of Billy 3 uses a similar ideology as that of Billy 2. This system takes user input and breaks it down to individual words, and is able to identify certain parts of language. It then uses this knowledge to try and generate a set of pre-defined keywords that should be included in the final response. These keywords are then given to the second subsystem. This system is based on a vastly improved and sped-up version of the DAISY technology, and is able to analyze everything that has ever been said to Billy, and so can synthesize a "free-form" sentence of its own creation which contains the keywords and has a high probability of being grammatically and contextually intelligent. Other improvements include an ability to stay on subject during conversation, and an enhanced system for answering questions and learning facts. This generation of Billy also introduces the concept of "mind files" -- individual files which contain all of the knowledge, language, and personality of a particular AI construct and so can be easily transferred to other users of Billy via the internet or disk. This is also the first Billy to use a mouse-driven interface.

BILLY v2.21 - (6/18/2000)

  • Fixed bug that caused transcript file to record only Billy's statements, not yours. Oops!
  • Now that I have a new e-mail address, changes have been made in this file.

BILLY v2.2 - (5/19/2000)

  • New "Tell me about..." command allows you to have Billy tell you everything he has been taught about a subject.
  • Direct and reverse associations are now stored separately in Billy's memory. So, they can also be independently removed. What are direct and reverse assocations? For the statement "The sky is blue", the direct association is that Sky is defined by the word "blue." The reverse association is that the blue is defined by the word "sky." The reverse association is not always true, so now it cane be removed without disrupting the direct.
  • Associations can now be removed with "Don't say that" in addition to saying "[Blah] is not [blah]."
  • Billy has a new routine for typing which is more human-like (it's the same one used in DAISY).
  • Added the ability for the user to change Billy's name.
  • Crashes less often now. If an error occurs, Billy tries to fix the problem.
  • Fixed problem with intro facts not having pronouns reversed.
  • Fixed problem with intro facts sender data not always being correct. ("[Someone] told me that...")
  • Link Mode uses my newly developed UDLP2 standard. I moved to this new standard because it allows for the chat bots to take up more memory (my latest bot, Daisy, took up more memory than the old UDLP1 allowed). Now, Link Mode is initiated through an external UDLP2 Shell. Other advantages of UDLP2 are that conversations can go as long as you want them to (until you hit a key), and the bots' actual names are used, rather than HOST and VISITOR.
  • Varius new contexts added, and some new responses added for old ones.

BILLY v2.11 - (2/14/2000)

  • Fixed bug that caused Billy to say "You's" instead of "Your" when answering knowledge web related questions.

BILLY v2.1 - (1/30/2000)

  • Rewrote the link mode, now uses UDLP (Universal Dynamic Link Protocol).
  • Billy now remembers who told him facts.
  • Now knows the day of the week and the part of the day, which can be used in the intro or when leaving.
  • Intro text now slightly more variable -- if Billy has been told something about you, he'll say that.
  • No longer gives milliseconds when asked for the time.
  • In addition to learning nouns, Billy now also learns the sentence in which they were used, and is able to plug other nouns into those sentences in the future.
  • Occassionally adds a smiley face to sentences.
  • In addition to recognizing adjectives, Billy can recognize modifiers.
  • Parsing engine has been partially re-written, it is now slightly more accurate and efficient.
  • When taught facts, can now reverse words like YOU and YOUR when the fact is repeated by Billy. ("GREG IS YOUR PROGRAMMER", => "GREG IS MY PROGRAMMER")
  • Can change pronouns, such as changing HE to HIM, when neccessary.
  • User can now customize colors.
  • Whole lot of various new responses added, for both old and new contexts. Some awkward ones removed ("Sweet deal!").

BILLY v2.0.1 - (12/26/1999)

  • Fixed a bug which caused Billy to crash with a "Division by zero" runtime error on some processors. Also fixed a glitch that caused Billy to start for the first time with a "blank" name in his list of people he knows. There was also a typo, which has been corrected.

BILLY v2.0 - (12/21/1999)

  • The 2.x generation, rather than only looking at complete sentences, breaks the sentences into individual words, and generates a response based on the words it finds. Unlike other keyword-based NLPs, Billy 2.x is able to also learn from its conversations. It can learn complete sentences, individual words, as well as how to respond to certain phrases, using humans as "models". It also maintains a "knowledge web" of facts it learns from the user, which it can then use to answer questions.

BILLY v1.0 - (~1994)

  • The first generation of Billy recognized only complete sentences that were preprogrammed into it. Any other sentence generated a random response of about 4 preprogrammed responses. Billy v1.0 was so dumb his I.Q. test came back negative... :)