A development "roadmap" for version three of AIMLBot can now be found on my homepage at http://ntoll.org/article/aimlbot-version-30-roadmap-and-other-projects (actually, its a list of aims and objectives but is a start).
This version fixes a rather serious bug that crept in the last version where the regular expression handling replacements would cause the bot to either time out or produce wrong paths for a search of the graphmaster.
In addition, generics are now used throughout the library so .NET 1.1. is no longer supported.
Finally, various new unit tests have been added to the Test project to cover the corner cases that identified the regex bug mentioned above and also check the bots handling of international alphabets.
This point release fixes a trivial (but commonly occurring) bug in the code that handles the random tag. Unfortunately it missed the 2.4 final release.
A bug-fix release.
Changes (in no particular order):
1. Fixed a bug that meant random and condition tags were not working correctly - they were recursively processing all the child nodes before processing themselves instead of processing themselves and then the result. This could cause the bot to get into an infinite loop (and thus time-out) or process predicates in the wrong way. This bug fix is also matched by new unit tests. Thanks to ebiztiger and ghostdogpr for reporting this problem.
2. The order of wildcard matches has been reversed in line with a more intuitive interpretation of the AIML standard and to match common practice. Thanks to Vauntie for pointing this problem out.
3. Replacements have been made more robust. You should be able to just specify "CU" and have it work as if it were " CU", "CU " and "CU" as a single word but not work in a word in which it is a constituent (like your "calCUlator"). Unfortunately, ALICE's own substitution files (the ones I supply with the code) include patterns that include spaces. The bot will now trim off outer white-space and I leave it up to the bot-master to make sure they write appropriate replacements. Thanks again to Vauntie for bringing this to my attention.
4. The bot handles settings and dictionary XML files in a more robust manner. Comments in the XML no longer trip it up! Thanks to ebiztiger for pointing this out to me.
5. Custom tags are no longer single instances. You get as many instances as there are tags encountered in the template. Kudos to Vauntie for giving me a kick to make this more robust.
6. Custom tags now take precedence over the built in tag-handling code so developers can implement their own versions of the standard AIML tags. Vauntie also kicked me into action on this feature.
7. The AIMLGui example application now has a quick load of AIML from settings in the configuration file and the ability to save and load session information (a user's predicate dictionary). These examples should answer bartvda and safifi's questions concerning the persistence of user information.
8. New tests have been added to the Test project suite to reflect the changes made.
9. A small amount of re-factoring has taken place to make the code more efficient.... read more
Fixed a bug where XML namespace and schema information caused the loading of AIML into the bot's memory to barf. The topic handling part of AIML loading has also been made more efficient. Kudos to Jimmy Wang for spotting this problem!
A minor release that solves the "shadowing" problem that might affect all AIML interpreters that generate normalized paths in a non-standard way (AIMLbot now reverts to strictly following the standard). The AIMLGUI example Windows project has also been updated to include voice synthesis so the bot literally talks to you (XP and Vista only).
This is mainly a minor feature enhancement and bug fix release.
Summary of changes:
1. The bot used to get the wild-card matches mixed up if processing more than one sentence. This is now fixed with the appropriate unit tests written and the other applications updated. A new class "SubRequest" now encapsulates a query to the Graphmaster and holds the wild-card matches.
2. The normalization process for applying changes is now fixed so it doesn't always return uppercase. The case of the normalized result should match that of the user's raw input plus any replacements. This means <star/> tags return exactly what the user inputted, rather than a capitalized version of it.
3. There is the potential that the bot could get into an infinite loop when processing the template tag, especially if it encountered a srai tag that ultimately led back to itself. This hole has now been plugged in two ways:
a) Each time an AIML tag is processed the request is checked to make sure it hasn't timed out.
b) When the srai class calls a sub-request with the new path the new request object has the same StartedOn value as the original request.
4. Made changes to the way the path for queries to the Graphmaster are dealt with. It is now "backwards": (topic <topic> that <that> User input). This should provide a slight increase in efficiency.
5. Added some new tests and code for stopping a bot from accepting user input (something that should happen should it be changing the graphmaster for example). Updated other projects to reflect these changes too.
6. Changed the behaviour of the default constructor in the "Bot" class. Removed the loading of config files from the constructor so you now have to call the loadSettings() method to load the configuration files.
7. Included a very simple Web-services based example application.
I am pleased to announce the release of version 2.0 of AIMLBot and the project's move to
AIMLBot (Program#) is a small, fast, standards-compliant yet easily customizable .NET dll implementation of an
AIML (Artificial Intelligence Markup Language) based chatter bot. AIMLBot has been tested on both Microsoft's runtime
environment and Mono.
This version boasts:
* Better cross-platform compatibility. Support for .NET 1.1, 2.0 and XNA as well as the open source MONO project (tested
under version 1.1). Testing on Windows Vista with version 3.0 of the .NET platform is pending.
* A completely new modular architecture to make it easier for developers to extend and add functionality.
* A simpler and more logical API.
* Standards compliant AIML support with the option for custom tags.
* Very small size (currently only 52k).
* Very fast (over 30,000 categories processed in under a second).
* Inclusion of a comprehensive test suite including over 200 unit tests (based upon nUnit).
* A means of saving the bot's “brain” as a binary file (Graphmaster.dat).
* Some simple code snippets and examples for developers to get started (simple windows and console based applications
as well as a sample custom tags library).
* Appropriately commented code.
* Comprehensive documentation.