Description
Problem
The pipeline is category-generic — AMAZON_CATEGORIES in holmes/data/preprocess.py enumerates ~30 Amazon Reviews 2023 categories (All_Beauty, Electronics, Video_Games, …), preprocess --all fans out over every one into data/processed/<category>/, and build_dataset accepts any category by name. Books is only the default --category, not the domain.
But the project's own materials narrate it as a Books-specific system, which misleads readers into thinking there is a single domain:
CLAUDE.mdcalls it an "ALS book recommender (Amazon Reviews 2023, Books)".holmes/data/preprocess.py:1module docstring: "Build a sparse user-item interaction matrix from Amazon Reviews 2023 (Books)", as if Books were the domain.tests/conftest.pynames the shared fixturebooks_datasetand frames it in book/customer terms — yet it models a generic grouped user×item interaction matrix with nothing book-specific about it.
Three independent artifacts encode the default as if it were the design. This is drift: the docs/naming under-describe the system's generality.
Proposed fix
- Rename the
books_datasetfixture to something category-neutral (e.g.grouped_dataset/interaction_dataset) acrosstests/— used inconftest.py,test_dataset.py,test_harness.py,test_als.py,test_diagnostics.py. - Correct the
preprocess.pymodule docstring to describe the matrix as built from any Amazon Reviews 2023 category (Books being the default), not Books specifically. - Update the
CLAUDE.md"What this project is" framing from "book recommender" to a category-generic Amazon Reviews recommender. - (Optional) Align the fixture's "customer" vocabulary with the
Datasetclass's "user" naming.
Why it matters
The framing is misleading enough that a reader working only from the project's docs concludes it is single-domain. Naming/docs should reflect that the system is category-generic.
Activity