初学全文检索技术-倒排文件
倒排文件索引技术
1、什么是倒排文件
在搜索引擎进行数据预处理阶段时,通常依赖一种高效的索引结构以实现对外快速检索的需求。其中最有效的数据组织形式即为"倒排文件"。这种组织方式的基本概念在于以文档中的关键词建立索引体系,并将所有相关的文档作为被引用的对象进行记录(类似于普通书籍中的目录,在书中每一页都是被引用的对象)。
2、倒排文件分类
(1)文档级倒排文件 文档级倒排文件是一种索引系统,在信息组织中具有重要地位。它主要分为两个类别:第一类是词表索引,在此分类中不仅记录了包含特定词语x的文档数量,并且还指出了这些文档的位置信息;第二类是倒排表索引,在这一部分中记录了每个词语及其在不同文档中的具体出现位置及相关统计信息。
3、倒排文件压缩
基于倒排列表是按照排序的方式来存储这一特点,在查询估计过程中对倒排列表进行排序会产生较大的开销;此外,在实际应用中,由于倒排列表的空间占用量会发生显著变化,导致其对应的倒排文件大小范围可以从原始文本大小的50%扩展至300%。压缩方案主要包括有参数化的Gamma和Delta编码以及无参数化的Golomb编码。
4、基于倒排文件的自索引
压缩索引降低了索引的空间消耗,并使读取和解压一个已压缩索引比读取未压缩倒排索引能更有效地节省磁盘访问时间;自索引技术一定程度上克服了上述矛盾。
定义了一个由文档号d与词出现次数fx,t形成的〈d,fx〉序列对构成的集合,在对文档号应用d-gap压缩算法后将这些序列按数量分组,并插入忽略信息〈di,ai〉;进一步地,在压缩地址ai时采用d-gap技术以提升空间利用效率。
当输入包含文档号d的内容时,在解压忽略信息之前需先处理插入的第一个忽略信息。
5、怎样建立倒排文件
(1)首先对原始文本进行分词处理,并删除所有标点符号;
(2)接着统计每个词语在原文中的出现频率以及它们的具体位置信息;
(3)然后对原文内容按照一定的规则进行顺序整理;
例:尽管外界普遍认为机器人不具备感情能力;但由于时代发展的需求逐渐促使这一可能性得到了关注与探索。
通常情况下人们会认为复杂装置难以具备感情特征;然而通过深入研究发现许多技术手段都为实现这一目标提供了可能性基础。
P1={2, 机器人(2,13); 1, 发展(6); ….;}
P2={1, 通常(1); 1, 装置(17); ……;}
通过上述倒排列表能够清晰地反映出各个关键词在整个段落中的重要性及其分布情况。
利用Python编程语言可以通过编写特定脚本来实现对文档内部标记信息的有效提取与分析功能
# encoding=utf-8
from string import punctuation
import re
import jieba
add_punc=',。、【】“”:;()《》‘’{}?!⑦()、%^>℃:.”“^-——=擅长于的&#@¥'
add1_punc=''
all_punc=punctuation+add_punc
def sentence_cut(x):#cut words and delete punctuation
x=re.sub(r'[A-Za-z0-9]|/d+','',x)#delet numbers and letters
testline = jieba.cut(x,cut_all=False)
testline=' '.join(testline)
testline=testline.split(' ')
te2=[]
for i in testline:
te2.append(i)
if i in all_punc:
te2.remove(i)
return te2
x='随着经济的发展,人们对生活的品质要求越来越高。'
print(sentence_cut(x))
list1=sentence_cut(x)
set1 = set(list1)
#print(set1 )
list2 = list(set1)
#print(list2)
dir1 = {}#新建一个空的字典
for x in range(len(list2)):
dir1[list2[x]] = 0 #字典值初始为0
for y in range(len(list1)):
if list2[x] == list1[y]:
dir1[list2[x]] += 1
print(dir1)
The progression of economic development is accompanied by a continuous rise in the expectations of common people regarding living standards.
