The engine's brain
dbacl is a text classifier. It reads words and builds a probability model
from their frequencies. It can also look at pairs of words, triples, etc. up
to 7. The tokens it looks at can be up to 30 characters long. These limitations
are technical and would take too long to explain, but are useful to know up front.
What happens when dbacl classifies a text is that it computes the
probability of seeing the text naturally occurring under the
model. This is how spam filtering works: we build two models, one for
spam and one for good emails, and then dbacl checks which model
probability is higher for every incoming email.
Before we go on,
make sure that dbacl is available. You'll need version 1.11 at least, so
the easiest way is to download the program from its homepage. Place the
dbacl-1.11.tar.gz file in your chess directory.
% cd ..
% tar xfz dbacl-1.11.tar.gz
% mv dbacl-1.11 dbacl
% cd dbacl
% ./configure && make && make check
% cd ..
(Note: some people have reported problems compiling dbacl if they don't have
flex or yacc packages available on their systems.)
For chess, we first want to learn a model from many, many games. But
then what? If we play an actual game, we'll end up with another piece
of text that looks like the game above, but it will be incomplete. And
we want dbacl to choose each move for the side it plays.
Now dbacl doesn't know the rules of chess, in fact anybody would be
hard pressed to recognize that the text above is actually a game
played on a board with wooden or plastic pieces. Anybody who has never
heard of PGN of course.
What dbacl can do is choose. So here's what we will do: we
take an incomplete game, and we add one extra (half) move at the end ourselves.
We repeat this for all possible legal moves at that point. We'll get
nearly identical partial games whose only difference is the last expression.
We'll ask dbacl to work out the probabilities of each partial game under
its model. And then we'll pick the most likely partial game.