APP下载

关于信息检索方法的探讨

2019-05-10李秋锦山东科技大学山东省济南市250000

数码世界 2019年4期
关键词:信息检索结构化排序

李秋锦 山东科技大学 山东省 济南市 250000

在大量的非结构化文档集合当中搜集与期望内容相关的信息的过程就是信息检索。与数据库等软件的查询不同,数据库中的表格等是结构化的数据,根据列名,关键字等等即可编写查询语句,实现搜索的过程。而所谓的信息检索则是主要针对于非结构化的数据,一般指形如文章,歌词等的自由文本。没有特定的结构化模式,而是由各种字符自由组合而形成的信息文本。我们所使用的搜索引擎一般都是基于信息检索开发实现的。与传统信息检索不同的是,现代的信息检索技术也能够处理结构化信息。

1 建立索引

在信息检索之前首要工作是建立索引文件,建立索引前还需将单词标准化,如英文单词中的大写字母统一为小写,在进行检索时,针对大小写处理方法相同。在索引文件的基础上再采取不同的方式对索引加以处理,完成检索过程。

1.1 词项——文档关联矩阵

给出搜索词及多个文档,以传统思想进行思考,要得到索引文件,最直接的方即为枚举法,对每个文档进行遍历只对文档中是否存在某一词项进行判断,建立矩阵,以词项为行,以文档为列,记录结果。若存在记为“1”,不存在记为“0”。

但词项——文档矩阵的不足之处也是显而易见的,当遍历文档集规模过于庞大时,建立的矩阵可能已经超过所能承载的极限,这种方式显然已经不合适再进行下一步的检索。

1.2 倒排索引

那么当解决大容量文档集时,需要用到的是倒排索引。提取文档集中的所有词项,以可变长顺序表存储每个词项的倒排记录,其中依次存储词项出项的文档数和包含该词项的文档标号。以四个文档为例,利用python语言编写程序生成倒排索引,具体代码如下:

该例的运行结果如下图1,词项的倒排记录存储在字典当中。

图1

1.3 位置索引

在倒排索引的基础上,进一步改进。倒排索引只能描述包含词项的文档,但忽略一个文档中该词的出现次数,这样检索出的结果容易出现误差。为解决这一问题,可使用位置索引,在指出文档标号的基础上,更进一步的定位到该文档内词项所处的位置。仍以上述例子,编写程序生成位置索引,具体代码如下:

该例运行结果如图2所示,以字典嵌套的方式表示索引。

图2

2 布尔检索

建立索引后,对索引记录进行处理。布尔检索就是根据查询条件对词项的索引表求其交集,并集,或补集的过程。这里以AND查询和倒排索引为例,展示python语言中两个索引记录的合并过程。指针分别指向两个索引记录的第一个位置,比较其数值,若相等则记录下来,两个指针同时指向下一位置;若不相等,数值小的一行,指针向后移动一个位置,再进行比较,直至有一个指针到达记录尾部,停止比较。得出合并结果。调用query()方法,参数为需要合并的两个词项。其结果显示为同时包含这两个词项的文档。

3 文档评分

布尔检索的结果集是所有含有查询语句的文档的集合,但搜索时,有许多文档与查询的语句的实际关联度并不。所以需要对查询的结果集进行排序,而排序的标准则通过对文档评分实现。评分的方法也有很多,可以对文档词项进行权重计算,其权重值与某个词项出现的频率有关。权重的计算需要两个值,tf为某一词项在某一文档中出现的次数,这个参数对于任一词项在不同文档中的值不同。df为在文档集合中包含有该词项的文档数量,不考虑其出现频率,对于依次权重的计算,d某一词项的df值不会发生改变。当文档集或频率数值过大时,不易进行计算,故将两个参数都进行标准化处理。tf取其以10为低的对数值加1,df则取其逆文档频率,即取倒数,并乘上一固定数值后取对数值。对于一个文档的权重计算,查询语句中的各个词项在该文档的tf值与对应词项在整个文档集中的df取值的乘积之和即为一个文档的权重值。得出所有文档的权重值后便可以进行排序。搜索引擎中的搜索结果一般只显示权重值排序中的前若干位。所得结果为各个文档的权重矩阵

4 总结

信息检索在实际生活中应用广泛,现代信息检索技术也在飞速发展当中。从构建索引,词项查询,结果排序都有对应的方法实现,本文主要以python语言为例,编写程序,描述信息检索的过程。各种方法的应用都可以推广至更深层次的应用当中。

猜你喜欢

信息检索结构化排序
作者简介
改进的非结构化对等网络动态搜索算法
深度学习的单元结构化教学实践与思考
结构化面试方法在研究生复试中的应用
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
恐怖排序
节日排序
计算机信息检索技术的发展及问题研究
对大学案理研讨课学生信息检索意识若干问题的思考
公共图书馆信息检索服务的实践探索——以上海浦东图书馆为例