A fork of an Eliza bot implementation at https://github.com/mattshiel/eliza-go which will be the basis of derivatives such as alternative personalities

gremlin f0d44a0505 Merge branch 'feature/eliza-011-versioning' of gremlin/elizaservice into develop преди 3 години
bots b8f0249f75 eliza-011 : Added placeholder replacement and version commands преди 3 години
eliza b8f0249f75 eliza-011 : Added placeholder replacement and version commands преди 3 години
facades 5f896929c9 Eliza-010 Distributed Redis cache преди 3 години
infrastructure b8f0249f75 eliza-011 : Added placeholder replacement and version commands преди 3 години
templates 5f896929c9 Eliza-010 Distributed Redis cache преди 3 години
web 5f896929c9 Eliza-010 Distributed Redis cache преди 3 години
.gitignore ed4530d3db 1st commit преди 3 години
LICENSE ed4530d3db 1st commit преди 3 години
README.md 530ef8c38a Updated Readme преди 3 години
go.mod 5f896929c9 Eliza-010 Distributed Redis cache преди 3 години
go.sum 5f896929c9 Eliza-010 Distributed Redis cache преди 3 години
main.go b8f0249f75 eliza-011 : Added placeholder replacement and version commands преди 3 години
makefile b8f0249f75 eliza-011 : Added placeholder replacement and version commands преди 3 години

README.md

Eliza-Go

Author: Gary Leeson based on the work of Matthew Shiel at https://github.com/mattshiel/eliza-go

How to Run The Chatbot

Assumes that Git and Go are installed along with the prerequisites. If not, they can be found from https://golang.org/dl/ and https://git-scm.com/downloads

1. Clone the Repository

> git clone https://git.riomhaire.com/gremlin/elizaservice.git

2. Change Directory to the Folder

Open the terminal/command line and navigate into the folder 
eg. > cd elizaservice

2. Compile the Chatbot

> make

3. Run the Chatbot

To run the chatbot enter './' followed by the executable produced
For Mac/Linux:
> ./eliza-server

Alternatively:
> go run server.go

4. Open the localhost

Go to your browser and type:
> 127.0.0.1:8080

Design Components

The primary design components that went into this project were as follows, a web server to serve a HTML as the root, Javascript to get the user input with ajax and finally all functionality and responses are contained in the eliza package.

Problems and Features

To give Eliza the impression she was thinking Matthew implemented a delay to her responses, adding to this the delay will also randomise between 0.6 and 4 seconds per response.

Eliza crafts her responses by examining the user's text input for a keyword. When the keyword is found it goes through a pre-processing procedure. This includes things like transforming all letters to lower case and trimming unnecessary whitespace. After this the word is tested against keywords in the 'responses.go' file. If a regex group is matched, the program gets the first match, the matched group then makes up a fraction of the response for added realism. If Eliza does not find a match then there are a number of fallback default response she will chose from. All responses are chosen randomly.

A problem Matthew encountered with this method is that selecting answers from the map of responses may be slightly non-deterministic, and the map will be out of order. In Weizenbaum's original design of Eliza he used a method of decomposition where all keywords held a certain value or 'precedence number'. This weighted approach is definitely another approach I could have taken when designing my program and something I might change in the future.

References

This implementation of Eliza gave Matthew many ideas and provided Matthew with the main method of implementing Matthew Eliza functionality https://github.com/kennysong/goeliza

I consulted both the the Golang, Bootstrap and JQuery documentation frequently over the course of my assignment.