跳转至

第 3 周:倒排索引

在这之前,我们都是在某个集合里面“拿出”一些元素;这种叫正向索引。

那么和这个行为相反的,我们通过一些元素来找出含有这些元素的集合,就叫做反向索引,或者说倒排索引。比如说搜索引擎就在干这种事。

搜索引擎的细节

词干提取(Word stemming):搜索引擎会合并同义词。

停止词(Stop words):一些意义不大的词,比如 a、the、of、语气词等。

分布式索引(Distributed indexing):索引文件非常大的时候,肯定只能放进磁盘。如果实在实在很大,就需要很多块磁盘——这个时候就涉及到索引内容的分配。常见的有两种方法:

  • Term-partitioned index,按照词语分类。
  • Document-partitioned index,按照文档分割。

动态索引(Dynamic indexing):将新插入的结果放在一个辅助索引(auxiliary index)中,容量小访问快,优先在其中查找;如果找不到再去主索引文件去找。当辅助索引太大时,把它与主索引合并。

阈值(Thresholding):

  • 文件返回阈值:只返回关联度最高的 x 个文件 / 网页。
  • 查询选择阈值:只搜索(数据库的)词频前 p% 少的 term。

性能评价

  • 建库速度
  • 查询速度
  • 语义相关性

相关性 Relevance

||相关的|不相关的| |获取到的|\(R_R\)|\(I_R\)| |没获取到的|\(R_N\)|\(I_N\)|

精度 Precision \(P = \frac{R_R}{R_R + I_R}\)

完整性 Recall \(R = \frac{R_R}{R_R + R_N}\)

Precision 和 Recall 两者难以兼得。不过有一个合并了两者的评价标准,F1 分数:\(F_1 = \frac{2}{P^{-1} + R^{-1}} = \frac{2PR}{P + R}\)