
Date: 24 Mar 88 02:37:00 GMT
From: quintus!ok@unix.sri.com  (Richard A. O'Keefe)
Subject:  An Eliza-like problem solving assistant (400+ lines).

In article <7845@agate.BERKELEY.EDU>,
lagache@violet.berkeley.edu (Edouard Lagache) distributed
an "Eliza-like problem solving assistant".

(1) In the tables at the end of the program, the pattern
    word_class([...],
        [
        [...],
        ...
        [...],
*--------------------^
        ]).
    occurs quite often.  While C allows extra commas in initialisers,
    many Prolog systems will be unhappy about that extra comma.

(2) In order to test whether any of a given list of Keywords occurs in
    a given Sentence, the program does

    intersection(Keywords, Sentence, List),
    List \== [],

    This is correct, but there isn't a lot of point in constructing List.
    A more efficient approach (effiency is not a concern in this program)
    would be to call

    intersect(Keywords, Sentence)

    where for example

    intersect(Set1, Set2) :-
        member(X, Set1),
        member(X, Set2),
        !.

(3) I thought I'd try the program.  This is what I got:
Please describe your problem.  Type 'quit.' to resume work.
e> My nematodes have been eaten by the peripatus.
Could you say more about your problem. 
e> Yes.
Could you please elaborate on one aspect of your problem. 
e> Well, the peripatus crawled out of its box last night, and it got into
e> another box on the same bench, where we keep nematodes, and well, it
e> ate the lot of them.
Is there anything else that you know about this problem? 
e> I suppose there are two problems, really.  One problem is how do I
e> stop this sort of thing in the future, and the other is where do I
e> get some more nematodes right now.  I want your help with the second
e> part of the problem.
What can you learn from doing this? 
e> From doing WHAT?
Could you say more about your problem. 
e> I just told you everything there was to say.
Could you say more about your problem. 
e> You're getting a bit repetitious, aren't you?
I do not quite understand the situation; could you elaborate it for me? 
e> Gods below, what is there to understand?  I need some nematodes, I
e> had some nematodes, but Hodgkins' wretched peripatus ate them.
Is there anything else that you know about this problem? 
e> Oh forget it.
Could you say more about your problem. 
e> quit.

    In case you were wondering, the e> lines do make sense.

(4) Part of the reason for the frustrating and unhelpful nature of the
    conversation shown is that the program is not Eliza-like.  One of
    the things that Eliza would do is pick up phrases of yours and
    throw them back at you.  For example, after my third input, an
    Eliza-like program might say
    Tell me more about the box.
                   ^^^^^^^----- copied from input
    or after the last input but two,
    Why did Hodgkins' wretched peripatus eat them?
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ transformed input
