Original Summer-of-Code Proposal for FAQBot
The goal of the project is to create a framework for developing chat bots that can be configured to to diagnose and answer questions of any type (FAQ) through a website, through an XWiki page, on a mailing list, and in chat programs (IRC, AIM, etc). It will be able to converse with clients using natural language to resolve issues. As a practical application, the bot will be tightly integrated with the XWiki project to provide such FAQ functionality. Thus, there will be generic FAQ functionality in addition to XWiki specific functionality.
In addition, the framework will be designed to be easily extensible; that is, the bot will be able to "learn" from its success by querying users for suggested "good" responses. It will be able to generate AIML files to extend its grammar. Thus, when issues come up that the bot is unable to resolve, a community of users can work to extend the bot's knowledge base.
*Provides a way to organize valuable technical information
*Makes it easier for users to learn new software
*Dynamic, targeted help to resolve issues
The project will consist of a set of generic AIML files implementing basic FAQ functionality for the XWiki project, an XWiki application providing a user interface and driver engine for an XWiki chatbot, and a learning engine for extending the bot's available responses. It will make use of the freely available ALICE AIML set, as well as the Program D AIML interpreter and associated chat listeners.
The core of the project is a set of AIML files implementing the FAQbot's chat functionality. These files can be created directly or produced by a macro which processes XWiki pages (i.e., an FAQ page). The AIML set is loaded into an AIML interpreter by the FAQbot engine. The engine acts as a relay between the XWiki user interface and the interpreter proper, passing questions to the interpreter and reporting back with the proper responses. Finally, the learning engine takes input from users when they suggest new questions and answers. It generates a User AIML file with these new questions, which will then be loaded by the faqbot for future queries. The learning engine can be configured to report changes to a botmaster or mailing list, so that the new questions can eventually be incorporated into the core AIML set.
Please see the above architecture diagram for the faqbot project
Deliverables: (divided into generic and XWiki components)
#A set of AIML files implementing XWiki specific FAQ functionality for an ALICE-like chatterbot
#A learning engine which processes new FAQ entries into a User AIML set
#Documentation on bot configuration and usage
#XWiki macros to tag XWiki pages for conversion to AIML
#Macros to convert AIML sets into XWiki pages and vice versa
#An XWiki application consisting of:
#A user interface for the bot, composed of XWiki pages
#An engine to load XWiki pages as AIML, pass input to an AIML interpreter, and relay the responses to the interface
#Development framework: automated build and test system using Ant and JUnit
#Documentation for source code (javadoc)
I will use the Maven package to automate software builds, and the JUnit testing framework to set up automated test cases.
Access to the source code will be made available through SVN.
FAQs are the one of the most expedient ways to provide useful information about a piece of software. Yet the text-based, question and answer style is often poorly organized, making it difficult to find a solution to a technical issue. Worse, the information needed to resolve a specific problem is often scattered between multiple questions or pages, making it a hassle for the user to read through the entire document to assemble and apply the proper knowledge.
It is also true that people do not always check the FAQ. This could be because it is old and out of date, because it is difficult to find, or because people prefer being able to ask specific questions of another person--an expert can give directed advice quickly and intelligently, whereas webpages can be clunky, bloated, and confusing. Thus, a significant percentage of the activity on mailing lists and forums consist of new users asking questions that might be addressed easily in an FAQ. Ironically, such traffic clutters up information-containing pages further and encourages more bloat as users to bypass FAQs and repeat questions.
Enter the TEQUILAbot. TEQUILAbot will replace a standard FAQ by providing a natural language interface through which it will be able to answer common questions about software, or anything else that requires an FAQ. At first, it will be able to answer and address simple technical issues (i.e., FAQ questions) for the XWiki project in natural language. However, the project will also include the development of a framework for building generic, extensible bots able to deliver FAQ-like functionality for any piece of software.
A chatbot helps address many of the weaknesses of the traditional FAQ. Because the chatbot provides a natural language interface for its contents, it requires the botmaster to develop an efficient structure for organizing information, allowing a greater breadth of topics to be addressed. It also allows more in-depth descriptions to be used, because people do not have to search through a giant document to find the answers to their specific question. Because it is extensible it can quickly grow to become a powerful troubleshooter as holes are identified and more experienced users add solutions to previously undescribed problems. This project could be very effective when applied to open source development, as an enthusiastic community of users will be invaluable for maintaining and extending a FAQbot for a project.
ALICE and AIML
ALICE is an award winning chatbot. It attempts to develop software which will allow computers to converse in natural language with human-like intelligence. (http://www.alicebot.org) This is achieved in part through AIML, the Artificial Intelligence Markup Language, an XML-based markup language for defining the rules on which ALICE's grammar is based. The specification for AIML 1.0.1 is available at (http://www.alicebot.org/TR/2001/WD-aiml/)
I will be using Program D, a Java-based implementation of the standard AIML interpreter. Program D and related chat-listeners is available at http://aitools.org/
I have chosen to integrate the bot with the XWiki project because of the ease with which people can edit XWiki content. A wiki allows documents and webpages to be created collaboratively by many people, using simple web browsers. Allowing the bot to be extended through XWiki pages makes it easy for a large number of people to work together to improve an FAQbot.
I chose to create specific FAQ files for XWiki because I must learn to use the software anyway, and I would be able to use my own learning experiences to improve the final product. XWiki is freely available at http://www.xwiki.org