About Introduction Design Goals Tutorials Downloads

Introduction

(by Gary Dubuque)

While using the AliCE program written by Jacco Bikker which was developed (I think) from the AliceC version of the AIML engine, I became frustrated with its bad habit of locking up my Pocket PC. Furthermore I didn't like the way it wrote the conversation over the top of the input buttons. So first I rewrote it take input from a textbox in a dialog and display the conversation scrolling down a multi-line textbox. I was able to at least begin to hold a discussion with the machine.

I soon grew impatient to add to the list of responses. But AliCE had no editor. In fact, it did not even have a way of using AIML which is what I supposed it was based on. So I added the learn function and became immersed in the world of AIML. I discovered there are several versions with the latest standard being 1.01. So I set about upgrading the database in AliCE to become compliant with the last published language documentation.

In the course of this research, I had the opportunity to load various AIML sets that were available from the www.alicebot.org website. I had to get an emacs editor to read them because the Windows notepad would not correctly interpret the linefeeds. Of course, I got ALICE Program-D to try the AIML out on my desktop. I wanted to be able to edit the categories right at the Pocket PC. So then I decided that I needed an ASCII text editor that could look at the AIML when I was using it "out in the wild". Thus the notepad paradigm was adopted.

I had to fix the AIML engine to run the test suite I found on the alicebot website. I found that some of my test cases weren't correct. Finally I tracked it down to the spell checker that was replacing my words with ones that best matching in its dictionary. The spell checking had to go. Soon I was compliant down to only one main exception. I didn't have a Javascript parser in my program. I did have a text editor which also served as the I/O for my chatbot. I had replaced the targeting so I could see the results of the matching processes. As I considered adding more exits to the standard <system> hook, I made my big plunge. I would add my own script language in a pared-down version in place of the Javascript. Because it is non-standard, I just called it the <script> tag. (After all, I'm betting that is how the Javascript tag was invented in the first place – since the system tag probably already existed.)

I have an old script language I created about twenty years ago. It was designed to do interviews. Originally I was using it to gather information for a free dating service. I have taken out most of the fancy processing for interviews and added some options for manipulating the text editor and the AIML engine. While it is still experimental, I believe it can be used to dynamically create new AIML categories during the chat. I can get away with this because the editor is a stand-alone application with only the botmaster shaping the conversation. Perhaps this tool can be used to build that friend of your very own, like training a pet.


About Introduction Design Goals Tutorials Downloads