BM25S: Búsqueda léxica significativamente más rápida a través de puntuación dispersa ansiosa
BM25S: Orders of magnitude faster lexical search via eager sparse scoring
July 4, 2024
Autores: Xing Han Lù
cs.AI
Resumen
Presentamos BM25S, una implementación eficiente basada en Python de BM25 que solo depende de Numpy y Scipy. BM25S logra hasta 500 veces más velocidad en comparación con el framework basado en Python más popular al calcular ávidamente las puntuaciones de BM25 durante la indexación y almacenarlas en matrices dispersas. También logra mejoras significativas en velocidad en comparación con implementaciones en Java altamente optimizadas, que son utilizadas por productos comerciales populares. Finalmente, BM25S reproduce la implementación exacta de cinco variantes de BM25 basadas en Kamphuis et al. (2020) al extender el cálculo ávido a variantes no dispersas utilizando un novedoso método de desplazamiento de puntuaciones. El código se puede encontrar en https://github.com/xhluca/bm25s.
English
We introduce BM25S, an efficient Python-based implementation of BM25 that
only depends on Numpy and Scipy. BM25S achieves up to a 500x speedup compared
to the most popular Python-based framework by eagerly computing BM25 scores
during indexing and storing them into sparse matrices. It also achieves
considerable speedups compared to highly optimized Java-based implementations,
which are used by popular commercial products. Finally, BM25S reproduces the
exact implementation of five BM25 variants based on Kamphuis et al. (2020) by
extending eager scoring to non-sparse variants using a novel score shifting
method. The code can be found at https://github.com/xhluca/bm25sSummary
AI-Generated Summary