asgard-ai-platform/algo-seo-tfidf
Implement TF-IDF scoring to measure term importance relative to a document corpus. Use this skill when the user needs to rank documents by keyword relevance, extract important terms from text, or build a basic search relevance engine — even if they say 'find relevant documents', 'keyword extraction', or 'term importance'.
npx skills add https://github.com/asgard-ai-platform/skills --skill algo-seo-tfidf
TF-IDF (Term Frequency–Inverse Document Frequency) scores term importance as TF(t,d) × IDF(t). High scores mean a term is frequent in a document but rare across the corpus. Computes in O(N × V) where N is documents and V is vocabulary size.
Trigger conditions:
When NOT to use:
IRON LAW: TF-IDF Measures RELATIVE Importance
- A term with high TF but low IDF is common, NOT important
- TF-IDF = TF(t,d) × log(N / DF(t))
- A term appearing in ALL documents has IDF = 0 → score = 0
Tokenize documents, apply lowercasing, remove stop words. Build vocabulary.
Gate: All documents tokenized, vocabulary size reasonable.
Check: terms appearing in all documents have IDF ≈ 0. Rare terms have high IDF.
Gate: Score distribution is reasonable; common words score low.
Return scored terms per document or ranked documents per query.
{
"query_results": [{"document": "doc_id", "score": 0.73, "matching_terms": ["term1", "term2"]}],
"metadata": {"corpus_size": 1000, "vocabulary_size": 5000, "tf_variant": "log_normalized"}
}
Input: Corpus: ["the cat sat", "the dog sat", "the cat played"], Query: "cat"
Expected: TF("cat", doc1)=1/3, DF("cat")=2, IDF=log(3/2)=0.405. TF-IDF(doc1)=0.135, TF-IDF(doc3)=0.135, TF-IDF(doc2)=0
| Input | Expected | Why |
|-------|----------|-----|
| Term in all docs | Score = 0 | IDF = log(N/N) = 0 |
| Term in one doc | Highest IDF | log(N/1) = log(N) |
| Empty document | All scores = 0 | No terms to score |
| Script | Description | Usage |
|--------|-------------|-------|
| scripts/tfidf.py | Compute TF-IDF vectors, top terms per document, and query scoring | python scripts/tfidf.py --help |
Run python scripts/tfidf.py --verify to execute built-in sanity tests.
references/bm25-comparison.mdreferences/inverted-index.mdTake asgard-ai-platform/algo-seo-tfidf from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.