ChatPaper.aiChatPaper

BM25S: Ricerca lessicale più veloce di ordini di grandezza grazie al punteggio sparso eager

BM25S: Orders of magnitude faster lexical search via eager sparse scoring

July 4, 2024
Autori: Xing Han Lù
cs.AI

Abstract

Presentiamo BM25S, un'implementazione efficiente di BM25 basata su Python che dipende esclusivamente da Numpy e Scipy. BM25S raggiunge un incremento di velocità fino a 500x rispetto al framework Python più popolare, calcolando in anticipo i punteggi BM25 durante l'indicizzazione e memorizzandoli in matrici sparse. Ottiene inoltre notevoli miglioramenti di velocità rispetto alle implementazioni altamente ottimizzate basate su Java, utilizzate da prodotti commerciali di rilievo. Infine, BM25S riproduce l'implementazione esatta di cinque varianti di BM25 basate su Kamphuis et al. (2020) estendendo il calcolo anticipato a varianti non sparse mediante un innovativo metodo di spostamento del punteggio. Il codice è disponibile all'indirizzo 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
PDF133November 28, 2024