feat (tag-generation): tag generation for the clusters#23
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds automatic, dependency-free TF‑IDF tag extraction for clustering results and surfaces those tags in the webview cluster UI (and in the testEmbed diagnostics), enabling clusters to be labeled with top descriptive keywords.
Changes:
- Added a TF‑IDF-based post-processing step to enrich clustering benchmark results with top-K tags per cluster.
- Updated result types and webview UI to pass and render cluster tags.
- Added styling for tag “pills” within cluster headers.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/webview/panel.css | Adds layout/styling for displaying tag pills under the cluster title. |
| src/webview/pages/DashboardPage.tsx | Passes per-cluster tags from the selected strategy into each ClusterCard. |
| src/webview/components/ClusterCard.tsx | Renders tag pills in the cluster header when tags are present. |
| src/types/cluster.ts | Extends BenchmarkResult with an optional tags map keyed by cluster ID. |
| src/pipeline/runPipeline.ts | Enriches benchmark results with TF‑IDF tags before returning results to the UI. |
| src/pipeline/clustering/postProcess.ts | Introduces stop-word filtering, tokenization, TF‑IDF extraction, and results enrichment. |
| src/commands/testEmbed.ts | Enriches and logs tags alongside cluster assignments for diagnostics. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Hey @HahaBill, I'm about to start working on auto-naming the note clusters. Since this new feature relies on the TF-IDF tag extraction which is this PR and the pipeline/caching updates from the feat/native-embeddings-hybrid PR (the other opened PR), it needs to be built on top of both. If they look good to you, could we merge this PR first? |
|
I was going through my proposal and our discussion, and realized I had accidentally missed n-grams support in the initial implementation. I just pushed a commit to address that. |
HahaBill
left a comment
There was a problem hiding this comment.
Looks good for now, merging :)
This PR implements a lightweight, dependency-free TF-IDF tag extraction system to auto-generate the top 5 most descriptive tags for note clusters.
TF-IDF Engine: Added a custom TfidfExtractor that accurately computes terms across clusters with a 60% max-DF threshold to filter generic terms.
Screenshot:
