倒排表讲解

简介: 倒排表讲解

前言


在问答系统中,我们应该根据用户提出的问题,然后在知识库里找相关的问题以及返回概率最高的答案,我们遇到的问题是假设知识库里有n个问题,那么我们每次需要做n次的相似度计算,这样的话对计算机的负担是极大的,那么如何降低复杂度呢?核心思路是根据倒排表做一个层次过滤,过滤掉不相关的问题以及答案。


一、倒排表


1-1、基本概念


文档:比如Word、PDF、Excell等不同格式的文件都可以称之为文档。

文档集合:由若干文档构成的集合称之为文档集合。

文档编号:每个文档都会被赋予一个唯一的编号当作标识。

单词编号:与文档编号类似,作为单词的唯一表征。

倒排索引:实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:单词词典和倒排文件。

单词词典:文档集合中出现的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。

倒排列表:记载了出现过某个单词的所有文档的文档列表以及单词在该文档中出现的位置信息,每条记录成为一个倒排项。根据倒排列表,即可以获知哪些文档包含某个单词。

倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即被称之为倒排文件,倒排文件是存储倒排索引的物理文件。


1-2、简单应用


假设包含三个文档,对这三个文档建立倒排索引。

5ae25d98c0fe4d5c8555f31e698b6a33.png

先对中文进行分词,然后再赋予每个单词唯一的编号,在倒排列表中记录下了哪些文档包含这个单词。除了记录哪些文档包含这个单词,还可以记录词频等信息。

de4640a3286f4397bfa21d377c84ef8f.png


参考文章:


一文了解倒排表.

NLP——倒排表.


总结


不知不觉就到12月了,今年可过的真快。

相关文章
|
7月前
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
|
7月前
|
C++
【一刷《剑指Offer》】面试题 3:二维数组中的查找
【一刷《剑指Offer》】面试题 3:二维数组中的查找
|
7月前
|
C++
【PTA】L1-019 谁先倒 (C++)
【PTA】L1-019 谁先倒 (C++)
93 0
【PTA】L1-019 谁先倒 (C++)
|
算法 NoSQL Redis
关于跳表,这么解释你肯定能听懂
如何用 30s 给面试官讲清楚什么是跳表
130 0
关于跳表,这么解释你肯定能听懂
|
C语言
排序会了递归,不学非递归太可惜了
排序会了递归,不学非递归太可惜了
92 0
排序会了递归,不学非递归太可惜了
L1-019 谁先倒 (15 分)
L1-019 谁先倒 (15 分)
96 0
PTA 谁先倒
L1-019 谁先倒 分数 15 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就输了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。 下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。
170 0
|
算法
我就不信你看完还学不会顺序查找和折半查找的算法
我就不信你看完还学不会顺序查找和折半查找的算法
112 0
我就不信你看完还学不会顺序查找和折半查找的算法