VOOZH about

URL: https://pypi.org/project/rank-bm25/

โ‡ฑ rank-bm25 ยท PyPI


Skip to main content

rank-bm25 0.2.2

pip install rank-bm25

Latest release

Released:

Various BM25 algorithms for document ranking

Navigation

Verified details

These details have been verified by PyPI
Maintainers
๐Ÿ‘ Avatar for dorianbrown from gravatar.com
dorianbrown

Unverified details

These details have not been verified by PyPI
Project links
Meta

Project description

Rank-BM25: A two line search engine

๐Ÿ‘ Build Status
๐Ÿ‘ PyPI version
๐Ÿ‘ DOI

A collection of algorithms for querying a set of documents and returning the ones most relevant to the query. The most common use case for these algorithms is, as you might have guessed, to create search engines.

So far the algorithms that have been implemented are:

  • Okapi BM25
  • BM25L
  • BM25+
  • BM25-Adpt
  • BM25T

These algorithms were taken from this paper, which gives a nice overview of each method, and also benchmarks them against each other. A nice inclusion is that they compare different kinds of preprocessing like stemming vs no-stemming, stopword removal or not, etc. Great read if you're new to the topic.

Installation

The easiest way to install this package is through pip, using

pipinstallrank_bm25

If you want to be sure you're getting the newest version, you can install it directly from github with

pipinstallgit+ssh://git@github.com/dorianbrown/rank_bm25.git

Usage

For this example we'll be using the BM25Okapi algorithm, but the others are used in pretty much the same way.

Initalizing

First thing to do is create an instance of the BM25 class, which reads in a corpus of text and does some indexing on it:

from rank_bm25 import BM25Okapi

corpus = [
 "Hello there good man!",
 "It is quite windy in London",
 "How is the weather today?"
]

tokenized_corpus = [doc.split(" ") for doc in corpus]

bm25 = BM25Okapi(tokenized_corpus)
# <rank_bm25.BM25Okapi at 0x1047881d0>

Note that this package doesn't do any text preprocessing. If you want to do things like lowercasing, stopword removal, stemming, etc, you need to do it yourself.

The only requirements is that the class receives a list of lists of strings, which are the document tokens.

Ranking of documents

Now that we've created our document indexes, we can give it queries and see which documents are the most relevant:

query = "windy London"
tokenized_query = query.split(" ")

doc_scores = bm25.get_scores(tokenized_query)
# array([0. , 0.93729472, 0. ])

Good to note that we also need to tokenize our query, and apply the same preprocessing steps we did to the documents in order to have an apples-to-apples comparison

Instead of getting the document scores, you can also just retrieve the best documents with

bm25.get_top_n(tokenized_query, corpus, n=1)
# ['It is quite windy in London']

And that's pretty much it!

Project details

Verified details

These details have been verified by PyPI
Maintainers
๐Ÿ‘ Avatar for dorianbrown from gravatar.com
dorianbrown

Unverified details

These details have not been verified by PyPI
Project links
Meta

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rank_bm25-0.2.2.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

Filter files by name, interpreter, ABI, and platform.

If you're not sure about the file name format, learn more about wheel file names.

Copy a direct link to the current filters

rank_bm25-0.2.2-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file rank_bm25-0.2.2.tar.gz.

File metadata

  • Download URL: rank_bm25-0.2.2.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for rank_bm25-0.2.2.tar.gz
Algorithm Hash digest
SHA256 096ccef76f8188563419aaf384a02f0ea459503fdf77901378d4fd9d87e5e51d
MD5 48562f27ad8795c3097bff5fec1721eb
BLAKE2b-256 fc0af9579384aa017d8b4c15613f86954b92a95a93d641cc849182467cf0bb3b

See more details on using hashes here.

File details

Details for the file rank_bm25-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: rank_bm25-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for rank_bm25-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7bd4a95571adadfc271746fa146a4bcfd89c0cf731e49c3d1ad863290adbe8ae
MD5 49a9f5e49fe2dabf7b0472bd0bddc884
BLAKE2b-256 2a21f691fb2613100a62b3fa91e9988c991e9ca5b89ea31c0d3152a3210344f9

See more details on using hashes here.

Supported by

๐Ÿ‘ Image
AWS Cloud computing and Security Sponsor ๐Ÿ‘ Image
Datadog Monitoring ๐Ÿ‘ Image
Depot Continuous Integration ๐Ÿ‘ Image
Fastly CDN ๐Ÿ‘ Image
Google Download Analytics ๐Ÿ‘ Image
Pingdom Monitoring ๐Ÿ‘ Image
Sentry Error logging ๐Ÿ‘ Image
StatusPage Status page