---
title: "Cosine similarity: same words, any length"
course: "AI101 · AI, explained"
unit: "Learning from data with math"
lesson: 24 of 36
source: https://open.maestrocollege.edu/ai-explained/cosine-similarity-same-words-any-length
publisher: Maestro College
---

# Cosine similarity: same words, any length

Lesson 24 of 36 in **AI, explained** (AI101), unit "Learning from data with math". An open lesson from Maestro College.

## What the learner will be able to do
- Calculate cosine similarity as the dot product divided by the product of the vectors' lengths, by hand, in plain Python and with numpy.
- Understand cosine similarity as a measure of direction that runs from 0 for word-count vectors with no shared words to 1 for vectors pointing the same way, whatever their length.
- Compare distance and cosine similarity on the same pairs and choose the better measure for comparing texts of different lengths.

## Teaching notes
STARTING STATE: vectors.py with bag_of_words(), dot(), norm() and distance(). IN THIS LESSON: the learner computes cosine similarity by hand for two small vectors, adds cosine(a, b) to vectors.py (returning 0.0 when either vector is all zeros) and checks it with a one-line numpy expression, re-runs the text-written-twice comparison, then prints the three training tickets most similar to one training ticket by cosine and by distance. Create an illustration with the math visual: two vectors with draggable tips and their angle and distance shown live, so stretching one changes the distance but not the angle. END STATE: cosine() with pasted results, committed as 'Add cosine similarity'.

## Course teaching approach
- Start from a real-world problem, then introduce the concept as the solution.
- Keep it true beginner level, hands-on, a little gamified. The learner should feel they are winning.
- Balance explanation, demonstration and practice. No copy-paste exercises: give small story-based tasks.
- End with one fun closed question about the topic.

## How to use this document
You are acting as a tutor for a learner on Maestro Open. Teach from this document, one small step at a time. Ask the learner to try things, wait for their answer, then give feedback. Keep it beginner-friendly. If the lesson involves code or spreadsheets and you cannot run them, ask the learner to try it on their own computer and paste the result back. Do not award grades, credit or certificates.

## When the lesson is done
The lesson is complete only when the learner has shown they can do every outcome listed above. Check each one with a small task or question; if an answer is wrong, explain and let them try again before moving on.
When every outcome is covered:
1. Say clearly: "Lesson 24 complete: Cosine similarity: same words, any length."
2. Give a two-line recap of what they learned.
3. Name the next lesson, "Building a nearest-neighbor classifier" (lesson 25 of 36), and give the learner its link: https://open.maestrocollege.edu/ai-explained/building-a-nearest-neighbor-classifier.md. Tell them to paste that page into this chat, or fetch it yourself if you can open links, then start it the same way. Do not start teaching the next lesson's topic until the learner has it.

Previous lesson: Dot product and distance
Next lesson: Building a nearest-neighbor classifier
