BM25S: Pesquisa lexical significativamente mais rápida por meio de pontuação esparsa ávida
BM25S: Orders of magnitude faster lexical search via eager sparse scoring
July 4, 2024
Autores: Xing Han Lù
cs.AI
Resumo
Apresentamos o BM25S, uma implementação eficiente baseada em Python do BM25 que depende apenas do Numpy e Scipy. O BM25S alcança até 500 vezes mais velocidade em comparação com o framework baseado em Python mais popular, calculando ansiosamente as pontuações do BM25 durante a indexação e armazenando-as em matrizes esparsas. Ele também alcança melhorias consideráveis em comparação com implementações Java altamente otimizadas, que são utilizadas por produtos comerciais populares. Por fim, o BM25S reproduz a implementação exata de cinco variantes do BM25 baseadas em Kamphuis et al. (2020), estendendo a pontuação ansiosa para variantes não esparsas usando um método inovador de deslocamento de pontuação. O código pode ser encontrado em 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/bm25s