Une implémentation rapide de BM25 en Python.
BM25 est une fonction de classement simple et rapide pour les moteurs de recherche fonctionnant sur des mots (tokens).
Il ne fonctionne pas bien avec les fautes d'orthographe, alors utilisez-le uniquement dans des contextes où cela ne pose pas de problème.
L'implémentation de base du BM25 provient de dorianbrown/rank_bm25.
Initialisez BM25 en lui transmettant un corpus, c'est-à-dire un itérateur sur des documents tokenisés (une liste de chaînes).
from fast_bm25 import BM25
# Load your corpus
corpus = ...
bm25 = new BM25 ( corpus )
results = bm25 . get_top_n ([ "largest" , "city" , "in" , "Japan" ], corpus );
Ce n'est pas un package python, copiez le fichier si vous souhaitez l'utiliser
Dans un corpus textuel, les mots les plus courants (le, a, an, ...) sont souvent les moins informatifs.
En les coupant de la requête et en recherchant uniquement les documents contenant au moins un mot de la requête, le BM25 gagne beaucoup de vitesse tout en perdant très peu de précision.
Ce compromis est contrôlé par le paramètre alpha
: alpha plus élevé => plus de vitesse et plus de coupure de mots.
À