Getting started#

Installation#

Rank-BM25 is included in the full scikit-plots distribution. It is also shipped as the project-maintained partial distribution scikit-plots-rank-bm25:

python -m pip install scikit-plots-rank-bm25

Do not install the partial distribution alongside the full distribution in the same environment: both own scikitplot.rank_bm25 files. See Scikit-Plots Partial Distributions for the repository’s partial-distribution model.

from scikitplot.rank_bm25 import BM25Okapi

texts = [
    "hello there good man",
    "it is quite windy in london",
    "how is the weather today",
]
corpus = [text.lower().split() for text in texts]
ids = ["greeting", "london-weather", "question"]

index = BM25Okapi(corpus, doc_ids=ids)
hits = index.get_top_ids("windy london".split(), n=2)

get_top_ids is the preferred retrieval surface when results need stable identity. An out-of-vocabulary query returns no sparse candidates instead of inventing an arbitrary zero-score ordering.