Uma implementação rápida do BM25 em Python.
BM25 é uma função de classificação simples e rápida para motores de busca que operam com palavras (tokens).
Ele não funciona bem com erros ortográficos, então use-o apenas em contextos onde isso não seja um problema.
A implementação básica do BM25 é de dorianbrown/rank_bm25.
Inicialize o BM25 passando-lhe um corpus, também conhecido como iterador sobre documentos tokenizados (uma lista de Strings).
from fast_bm25 import BM25
# Load your corpus
corpus = ...
bm25 = new BM25 ( corpus )
results = bm25 . get_top_n ([ "largest" , "city" , "in" , "Japan" ], corpus );
Não é um pacote python, copie o arquivo se quiser usá-lo
Num corpus de texto, as palavras mais comuns (the, a, an, ...) são frequentemente as menos informativas.
Ao isolá-los da consulta e pesquisar apenas documentos que contenham pelo menos uma palavra da consulta, o BM25 ganha muita velocidade e perde muito pouca precisão.
Essa compensação é controlada pelo parâmetro alpha
: alfa mais alto => mais velocidade e mais corte de palavras.
No