
要約
本稿では、NumpyおよびScipyのみに依存する効率的なPython実装であるBM25Sを紹介する。BM25Sは、インデックス作成時にBM25スコアを事前に計算し、スパース行列に格納することで、最も普及しているPythonベースのフレームワークと比較して最大500倍の高速化を達成している。また、一般的な商用製品で採用されている高度に最適化されたJavaベースの実装と比較しても顕著な高速化を実現している。さらに、Kamphuisら(2020)のBM25の5種類のバリエーションの正確な実装を再現するために、新規のスコアシフト手法を用いてエージャー評価(eager scoring)を非スパースなバリエーションにも拡張した。コードはhttps://github.com/xhluca/bm25sにて公開されている。