It's time to conclude this investigation and see what we've learned. The
original question was "Can a spam filter play chess?". Clearly, the answer to
this is yes, but making it play well is not so easy.
A crucial aspect I haven't touched on here are chess tournaments. The only way to
reliably judge potential improvements in an engine is to make it play other engines
with known strengths. Not all types of tournaments are appropriate for the dbacl
chess engine - for example randomized initial positions and endgame puzzles are meaningless,
because dbacl doesn't think ahead more than one half move, and it needs the full game
history for matching patterns. Moreover, the fundamental behaviour is learned entirely
from training sets. Thus dbacl's strength as a chess player is meaningless without reference
to its training archive. However, if this archive is fixed, then incremental improvements to the
algorithms can be evaluated in that context.
dbacl is able to learn some tactics simply by reading large collections of
games. However, it seems that strategy is beyond its capabilities. Moreover,
there are some fundamental limitations in treating a PGN format game like a text
document: some information such as the values of exchanged pieces aren't easy to read off
without keeping an imaginary board for replaying moves.
There are many ways to change the characteristics of the basic chess engine we've
built here. Besides more complex capture heuristics, one can try to account for
the length of the game (opening/middle/endgame), the difference in the number of pieces
captured by each side, etc. Beyond that, the PGN gameline representation which we used
here can be replaced with more informative symbol sequences. In principle, one could replace
each move with a pictorial representation of the board such as
FEN, but besides the added implementational complications, this causes difficulties because of dbacl's limit of 30 character tokens, and possibly statistical issues in recognizing similar but not identical board configurations.
Perhaps most interestingly overall, it should be remembered that dbacl
doesn't think ahead like most chess engines do. Its successes and
failures are almost entirely based on the historical record of the
game as it develops and mimicry of training games, not at all on calculating moves and
countermoves in the future.
Download the latest dbacl chess engine: dce.sh