APP下载

文本信息检索系统的设计与实现

2019-08-23李高鹏艾山·吾买尔郑炅王路路

现代电子技术 2019年16期
关键词:信息检索

李高鹏 艾山·吾买尔 郑炅 王路路

摘  要: 随着信息化的发展,互联网上出现了越来越多的文档信息,如何根据用户的需要从海量的文档中快速获取相关信息成为了研究的热点。采用Python编程语言、Django Web应用框架、UWSGI Web服务器、Nignx代理服务器,基于TextRank关键词提取算法、倒排索引结构、Jaccard相似度计算以及MySQL数据库技术构建了汉英文本信息检索系统。该系统包含文本注册、文本检索和文本注销三个模块,可实现千万量级文本数量上的快速注册和快速检索功能,为构建舆情分析系统提供服务,并可根据人们特定的需求,扩展文本检索服务。

关键词: 信息检索; 算法介绍; 倒排索引; 检索系统构建; 快速注册; 快速检索

中图分类号: TN911.2?34; TP391                     文献标识码: A                  文章编号: 1004?373X(2019)16?0062?05

0  引  言

随着信息技术的飞速发展和我国人民生活水平的提高,互联网已经成为人们日常生活学习的一部分。我国已经进入了知识爆炸的时代,互联网上的汉语、英语相关的文档数量不断增加,并且未来还会继续增多。如何帮助用户快速有效地从海量的文本数据中找到需要的文本信息,成为学者们研究的重要课题。文本检索是指根据用户输入的信息从大量的文本集合中查找出相关文本的一种技术。文本检索作为信息检索[1]的一种,常用于搜索引擎、数字图书馆、舆情系统等领域。文本检索已经成为信息处理领域中不可获取的工具。常用的文本检索模型[2]可以分为三类:基于集合论的检索模型、基于代数的检索模型和基于概率论的检索模型。其主要包括布尔模型、向量空间模型、概率模型、引用分析模型等。

文本检索[3]是当代网络技术中的主流技术之一。文本检索[4]的过程一般分为两个步骤:索引的建立和索引的搜索,索引的建立是指对结构化文本和非结构化文本(一般将非结构化文本转换为结构化文本)进行特征抽取,建立索引的过程;索引的搜索是指将用户的请求作为检索对象,根据请求文本的特征,搜索数据库,返回结果的过程。虽然Google、百度等公司的搜索技术[5]已经相当成熟,但针对不同用户特定的需求,这些搜索引擎并不能很好的满足,也不方便用户根据需要进行扩展。

基于以上现象和问题,本文基于TextRank关键词提取算法、倒排索引结构、Jaccard相似度计算方法及MySQL数据库技术等构建了汉英文本信息检索系统,实现了千万量级文本下的快速检索,并且用户可根据不同需求进行文本的注册、注销,满足用户特点的需求,实现个性化搜索,帮助用户从海量文本数据完成检索任务,为舆情分析系统的构建提供服务,另外本文构建的系统同样适用于其他语言。

1  算法介绍

1.1  TextRank算法

TextRank[6]算法来源于Google的网页排名算法PageRank[7],是一种基于图的排序,可用于关键词提取、短语提取和摘要提取。TextRank算法在进行关键词提取时,首先对于文本分句,过滤掉停用词,去除标点乱码等无意义的字符,再结合词性标注方法筛选出名词、动词、形容词等重要词汇作为关键词候选词汇。利用筛选出的词汇构建关键词图,每个单词作为图中的一个节点,把具有共现关系的词进行连接,迭代确定各个节点的权重,直到权重收敛为止,之后对各个节点进行排序,根据需要输出最重要的前n个词作为提取出的文本的关键词。TextRank算法中可将文本看作是一个无向加权图[G=(V,E)],[V]表示关键词的集合,[E]表示边的集合,TextRank的核心公式为:

[WS(Vi)=(1-d)+d·Vj∈In(Vi)ωjiVk∈Out(Vj)ωjkWS(Vj)]  (1)

式中:[WS(Vi)] 表示第[Vi]个关键词的TextRank值,该公式表示TextRank中单词[Vi]的權重值由[Vi] 之前的各个关键词[Vj]组成;[d]表示阻尼系数,一般设置为0.85;[ωji]和[ωjk]表示两个关键词节点之间的边的权重;[In(Vi)]表示指向关键词[Vi]的关键词的集合;[Out(Vj)]表示关键词[Vj]指向其他关键词的集合。

1.2  倒排索引算法

搜索引擎是根据用户输入的关键词信息,从文档集合中找出包含这些关键词的文档。如何快速准确地找出文档呢?一般选择采用单词文档矩阵结构表示这些文档。在搜索引擎中,每个文档都有其对应的文档ID,可以把文档看作是一些关键词组成的集合,根据单词文档模型,可以知道哪些关键词在哪些文档中,哪些文档包含了哪些关键词。索引结构作为单词文档矩阵结构的一种,在用来表示单词与文档之间的对应关系时,把文档ID与该文档提取出的关键词相对应的结构称为正向索引结构,如表1所示。

在使用正向索引结构进行知识检索时,只能从头逐一查询,文档数量较多时,会导致资源开销大、查询效率低等问题。为了能快速根据关键词查询出对应的文本,可将正向索引结构重新构建成每个关键词对应包含该关键词文档ID集合的结构。这种结构就是倒排索引[8]结构,如表2所示。

在进行文本注册时,本文使用倒排索引结构把通过TextRank算法提取出的关键词特征与包含该关键词的文档进行关联,构建索引表并存入到MySQL数据库中。在进行文本检索时,通过关键词信息检索出包含这些关键词的文本,快速过滤掉不相关文本,提高检索效率。在进行文本注销时,不仅删除掉数据库中的不相关文本,还根据注销文本的关键词重新修正了数据库中存储的倒排索引表,保证了检索结果的实时性、准确性。

1.3  杰卡德相似系数

Jaccard相似度通常用来计算两个集合之间的相似程度[9]。Jaccard相似度计算公式为:[J(A,B)=A?BA?B               =A?BA+B-A?B] (2)

式中:[A] 和[B] 表示两个集合;集合[A] 和集合[B] 的交集与并集的比值表示Jaccard相似度,比值越大表示两个集合越相似。在汉英文本信息检索系统中,本文用Jaccard相似度计算检索出的文本与查找文本的相似度。通过对相似度进行排序,返回相似度从高到低的前n个结果。

1.4  MD5消息摘要算法

MD5[10](Message?Digest Algorithm 5)消息摘要算法属于Hash算法的一种,它的作用是无论输入多长的字符串,都会通过其特定的字符串变换算法将输入的字符串转换为特定长度的大整数,形成唯一的MD5消息摘要,当输入的内容发生任何形式的变化时都会改变这一消息摘要。MD5算法广泛用于各种加密、解密技术。本文将爬取的网页url地址和关键词转换为32位的MD5编码,减少了存储空间,加快了检索速度。

2  汉英双语文本信息检索系统的设计与实现

2.1  系统功能结构图

文本信息检索系统由文本注册、文本检索、文本注销三个模块构成。文本注册模块包含关键词提取模块,正向索引和倒排索引的构建模块,根据关键词与文档之间的关系,构建正向索引和倒排索引结构,并将构建好的索引结构存入到数据库的索引表中,实现索引库的构建。文本检索模块包括关键词提取模块、检索模块和相似度计算模块,通过关键词信息从索引库中找出包含这些关键词的文本,并计算检索到的文本与查找到的相关文本之间的相似程度,排序输出最终结果。文本注销模块功能与文本注册模块相反,该模块包括关键词提取模块和索引重建模块,根据文本的ID找到需要注销的文本,删除正向索引表中的信息,根据提取出的文本的关键词,找到并修改索引库中对应的倒排索引表。文本信息检索系统的功能结构图如图1所示。

2.1.1  文本注册模块

本文首先对爬取到的特定Web网页,通过正则匹配法,提取出网页内的文本信息,之后进行语种判别,根据判别结果分别将请求提交到对应的汉语注册接口和英文注册接口。Web网页的url作为对应文档的rowkey,并使用MD5编码得到rowkey对应的rowkeyCode,将网页内抽取的文本信息作为context存入数据库中。在文本注册模块将与Web网页的url网址对应的rowkeycode存入数据库中,保证数据库中文档的唯一性,避免存入重复文档。为了提高检索的速度,压缩存储空间,本文采用TextRank算法对context中的内容进行关键词提取。根据文档和关键词之间的关联建立正向索引表和倒排索引表,存入到索引库中,成功注册后返回消息。文本检索模块流程图如图2所示。

图2  文本检索模块流程图

Fig. 2  Flow chart of text retrieval module

2.1.2  文本检索模块

文本检索模块在获取到请求之后,先进行参数校验,判断参数是否合法,如果不合法,直接退出,并返回错误类型;如果合法,则对待检索的文本进行关键词提取。根据提取的关键词在索引库找出包含这些关键词的文本,拿到相应的rowkey,再把正向索引表中rowkey对应的文本的特征、权重与待检索文本的特征进行Jaccard加权计算,得到文本之间的相关性,并排序输入前n个结果,作为最终结果返回。

2.1.3  文本注销模块

文本注销模块在接收到注销请求后,同样先检查参数是否合法,如不合法,结束并返回相应的错误类型;如果合法,通过rowkey查找数据库中是否包含此条记录。如果数据库中没有此条记录,结束程序返回相应的错误类型;如果数据库中存在该记录,删除正向索引表中的记录,并修改倒排索引表中的關键词对应的文档序列,删除该条文档的编号,完成这些操作后,返回注销成功消息。

2.2  数据库系统设计

数据库设计包括概念模型设计、逻辑模型设计和物理模型设计三个层次。在数据库设计过程中,数据库中的数据应当减少冗余,避免一组数据在数据库多个表中重复出现。但在实际情境中,为了加快索引,方便快速查询,通常会违背这些数据库的设计规范。通过增加冗余列,进行数据库表的合并和拆分,减少表之间的连接,减少数据库的计算压力,以达到提高性能的目的。以中文为例的文本检索信息的物理数据模型如图3所示。

图3所示以汉语文本信息检索系统为例,该系统中一共设计了8张表,分别为文本注册表、文本内容信息存储表、文本基本信息存储表、索引信息存储表、备用索引信息存储表、文本注销表、临时索引信息表、临时排序表。文本注册表用来判断该篇文本是否已经注册过,可以方便在文本注册和文本注销时查找待注册文本和待注销文本是否在数据库中。文本基本信息存储表用来存储注册文本的详细信息,包括爬取时间、发布时间、文本来源等。索引信息存储表,即倒排索引表,该表存储的是关键词与包含该关键词的文本编号的对应关系,当倒排表变得很大时,会降低检索速度,这时会对倒排索引表进行切分,存储到备用索引信息存储表中。文本注销表用来存储用户传入的需要注销的文本,以便在后台执行文本注销操作。临时索引信息表存储的根据关键词信息检索到的文章编号,同文本内容信息存储表中的rowkeycode相对应。文本内容信息存储表,即正向索引表,用来存储文本的编号rowkeycode以及从文本中提取的关键词信息orginaltext,用来同用户传入的检索文本进行相关性计算。计算完的结果存储在临时排序表中。

3  系统测试

本文在构建汉英文本信息检索系统后,向检索系统中注册3 000万条数据进行测试。实验使用的系统硬件环境是CPU Intel[?] Xeon[?] CPU E5?2690 V4 @ 2.60 GHz*56 GB,512 GB内存,2 TB硬盘。使用的软件环境如下:操作系统为Centos 7.2,Pyhton 3.6,Django(1.11.3),uWSGI(2.0.15),Nginx(1.12.1),MySQL(8.0.12)数据库。数据注册的速度及索引构建速度随文本数量的变化关系如图4所示,文本检索的速度如表3所示。

从图4可以看出,在索引库的建立过程中,随着索引内容的增加呈现出非线性增长,本文注册3 000万条数据,注册文本的平均长度为2 123个字符,共花费了41.76 h,基本可满足快速构建索引库的要求。表3显示的是向数据库中注册了3 142万条数据后的检索速度的测试结果,当数据量达到3 000万条时,平均每秒可完成3~4条文本的检索。

关于文本信息检索系统的检索质量,本文是通过关键词匹配在数据库中查找相关文本,把匹配到的结果与用户输入的检索文本进行相似度计算,并设定相似度阈值,对于大于相似度阈值的文本,根据相似度、发布时间、爬取时间等排序,按照用户的需要输出结果。因此,检索结果与关键词提取算法相关性较大。TextRank算法能较好地抽取文本中的关键词,通过判定本系统的搜索结果可满足检索质量的要求。

4  结  语

本文利用Django框架,基于TextRank关键词提取算法、倒排索引结构、Jaccard文本相似度计算方法及MySQL数据库技术,构建了信息检索系统,实现了千万量级下快速注册、快速检索的文本信息检索,同时用户可根据文本注册和文本注销模块对该文本信息检索系统进行扩展,满足用户不同的需求。虽然关键词可以在一定程度上代表文本的语义,但并不能完全表示文本的语义信息,所以下一步将会研究实现基于语义的智能化的检索。

注:本文通讯作者为艾山·吾买尔。

参考文献

[1] 王勇.Web网络环境下的语义检索平台设计与分析[J].现代电子技术,2016,39(16):14?18.

WANG Yong. Design and analysis of semantic retrieval platform in web network environment [J]. Modern electronics technique, 2016, 39(16): 14?18.

[2] 丁志均,杨青,张会兵,等.基于非结构化文本检索模型综述[J].计算机应用研究,2017,34(6):1601?1608.

DING Zhijun, YANG Qing, ZHANG Huibing, et al. Review of unstructured text retrieval model [J]. Application research of computers, 2017, 34(6): 1601?1608.

[3] SONG W, WANG B, WANG Q, et al. A privacy?preserved full?text retrieval algorithm over encrypted data for cloud storage applications [J]. Journal of parallel & distributed computing, 2017, 99: 14?27.

[4] SHI X J, WANG Z F. An optimized full?text retrieval system based on lucene in oracle database [C]// 2014 Enterprise Systems Conference. Shanghai: IEEE, 2014: 61?65.

[5] 杨凯.数字图书馆个性化搜索引擎的用户建模[J].现代电子技术,2016,39(7):97?102.

YANG Kai. User modeling of personalized search engine for digital library [J]. Modern electronics technique, 2016, 39(7): 97?102.

[6] TIAN X. Extracting keywords with modified TextRank model [J]. Data analysis & knowledge discovery, 2017(2): 28?34.

[7] CHEN G, FU K, LOZA A, et al. PageRank tracker: from ranking to tracking [J]. IEEE transactions on cybernetics, 2014, 44(6): 882?893.

[8] 林俊鸿,姜琨,杨岳湘.倒排索引查询处理技术[J].计算机工程与设计,2015(3):572?575.

LIN Junhong, JIANG Kun, YANG Yuexiang. Query processing strategies based on inverted indexes [J]. Computer engineering and design, 2015(3): 572?575.

[9] 俞婷婷,徐彭娜,江育娥,等.基于改进的Jaccard系数文档相似度计算方法[J].计算机系统应用,2017,26(12):137?142.

YU Tingting, XU Pengna, JIANG Yue, et al. Text similarity method based on the improved Jaccard coefficient [J]. Computer systems & applications, 2017, 26(12): 137?142.

[10] 李夏梦,潘广贞.基于消息摘要算法第五版和IDEA的混合加密算法[J].科学技术与工程,2017(9):233?238.

LI Xiameng, PAN Guangzhen. Message?digest algorithm 5?IDEA based hybrid encryption algorithm [J]. Science technology and engineering, 2017(9): 233?238.

猜你喜欢

信息检索
基于信息检索课的大学生信息检索行为调查研究
高职院校图书馆开设信息检索课的必要性探讨
基于MOOC理念的“翻转课堂”教学改革探索——以海南大学《文献信息检索与利用》课程为例
网络环境下数字图书馆信息检索发展
医学期刊编辑中文献信息检索的应用
在网络环境下高职院校开设信息检索课的必要性研究
基于神经网络的个性化信息检索模型研究
地理信息检索中空间相似性度量的一种模糊方法
高校图书馆信息检索课程教学改革
教学型大学《信息检索》公选课的设计与实施