BM25S : Recherche lexicale ordres de grandeur plus rapide grâce à une évaluation précoce des scores creux

Nous présentons BM25S, une implémentation efficace en Python de l'algorithme BM25, qui ne dépend que de Numpy et Scipy. BM25S atteint jusqu'à un accélération de 500 fois par rapport au cadre Python le plus populaire, en calculant de manière précoce les scores BM25 lors de l'indexation et en les stockant dans des matrices creuses. Elle offre également des gains de vitesse significatifs par rapport à des implémentations Java hautement optimisées, largement utilisées dans des produits commerciaux courants. Enfin, BM25S reproduit fidèlement l'implémentation exacte de cinq variantes BM25 décrites par Kamphuis et al. (2020), en étendant la méthode de calcul anticipé aux variantes non creuses grâce à une nouvelle méthode de décalage des scores. Le code source est disponible à l'adresse suivante : https://github.com/xhluca/bm25s