Skip to content
Back to skills

Tfidf To Boolean Query

ASecurity

Converts TF-IDF top-k terms into field-scoped boolean OR queries for structured document retrieval from a full-text index.

  • 61 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 12, 2026
ai-agentspythongo

Security analysis

A100/100

Scanned September 12, 2026

npx -y skills add wenmin-wu/ds-skills --skill tfidf-to-boolean-query --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tfidf To Boolean Query?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tfidf To Boolean Query
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wenmin-wu-tfidf-to-boolean-query/badge)](https://www.skillsdirectory.com/skills/wenmin-wu-tfidf-to-boolean-query)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: nlp-tfidf-to-boolean-query
description: >
  Converts TF-IDF top-k terms into field-scoped boolean OR queries for structured document retrieval from a full-text index.
---
# TF-IDF to Boolean Query

## Overview

Full-text search engines accept boolean queries (term1 OR term2 AND field:term3), but choosing which terms to include is non-trivial. This technique uses TF-IDF to rank vocabulary terms by importance, selects the top-k, qualifies each with its source field (title, abstract, classification code), and joins them into a boolean OR query. The result is a structured, field-aware query derived from the document's own content — useful for prior art search, duplicate detection, and similar-document retrieval.

## Quick Start

```python
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np

def select_top_k(tfidf_matrix, k=10):
    """Select top-k globally important terms by column sum."""
    col_sums = np.asarray(tfidf_matrix.sum(axis=0)).flatten()
    top_indices = np.argsort(-col_sums)[:k]
    return top_indices

def build_boolean_query(doc_text, cpc_codes, ti_tfidf, cpc_tfidf, k=10):
    """Build a field-scoped boolean OR query from TF-IDF top-k."""
    # Get top-k title terms
    ti_matrix = ti_tfidf.transform([doc_text])
    ti_indices = select_top_k(ti_matrix, k)
    ti_terms = ti_tfidf.get_feature_names_out()[ti_indices]

    # Get top-k CPC codes
    cpc_matrix = cpc_tfidf.transform([cpc_codes])
    cpc_indices = select_top_k(cpc_matrix, k)
    cpc_terms = cpc_tfidf.get_feature_names_out()[cpc_indices]

    # Build field-qualified query
    parts = [f"ti:{t}" for t in ti_terms] + [f"cpc:{c}" for c in cpc_terms]
    return " OR ".join(parts)

# Fit TF-IDF on corpus, then build queries
ti_tfidf = TfidfVectorizer(max_features=5000).fit(titles)
cpc_tfidf = TfidfVectorizer(analyzer='word').fit(cpc_strings)
query = build_boolean_query(doc_title, doc_cpc, ti_tfidf, cpc_tfidf)
# → "ti:neural OR ti:network OR cpc:G06F OR cpc:H04L"
```

## Workflow

1. Fit TF-IDF vectorizers on the corpus (one per field: title, abstract, CPC, etc.)
2. For each query document, transform and select top-k terms per field
3. Prefix each term with its field name (`ti:`, `abs:`, `cpc:`)
4. Join with `OR` to form the boolean query
5. Execute against a full-text index (Whoosh, Elasticsearch)

## Key Decisions

- **k per field**: 10 title terms + 10 CPC codes is a good start; tune by retrieval metric
- **Field weights**: Title terms are more discriminative than abstract terms — use fewer abstract terms
- **Token budget**: Some search systems limit query tokens (e.g., 50) — truncate lowest-ranked terms
- **Combines with SA**: Use TF-IDF top-k as candidate set, then simulated annealing to select optimal subset

## References

- [USPTO - Annealing [LB = 0.31]](https://www.kaggle.com/code/andrey67/uspto-annealing-lb-0-31)
- [USPTO-Simulated-Annealing-Baseline](https://www.kaggle.com/code/tubotubo/uspto-simulated-annealing-baseline)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.