Overview
You build one thing: a service that reads the customer inbox of Tidewell Cycles, a bike shop and repair workshop in Bristol that started delivering to Germany, Spain and France in July. It cleans each message, pulls out the order number, product and date, routes the message to the right person in four languages, suggests the right help-centre article, summarises long threads and tells the owner each Monday what customers are unhappy about. Every method in the course, from a regular expression to a hosted language model, is scored on the same 80 hand-written messages, so you end with one honest comparison of accuracy, speed and cost. Tidewell is fictional and its data is simulated; every lesson also opens with a real, cited case.
What you will learn
- 73 written parts, yours for good
- 54h 19m of reading, measured not estimated
- Written for the introductory level
- Every future revision included
Prerequisites
- A Google account, to run code in Google Colab. Nothing to install.
- Nothing else for Modules 1 to 9: every model there runs inside the notebook, with no key.
- For Module 10 and a few optional calls before it, one free API key from Groq or Google Gemini, or no key at all if you run a model on your own computer with Ollama.
- For Module 7's fine-tuning, Colab's free T4 GPU helps; there is a CPU path too.
Curriculum
12 sections · 73 parts · 54h 19m6h 54m free to read · 47h 25m with the course
01Course guide5 parts · 143 min
- Natural Language Processing: The Complete CourseFree5 min
- How This Course WorksFree6 min
- Setup: Colab, Libraries, Model Providers, and Running LocallyFree18 min
- The Project: the Tidewell Cycles InboxFree11 min
- Shared Tidewell DataFree103 min
02Module 1: Text as Data and Rules7 parts · 271 min
- Module 1: Text as Data and RulesFree1 min
- Lesson 1: What NLP is, and the inbox we will fixFree52 min
- Lesson 2: Characters, encodings and clean inbox textFree41 min
- Lesson 3: Regular expressions that find order numbers and datesFree42 min
- Lesson 4: Rules in production: safe, tested and measuredFree55 min
- Lab: The inbox package and its rule baselineFree52 min
- Incident: A name key that changed twiceFree28 min
03Module 2: Tokenisation and Word Normalisation6 parts · 252 min
- Module 2: Tokenisation and Word Normalisation1 min
- Lesson 1: Splitting messages into words and sentences53 min
- Lesson 2: Subwords, how models read words they never saw55 min
- Lesson 3: Stop words, stemming and lemmatisation, measured42 min
- Lab: A tokenisation and normalisation report for Rosa58 min
- Incident: Tokens the model never learned43 min
04Module 3: Linguistic Structure: Tags, Parses and Entities6 parts · 214 min
- Module 3: Linguistic Structure: Tags, Parses and Entities1 min
- Lesson 1: The spaCy pipeline and part-of-speech tags32 min
- Lesson 2: Dependency parsing: who did what to what34 min
- Lesson 3: Finding products, dates and order numbers in messages55 min
- Lab: The Tidewell entity extractor, scored63 min
- Incident: A name matched as a string29 min
05Module 4: Text as Vectors and Classification7 parts · 315 min
- Module 4: Text as Vectors and Classification1 min
- Lesson 1: Turning messages into word and character counts55 min
- Lesson 2: TF-IDF: weighting words and comparing messages41 min
- Lesson 3: Naive Bayes, the first trained intent classifier54 min
- Lesson 4: Logistic regression: weighted evidence you can read56 min
- Lab: The first trained intent classifier, versioned66 min
- Incident: A word that says who wrote it42 min
06Module 5: Evaluation, Sentiment and Topics7 parts · 338 min
- Module 5: Evaluation, Sentiment and Topics1 min
- Lesson 1: Measuring a classifier: beyond one accuracy number57 min
- Lesson 2: Cross-validation, tuning and messages that fit nowhere58 min
- Lesson 3: Sentiment analysis: word lists, models and their limits57 min
- Lesson 4: Topic modelling: what is the inbox about?45 min
- Lab: An evaluation report and Rosa's Monday report77 min
- Incident: Counting happy words is not measuring happiness43 min
07Module 6: Word and Sentence Embeddings7 parts · 292 min
- Module 6: Word and Sentence Embeddings1 min
- Lesson 1: Words as vectors: teaching word2vec what "battery" means22 min
- Lesson 2: Borrowed word vectors, and words nobody has seen57 min
- Lesson 3: Sentence embeddings: one vector per message56 min
- Lesson 4: Semantic search: finding the right help article43 min
- Lab: Help-centre search for Ines102 min
- Incident: Borrowed word vectors judged people by name11 min
08Module 7: Sequence Models and Transformers with Hugging Face7 parts · 274 min
- Module 7: Sequence Models and Transformers with Hugging Face1 min
- Lesson 1: Sequence models: reading words in order54 min
- Lesson 2: Attention, and words that change with their neighbours37 min
- Lesson 3: Hugging Face pipelines, tokenisers and model heads34 min
- Lesson 4: Fine-tuning DistilBERT to route the inbox57 min
- Lab: Fine-tuned DistilBERT against the TF-IDF router81 min
- Incident: A suggested word guessed the gender10 min
09Module 8: Extraction, Question Answering and Summarisation6 parts · 319 min
- Module 8: Extraction, Question Answering and Summarisation1 min
- Lesson 1: Turning booking messages into checked records59 min
- Lesson 2: Question answering: finding the exact words that answer46 min
- Lesson 3: Summarising long email threads for Rosa47 min
- Lab: Booking records, help answers and thread summaries134 min
- Incident: The answer finder answered the wrong question32 min
10Module 9: Translation, Multilingual NLP and Evaluating Generation6 parts · 319 min
- Module 9: Translation, Multilingual NLP and Evaluating Generation1 min
- Lesson 1: Machine translation for a four-language inbox63 min
- Lesson 2: Multilingual NLP: one router for four languages57 min
- Lesson 3: Scoring translations and summaries, and their limits58 min
- Lab: Route four languages, scored one at a time98 min
- Incident: A greeting translated into a threat42 min
11Module 10: LLMs for NLP, and Responsible NLP7 parts · 344 min
- Module 10: LLMs for NLP, and Responsible NLP1 min
- Lesson 1: Asking a language model to sort the inbox39 min
- Lesson 2: Pulling checked facts out of messages with an LLM39 min
- Lesson 3: Classical models against LLMs, measured fairly60 min
- Lesson 4: Bias, fairness and privacy in the inbox61 min
- Lab: The bake-off, every model on one test set114 min
- Incident: A chatbot that repeated private chats30 min
12Module 11: Capstone2 parts · 178 min
- Module 11: Capstone1 min
- Lab: The Tidewell inbox service, end to end177 min
How computers read text, from characters and regular expressions to word vectors, transformers and large language models, measured on one real-shaped inbox from the first lesson to the last.
You build one thing: a service that reads the customer inbox of Tidewell Cycles, a bike shop and repair workshop in Bristol that started delivering to Germany, Spain and France in July. It cleans each message, pulls out the order number, product and date, routes the message to the right person in four languages, suggests the right help-centre article, summarises long threads and tells the owner each Monday what customers are unhappy about. Every method in the course, from a regular expression to a hosted language model, is scored on the same 80 hand-written messages, so you end with one honest comparison of accuracy, speed and cost. Tidewell is fictional and its data is simulated; every lesson also opens with a real, cited case.
Who this course is for
You can write basic Python: variables, loops, functions, lists and dictionaries, and running a notebook. You do not need any machine learning or NLP background.
Reviews
to review this course once you have finished it.