Weizenbaum's prose description of Eliza is excellent, almost good
enough to allow a reader to reproduce Eliza's behavior without ever
having encountered Eliza itself.
One shortcoming that I noticed is that Weizenbaum never tells us what
Eliza would do when the input phrase doesn't match any of the regnant
keyword's transformation rules. I can think of three reasonable guesses
on how one might want a program to proceed in that circumstance, but all
three seem to be contradicted by various parts of Weizenbaum's paper.
Here are my three guesses:
Option #1: proceed to the next keyword on the keystack.
Option #2: skip the keystack and use the NONE or MEMORY mechanism.
Option #3: just require keyword entries to cover all possible input phrases.
Here are the contradictions:
On page 41, just before introducing NONE and MEMORY, Weizenbaum writes:
"A serious problem which remains to be discussed is the reaction of the
system in case no keywords remain to serve as transformation triggers.
This can arise either in case the keystack is empty when NEWKEY is
invoked or when the input text contained no keywords initially."
This contradicts my options #1 and #2 above, because either of them could
cause NONE or MEMORY to be used without NEWKEY ever having been invoked and
without the keystack having been empty initially.
Several of Weizenbaum's Doctor script's keyword entries have ((0) (NEWKEY))
as their last transformation rule. This contradicts my option #1 above,
which would make that transformation rule a meaningless no-op.
Two of the keywords in the script, DREAMT and CAN, do not have
transformation rules to cover all possible input phrases. This contradicts
my option #3 above.
If anyone can provide any knowledge or insight about this issue,
I'd appreciate it.
I am currently using option #1 above.
Details