A similarity score is a number that expresses how alike two things are, usually two strings, documents or vectors. Scores typically run from 0 to 1 or 0 to 100, where the top of the scale means identical. They are the output of fuzzy matching, semantic matching and clustering, and the threshold you set on them decides what counts as a match.
How it works
Different methods measure different kinds of likeness:
- Edit-distance scores, such as a normalised Levenshtein ratio, count the character changes needed to turn one string into the other.
- Set-overlap scores, such as Jaccard similarity, divide shared tokens or n-grams by all distinct ones.
- Vector scores, such as cosine similarity on TF-IDF vectors or embeddings, measure the angle between two representations; with embeddings they reflect meaning, not spelling.
- Phonetic methods give a match or no match on how words sound.
A distance (lower is closer) is often converted into a similarity (higher is closer). Library scorers differ too: RapidFuzz’s fuzz.ratio, partial_ratio and token_set_ratio can give quite different numbers for the same pair.
How it’s used in SEO and marketing
- Redirect mapping, with thresholds that sort matches into tiers for review.
- Comparing your titles or metadata with a competitor’s.
- Mapping keywords to topics, by fuzzy score or by embedding similarity with Sentence-BERT.
- Ranking candidate keywords in KeyBERT by their cosine similarity to the document.
- Near-duplicate and cannibalisation checks.
Example
MLforSEO’s redirect mapping lesson adds a three-tier label next to the raw score: exact match (100), partial match (between 50 and 100) and no suitable match (below 50). In the competitor metadata lesson, “hands on neural networks and time series with Python” and “neural networks from scratch in Python and R” score close to 60: related, but not the same article, which is exactly the judgement a human reviewer then confirms.
Limitations and things to watch
- Scores from different methods or libraries are not comparable; a 0.8 cosine is not an 80 fuzz.ratio.
- Calibrate thresholds on a labelled sample from your own data.
- High character similarity does not mean the same meaning, and the reverse is also true.
- Always keep a human review step for actions like redirects.
Learn it on MLforSEO