首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Okapi bm25和NMSLIB有什么区别?

Okapi bm25和NMSLIB有什么区别?
EN

Data Science用户
提问于 2021-02-16 08:45:51
回答 1查看 339关注 0票数 1

我试图建立一个搜索系统,然后我了解了Okapi bm25,这是一个排序功能,像tf-以色列国防军。您可以对您的语料库进行索引,并在以后检索类似于查询的文档。

我导入了一个python库 rank_bm25并创建了一个搜索系统,结果令人满意。

然后我看到了一个叫非度量空间库的东西。我知道它是一个相似的搜索库,很像kNN算法。

我看到一个例子,一个人试图制造一个智能搜索系统在使用nmslib。他做了以下事情:-

  • 标记文件
  • 将标记传递到fastText模型以创建单词向量
  • 然后将这些词向量与bm25权重结合起来。
  • 然后将该组合传递给nmslib。
  • 进行了搜查。

如果上面的链接没有打开文档,只需在匿名模式下打开它。

这是相当快,但结果并不令人满意,我的意思是,即使我是复制粘贴任何确切的查询从文档,它没有返回该文档。但是我用rank_bm25制作的搜索系统取得了很好的效果。所以结论是

bm25 gave好结果和 nmslib <#>gave更快的结果。

我的问题是

  • 两者(bm25,nmslib)有何不同?
  • 如何将bm25权重传递给nmslib以创建一个更好、更快的搜索引擎?
  • 简而言之,我如何将bm25和nmslib两者的优点结合起来?
EN

回答 1

Data Science用户

回答已采纳

发布于 2021-02-16 18:30:44

请注意,我不知道nmslib,而且我对一般的搜索优化也不熟悉。不过,我知道Okapi BM25的权重。

两者(bm25,nmslib)有何不同?

这是两件完全不同的事情:

  • Okapi BM25是一种加权方案,其理论基础优于已知的TFIDF加权方案。这两种方法的目的都是根据它们在文档集合中的“重要”程度对单词进行评分,主要是通过对很少出现的单词给予更多的权重。作为一种加权方案,Okapi BM25只提供文档/查询的表示,您如何使用它取决于您自己。
  • nmslib是一个优化的相似搜索库。我假设它接受文档和查询的任何一组向量作为输入。因此,我们可以向他们提供由原始频率,TFIDF或其他任何东西构成的矢量。它所做的仅仅是使用文档的任何表示来计算(尽可能快)与查询最相似的文档。

如何将bm25权重传递给nmslib以创建一个更好、更快的搜索引擎?

由于您提到基于BM25的结果是令人满意的,这意味着质量的损失是由于nmslib搜索优化。没有魔法,唯一能让事情变得更快的方法就是少做比较,有时这意味着错误地抛弃一个潜在的好候选人。因此,问题不在于传递BM25权重,而在于理解和调整nmslib的参数:当然有一些参数允许用户在速度和质量之间选择适当的权衡。

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/89435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档