ai8ball was created by Rob Gonsalves.

The system was written in C# using ASP .NET 2.0 and MS SQL. The website was designed using free software from Microsoft with very long names, Visual Web Developer 2005 Express Edition and SQL Server Management Express

ai8ball works by parsing and filtering each question using the following algorithm:

Parsing

  1. Each word in the question is checked for common spelling errors using an SQL query. The list of mispelled words is from the Wikipedia
  2. The question is parsed using the Eric Brill's part of speech tagging algorithm. The c# port is by Mark Watson.

Filtering

  1. Keywords are detected by keeping nouns, verbs, adjectives, adverbs, and unknown words. All other words (articles, pronouns, etc.) are dropped.
  2. The keywords are looked up in Princeton's WordNet database and their synonym sets (synsets) are retrieved. Troy Simpson's WordNet .NET is used for MS SQL access.
  3. Unknown words are fed into a 32-bit cyclic redundant checksum (CRC32) algorithm to get a unique numeric value. This CRC code is from Sven Reifegerste

Neural Network

The system uses an artificial neural network with 32 inputs, 32 hidden values, and one output (yes or no). The neural network code is from Phil Brierley.

When a new question is asked, the question is parsed, filtered, and run through the neural net. The answer is presented as a yes or no with a degree of confidence.

Training Data

Answers to questions (yes or no) are tallied in the SQL database and used as training data for the neural network.

  1. The weights were initialized to random numbers.
  2. The system is trained on the answers to the users' questions.
  3. The backpropagation algorithm is then run numerous times to adjust the weights.

home - start - about - contact

© 2006 Rob Gonsalves