Minimal Python implementation of the ELIZA chatbot
Project description
Our Eliza (oureliza)
A minimal Python implementation of the classic ELIZA chatbot with zero dependencies.
Try the Demo
Chat with ELIZA in your browser: Interactive Demo
Installation
pip install oureliza
Or with Poetry:
poetry add oureliza
Usage
from oureliza import Eliza
eliza = Eliza()
# Get initial greeting
print(eliza.initial())
# Have a conversation
print(eliza.respond("I feel sad today"))
print(eliza.respond("My mother never understood me"))
print(eliza.respond("I dream about flying"))
# Get final message
print(eliza.final())
Script Format
ELIZA uses a script-based pattern matching system designed by Joseph Weizenbaum in 1966. See SCRIPT_FORMAT.md for full history and specification.
The built-in DOCTOR_SCRIPT follows this format:
Tags
| Tag | Description | Example |
|---|---|---|
initial |
Greeting messages shown at start | initial: How do you do. Please tell me your problem. |
final |
Goodbye messages shown at end | final: Goodbye. Thank you for talking to me. |
quit |
Words that end the conversation | quit: bye |
pre |
Pre-substitution (before matching) | pre: dont don't |
post |
Post-substitution (in responses) | post: i you |
synon |
Synonym groups | synon: sad unhappy depressed |
key |
Keyword with optional weight | key: mother 10 |
decomp |
Decomposition pattern | decomp: * i feel * |
reasmb |
Reassembly response | reasmb: Why do you feel (2)? |
Pattern Matching
*matches zero or more words@wordmatches any synonym in the group(1),(2), etc. reference captured groups from decomposition
Example Script Block
key: mother 10
decomp: * my mother *
reasmb: Tell me more about your mother.
reasmb: What else comes to mind when you think of your mother?
decomp: * mother *
reasmb: Who else in your family (2)?
Special Features
-
goto: Redirect to another keyword's patterns
reasmb: goto family -
save ($): Save response to memory for later use
decomp: $ * i want * -
xnone: Fallback responses when no pattern matches
key: xnone decomp: * reasmb: Please go on. reasmb: Tell me more about that.
Custom Scripts
You can provide your own script:
from oureliza import Eliza
my_script = """
initial: Hello! How can I help you today?
final: Goodbye!
quit: bye
quit: exit
key: xnone
decomp: *
reasmb: I see. Tell me more.
reasmb: Please continue.
key: hello 10
decomp: *
reasmb: Hi there! What's on your mind?
"""
eliza = Eliza(script=my_script)
print(eliza.respond("hello"))
Development
# Install dependencies
make install
# Run tests
make test
# Build package
make build
# Do everything
make all
References
Based on wadetb/eliza with significant script expansion.
License
MIT License - see LICENSE for details.
Author
Craig Trim - craigtrim@gmail.com
More NLP articles and demos at craigtrim.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oureliza-1.2.1.tar.gz.
File metadata
- Download URL: oureliza-1.2.1.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.9 Darwin/24.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80a9fc287974edfb019b16c0e3a0156655b7607a8df390d291a454d270c40028
|
|
| MD5 |
4d68daace4f7ee5a369611ce9d3dac2d
|
|
| BLAKE2b-256 |
828a3550f3b38f487253a5667823054a69038981df241e34c6eff78c7f53c597
|
File details
Details for the file oureliza-1.2.1-py3-none-any.whl.
File metadata
- Download URL: oureliza-1.2.1-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.9 Darwin/24.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
209afb0bfb68c207c980fdebe28d5edf1a7b87815eea7a9c1b2e79c7f246aedc
|
|
| MD5 |
7010e38fb90b891e7a045a75e93a6888
|
|
| BLAKE2b-256 |
a78ac937d387cc41455e30686ea9f756f5829e05520286abca10c0db15dd4202
|