A recommendation history describes what someone wanted before. It does not necessarily describe what they want now. A person who usually watches crime dramas may ask for “something sweet and heartwarming” tonight; a music listener may want to avoid a familiar genre for one session. CRAMER lets a user express that immediate preference in natural language and edits the recommender’s behavior without retraining its backbone.

The design question

How can a deployed recommender reconcile a person’s long-term interaction history with a new request quickly, precisely, and without asking a large language model to rerank every candidate?

Preference adaptation as model control

Conventional sequential recommenders predict the next item from an interaction sequence su. CRAMER adds a natural-language request qu, but it does not simply concatenate that text to the input or use it to filter a finished list. Instead, a learned controller maps the request to a control signal that edits selected parameters of the frozen recommender:

Request-conditioned model editing
φ* = arg maxφ ∑u∈U log p(i*T+1 | su, θ′)
Edited backboneθ′ = Cm(θ)Language controlm = Fφ(qu)

The backbone parameters θ stay frozen. Only the request encoder and projection components are learned. A user request is embedded, projected to gate logits, and passed through Gumbel-Top-k sampling to produce a hard, sparse control vector. This makes each edit both request-specific and computationally bounded.

The CRAMER framework. A natural-language request is converted into a semantic embedding and gate logits. Gumbel top-k produces row and column gates, which create masks over selected matrices in a frozen sequential recommender.
Figure 1 from the paper. CRAMER turns the request into structured row-column masks over selected Transformer matrices. The frozen backbone then combines the edited computation with the user’s interaction sequence to rank the next item.

A mask instead of a new model

Masking every individual parameter would make the controller almost as unwieldy as the backbone. CRAMER therefore chooses rows and columns of a weight matrix separately. Their outer product creates an entrywise mask:

Structured row-column gate
M(ℓ)ij = r(ℓ)i · c(ℓ)j,   M(ℓ) ∈ {0,1}αℓ×βℓ

A pair of short binary vectors controls an entire matrix. The paper applies these masks to feed-forward layers, attention-output projections, or both—compact intervention points in Transformer recommenders.

01Understand the request

A pretrained language encoder captures direct, indirect, and negated preference language.

02Select a sparse edit

Gumbel-Top-k keeps an exact number of row and column gates active.

03Rank with the frozen backbone

The masked SASRec or BERT4Rec model combines immediate intent with long-term behavior.

Does the model follow what the user says?

The paper tests semantic control using 100 users from the ReDial movie dataset. Without a request, an average of 28.6% of the top ten recommendations are romance-related. The authors then issue six natural-language requests: three asking for more romance and three asking for less. Every request moves the recommendation distribution in the intended direction.

No request28.6%romance-related movies in top 10
More romance↑

“I’d like a romantic comedy.”

43.2%

“Something sweet and heartwarming.”

34.5%

“I want an offbeat, slow-burn emotional drama.”

31.2%
Less romance↓

“Please avoid romantic movies.”

13.5%

“Maybe something less focused on love.”

20.4%

“Skip movies with amour-driven plots.”

25.3%
Results from Table 3 of the paper. CRAMER responds not only to explicit instructions, but also to indirect phrasing and the rarer term “amour.” Percentages are averages across 100 users.

This example makes controllability visible. The mask is not an arbitrary perturbation: positive, ambiguous, negative, and unusual formulations all cause semantically aligned changes. The strongest positive request raises romance representation from 28.6% to 43.2%; the clearest negative request lowers it to 13.5%.

Accuracy across models and domains

The evaluation spans four datasets—ReDial, KuaiSAR, Amazon Beauty, and Amazon CDs & Vinyl—and two frozen sequential-recommendation backbones, SASRec and BERT4Rec. It compares CRAMER with request augmentation, language-to-item representations, embedding enhancement, and LLM reranking.

Across 48 dataset, backbone, and metric combinations, CRAMER records the highest reported value in every setting. After the paper’s multiple-comparison correction, its improvement over the strongest baseline remains statistically significant in 41 of 48 settings (85.42%). The result holds across Hit Ratio, NDCG, and Mean Reciprocal Rank at cutoffs 10 and 20.

CRAMERLLM reranking
Control pointInternal sparse masksFinished candidate list
BackboneFrozenFrozen
Per-request processEncoder + projection + maskingListwise language-model reasoning
SASRec overhead+0.018 s+9.256 s

The runtime difference matters for an interactive system. In the paper’s SASRec experiment, CRAMER adds only 18 milliseconds per request, close to the lightest request-aware baselines. The LLM reranker adds more than nine seconds because it reasons over multiple candidates at inference time.

Preference is a conversation, not a static profile

CRAMER treats a recommendation model as something a person can steer after deployment. Historical behavior still supplies the durable preference signal, while language supplies a short-horizon correction: more of this, less of that, or something different for the present context. Structured masking connects those two signals without rebuilding the user profile or the recommender itself.

Read the research