POPROX uses a pipelined design for its recommender implementations, built on the
LensKit pipeline. The pipeline works primarily with mutable data;
some components return entirely new data structures, while others add new data
to their input and return the modified structure (e.g. scorers augment a list
of articles with scores).
Note
POPROX is currently using a vendored copy of the pipeline code while it
is in development, exposed as poprox_recommender.lkpipeline.
There are quite a few components here — the recommendation experience is
composed from a set of small components, each of which has a specific
responsibility in the recommendation experience.
Todo
Document the components!
Article Embedder
We use NRMSArticleEmbedder to compute embeddings from article content. There are two instances of this embedder, one for candidate articles and another for articles in the user’s history.
Softmax-Sampled Ranker
The SoftmaxSampler component generates a stochastic ranking from the scored articles with softmax sampling. Many experimental pipelines replace this with a TopkRanker.
This pipeline implements simple top-K ranking using NRMS. This pipeline works
exactly like the default pipeline, except it replaces the
softmax sampler with a TopkRanker.
The NRMS + MMR pipeline applies maximum marginal relevance to the NRMS scores.
As with the default pipeline, the straight top-K results are available for
comparison and evaluation.