BM25S: Um Größenordnungen schnellere lexikalische Suche durch eifriges spärliches Scoring.
BM25S: Orders of magnitude faster lexical search via eager sparse scoring
July 4, 2024
Autoren: Xing Han Lù
cs.AI
Zusammenfassung
Wir stellen BM25S vor, eine effiziente Python-basierte Implementierung von BM25, die nur von Numpy und Scipy abhängt. BM25S erreicht im Vergleich zum beliebtesten Python-basierten Framework eine bis zu 500-fache Beschleunigung, indem es BM25-Werte während des Indexierens eifrig berechnet und in dünnen Matrizen speichert. Es erzielt auch erhebliche Beschleunigungen im Vergleich zu hoch optimierten Java-basierten Implementierungen, die von beliebten kommerziellen Produkten verwendet werden. Schließlich reproduziert BM25S die genaue Implementierung von fünf BM25-Varianten basierend auf Kamphuis et al. (2020), indem es die eifrige Bewertung auf nicht-dünnen Varianten mit einer neuartigen Score-Shifting-Methode erweitert. Der Code ist unter https://github.com/xhluca/bm25s zu finden.
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