Git Product home page Git Product logo

elizagen.org's People

Contributors

anthay avatar jeffshrager avatar m-n avatar pdewacht avatar scivision avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elizagen.org's Issues

ELIZA in POP and some mention of PARRY too.

Intro to POP: https://en.wikipedia.org/wiki/POP-2

This tar file: http://ftp.math.utah.edu/pub/mirrors/minnie.tuhs.org/UA_Distributions/UNSW/92/92.tar.gz

Contains:

;;;     / p o p / u s r / l i b / e l i z a . p
;;;     Sussex Mini ELIZA programme
;;;     Written by Steven Hardy 18th October 1976
;;;     modified by Aaron Sloman 17 May 1978
;;; the function changeperson is now called before any tests are carried out,
;;; so that you always refers to the user, I to the computer, etc.,
;;; in the transformed sentence, which is then analysed by other procedures
;;; trying to react to it.
;;; The variable "sentence" is local to the function "Eliza", and used non-
;;; locally by other procedures. Thus, general purpose matching procedures
;;; can be defined which simply take a pattern as argument. Examples are
;;; the procedures:  itmatches, itcontains, ithasoneof, itslikeoneof,
;;;     and itsaquestion,
;;; which are used by lots of other procedures to test the current sentence.
[...and so on...]

Plus documentation:

$ nroff -t usr/lib/tmac.t ./demos/elizarules 2>/dev/null | head -n 30



                            EXTENDING ELIZA
                            ===============

You can run the ELIZA program by typing
        : LIB ELIZA;
The program will then be compiled (which takes quite a long time), after
which it will print out:
        PLEASE TYPE
                ELIZA
You should then type
        : ELIZA
to get the program going.

Eliza will go on until you type CTRL‐D, or  CTRL‐X,  or  one  of  "BYE",
"GOODBYE".

Eliza  contains  a  set of rules for responding to the sentence you type
in.  If you want to extend the program, by giving it  new  rules,  first
type
        : BYE
which will cause SETPOP to be executed, so that you are then again talk‐
ing to POP11, and can define functions, give commands, etc.

You can then define new rules.  Here is an example of one of the rules:
        : NEWRULE BECAUSE;
        :       IF      ITCONTAINS([BECAUSE])
        :       THEN    [IS THAT THE REAL REASON?]

One of the documents in that tar file is also available published: https://doi.org/10.1016/0004-3702(77)90028-5
Conversational language comprehension using integrated pattern-matching and parsing
Roger C. Parkinson, Kenneth Mark Colby, William S.Faught
Artificial Intelligence Volume 9, Issue 2, October 1977, Pages 111-134

It concerns PARRY and contains a sample interview.

Newer version are here: https://www.cs.bham.ac.uk/research/projects/poplog/lib/

Patient Input of Punctuation and Contractions

Hello, I've been having fun poking around this code, thanks for bringing it online. I've been doing a "hands on" exploration of it and I've extracted one change that might fall under your goal of CL compatibility. It allows the patient to use quotes as part of words; fixes punctuation including the ability to use periods, colons, and commas; and makes placing a space between a word and punctuation optional.

https://gist.github.com/m-n/7633433

In addition to replacing the TRMLIS and PCTLIS defparameters with the progn in the gist, you will need to replace the call to ratom with a call to patient-read.

Portability regression (CLISP)

On CLISP (but not SBCL or CCL) the response "I'm fully sure you fully don't understand me." is triggering the "CDR expected a cons or a symbol." error.

This started on commit 841266d which introduces BBN's RPLACA and RPLACD, but it's not clear to me why.

cannot start "elizagen/doctor_bbn_lisp_1966/bbnlisp.pl" : unbound symbol: stop

calling
bbnlisp.pl -doctor66 -load bbnlib66.lisp -load doctor.ascii -load scrip.ascii

yields a very long error message,

    > unbound symbol: stop
    throw was error at ./bbnlisp.pl line 1469, <LOADFILE> line 323.
    throw was error at ./bbnlisp.pl line 1469, <LOADFILE> line 726.

Or rather it is a warning.
I can remove the respective lines in the file (they are the last lines just containing "stop"), then the error messages disappear. I get a REPL prompt, I can type (doctor) and the program responds with "tell me your troubles. please terminate input with an enter.".

The perl I'm using is

This is perl 5, version 22, subversion 1 (v5.22.1) built for x86_64-linux-gnu-thread-multi
(with 68 registered patches, see perl -V for more detail)

on Ubuntu 16.04.4 LTS

Maclisp version of Eliza

Hello,

I have a version of ELIZA ported to Maclisp, dated 1977-09-05. Unfortunately, it's just a compiled binary file. Is this of any interest to you?

Reading of 'strings'

It seems that in BBN-Lisp double quotes (") served as a sort of escape character. For example, I think REALLY"," (from the script) is intended to be read as a single symbol |REALLY,|. That also explains the date header: (QUOTE 08/22/68" 1522:26") is just (QUOTE |08/22/68 1522:26|) and not some bizarre two-argument QUOTE.

Is it possible to hack the Common Lisp reader to accept such things?

Emulate (CONTROL T)

This depends on how much historical accuracy we really want... The original code uses (CONTROL T), which turns off line buffering. (See BBN Lisp documentation at: http://bitsavers.trailing-edge.com/pdf/bbn/The_BBN-LISP_System_Apr69.pdf)

This probably means that the doctor is intended to answer the patient immediately when they finish a sentence, without them needing to press the Return key. The start-up instructions also hint at this:

PLEASE TERMINATE INPUT WITH A PERIOD OR A QUESTION MARK.

Not implementing this behavior means that patients get confusing output when they type two sentences on a single line. And we probably also print a spurious empty line before the doctor's responses.

There seems no portable way to implement this. On Unix you'd need to fiddle with termios, and on Windows there's the Console API. There doesn't seem to be any Lisp library that provides a portable interface to this functionality.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.