检索与倒排索引

引言

Information Retrieval (IR):
从大规模非结构化数据 的集合中找到满足用户信息需求的资料。
包括信息的获取表示存储组织访问

一、倒排索引

1、倒排索引介绍

其中倒排索引实现了“单词-文档矩阵”的存储,是实现单词到文档映射关系的最佳实现方式。

所谓正向索引通过 文档docID 查找 单词wordID
检索与倒排索引_第1张图片
而反向索引(倒排索引)是 通过 wordID 查找 docID,从词的关键字去查找文档。
检索与倒排索引_第2张图片
倒排索引主要由两个部分组成:“单词词典”和“倒排文件”
单词词典:文档中所有单词的集合,词典中每条索引项记录单词本身的信息和指向“倒排列表”的指针
倒排文件:所有单词按照docID排序具有可变长度的记录列表。
检索与倒排索引_第3张图片
通常,进行 索引建立 会给分词后的单词做些预处理,以防 索引列表过于稀疏。
检索与倒排索引_第4张图片

2、建立倒排索引

步骤:
1)建立 词条序列 (wordID -> docID)
检索与倒排索引_第5张图片
2)排序:先按照词条排序,再按照docID排序检索与倒排索引_第6张图片

3、倒排索引查询

查找Brutus AND Caesar都出现的文档:

  • 在字典中分别找到Brutus和Caesar,得到它们的倒排记录表
    Brutus: 2,4,8,16,32,64,128
    Caesar:1,2,3,5, 8, 13, 21,34
  • 通过双指针合并两个倒排记录表
    双指针查找步骤:
    比较docID大小:2>1 -> 下方指针右移一位 -> 2=2 -> 保留记录2,两边都右移一位 -> 4>3 -> 下方指针右移一位 -> 4< 5 -> 上方指针右移 -> 8>5 -> 下方指针右移一位 -> 8=8 -> 保留记录8,两边都右移一位 -> 16>13 -> 下方指针右移一位 -> 16< 21 -> 上方指针右移一位 -> 32>21 -> 下方指针右移一位 -> 32< 34 -> 上方指针右移一位 -> 64>34 -> 下方已遍历完,结束
    检索与倒排索引_第7张图片

二、BM25算法

bm25是一种评价 搜索词和所有文档 之间相关性的算法,用来检索模型。

有一个query和一批文档,求query和每篇文档D之间的相关性(相关性计算中统计的query和文档之间的相关概率可通过query的倒排索引来计算):

1、加权求和

首先对query切分,得到单词qi,计算qi的分数:
- 每个单词的权重Wi
- 相关性分数R:单词和D之间的相关性
- 最后对于每个单词的分数求和,得到**query和文档之间的分数**

你可能感兴趣的:(自然语言处理)