BM25S: Поиск по лексике значительно быстрее за счет энергичного разреженного скоринга.
BM25S: Orders of magnitude faster lexical search via eager sparse scoring
July 4, 2024
Авторы: Xing Han Lù
cs.AI
Аннотация
Мы представляем BM25S, эффективную реализацию BM25 на Python, которая зависит только от библиотек Numpy и Scipy. BM25S достигает ускорения до 500 раз по сравнению с самым популярным фреймворком на Python за счет предварительного вычисления оценок BM25 во время индексации и сохранения их в разреженные матрицы. Он также достигает значительного ускорения по сравнению с высокооптимизированными реализациями на Java, которые используются в популярных коммерческих продуктах. Наконец, BM25S воспроизводит точную реализацию пяти вариантов BM25 на основе работы Камфуиса и др. (2020), расширяя предварительное вычисление оценок на не разреженные варианты с использованием нового метода сдвига оценок. Код можно найти по ссылке 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