ELIZA's grandchild: a 200-line chatbot in modern Python
A beginner's NLTK notebook that recreates the spirit of 1966's ELIZA without pretending to be smarter than it is.

What it does
This repo is a Jupyter Notebook (plus a plain .py script) that builds a bare-bones chatbot using NLTK’s lemmatizer and tokenization tools. It matches user input against a bag-of-words style setup and returns pre-written responses. The author explicitly calls it “very simple” with “hardly any cognitive skills” — which is refreshingly honest.
The interesting bit
The project leans into its own limitations. Rather than chasing LLM hype, it frames itself as a deliberate throwback to ELIZA’s 200-line psychotherapist trick from 1966. For someone who has just finished an NLTK tutorial and wants to see something conversational actually run, that’s a sensible bridge.
Key highlights
- Single dependency: NLTK (installs via
pip, downloadspunktandwordneton first run) - Two ways to run: Jupyter Notebook with Binder badge, or
python chatbot.pyin terminal - Accompanying Medium blogpost walks through the code step by step
- 604 stars suggest it hits a nerve with NLP newcomers
- Author’s stated motivation: “not to create some SOTA chatbot” but to test-drive fresh Python skills
Caveats
- The README doesn’t explain how the matching actually works — you’ll need to open the notebook to see if it’s keyword spotting, cosine similarity, or something else
- “Hardly any cognitive skills” is the author’s own assessment; don’t expect context memory or coherent multi-turn dialogue
Verdict
Good for: someone who just installed NLTK and wants a quick win before tackling transformers. Skip if: you need a chatbot that actually understands anything, or you’re looking for production patterns — this is explicitly learning scaffolding, not architecture.