基于文本信息的PDF文档管理系统设计与实现

2020-12-08 07:54王春伟李英伟
燕山大学学报 2020年6期
关键词:词频排序文档

王春伟,侯 方,申 升,南 赛,李英伟,*

(1. 燕山大学 信息科学与工程学院,河北 秦皇岛 066004;2. 大庆油田信息技术公司 北京分公司,北京 100043)

0 引言

目前企业知识创新成为互联网企业生存并获取竞争优势的重要砝码,企业管理不得不将重心逐渐向知识管理偏移[1],而在互联网企业内部的日常管理、人员管理、设备运行等诸多工作都要依赖IT运维管理系统,已经严重降低了企业的效率,缺少知识管理的IT运维管理平台已经面临巨大的压力[2]。在智能化IT运维管理平台中,其有形知识主要存储在数据库或者企业的终端电脑中,而隐性知识则存储在企业内部员工的大脑中,隐性知识只能通过员工之间的交流、总结、会议和汇报等非正式方式获取[3]。因此,在研发智能化IT运维管理平台时,加入对PDF文档管理研发的需求,使用户能够快速有效检索到想要查询的文档内容,在企业内部之间实现知识共享[4]。但是针对PDF文档管理系统的研发存在几点问题,例如,文档解析工具不足,企业信息知识多以PDF文档的格式进行存储,只能根据PDF文档的标题进行分析检索,造成了信息检索准确度的降低,无法将有效的相关PDF文档全部检索出来[5],知识文档检索效率低,企业内部员工在查阅知识文档时非常耗时,导致知识的传递效率低,不利于企业工作人员高效学习现有知识,而且也没有办法为平台故障及时提供有效的解决方案,造成了资源的浪费[6]。

PDF文档管理系统中存在的上述问题已经给智能化IT运维管理平台的长远发展带来了威胁,因此,如何尽快地提供一个有效解决智能化IT运维管理平台故障的方案,提高工作效率,已经成为企业不可避免的难题。通过构建PDF文档管理系统可以形成企业内部知识库,然后通过PDF文档管理系统进行知识共享,提高企业员工的日常工作效率和对知识的创新,与此同时可以为智能化IT运维平台故障提供高效的解决方法,省去人力物力资源的消耗[7]。

1 PDF文档管理系统整体设计

PDF文档管理系统的核心模块主要是PDF文档解析模块和检索模块。系统工作流程如图1所示,企业中员工将值得学习与分享的文档上传到企业文档库中,形成一个不断更新的PDF文档库,当其他员工或部分组织想查看相关文档时,只需通过检索界面进行搜索。在系统搜索的过程中,PDF文档首先需要进行文档解析转换为.txt格式文件,再通过结合向量空间模型的TF-IDF(Term Frequency-Inverse Document Frequency)算法计算文本权重值,最后根据计算所得权重值将一定数量的文档排序,且展示在前端web界面上,使得排序结果更符合检索者的需求。

2 系统核心模块设计与实现

2.1 基于Stream流的PDF文档解析模块

PDF是现在企业知识管理中存储知识的主要方式,而基于对整个系统的性能和效率的考虑,本系统解析模块采用C语言从文档格式上进行编程,通过对Stream流的分析来加快PDF文档内容解析的速度,在对其解析之前,将基于Linux系统的Stream流解析环境搭建好,之后通过Linux环境中的stat()接口函数去读取PDF文档的大小并将其转换成二进制流读入,之后加载一些解析配置文件。本系统的解析模块根据PDF文档的结构特性和一系列文档中的对象属性标签,可以很容易找到Page页对象属性后面的/Contents,再通过pdf_get_cidcontents()接口函数获取Contents内容信息,将所有的内容对象信息进行提取和拼接操作,最终得到整个PDF文档的文本内容数据。

PDF文档中字型信息被放在额外资源的Pages或Page对象的Resources属性中,对于转码操作先判断字型信息中ToUnicode相关属性是否存在,若存在,则将后接的串流对象表示用来转换成Unicode码的CMap码;若不存在,则需要观察Type属性和Subtype属性,Type后接名称对象Font;Subtype后接表示字型型态的名称对象,分别为Type0、Type1、MMType1、Type和TrueType。对于非Type0的字型,输入的字符编码都是1 byte,将输入字码从Encoding CMap信息中取得该字码对应的字符名称,依照取得的字符名称转成对应的Unicode字码;而Type0字型的输入字码可以是多位,1 byte、2 byte和4 byte可以一起混用,所以要取得宽度信息和 Unicode 字码是比较复杂的。Type0字型转码流程如图2所示。

2.2 PDF文档检索模块

PDF文档检索的排序功能是通过计算检索问题与文档关键词之间的相似度,通过排序帮助用户尽快获得其需求的文档或解决平台的告警的问题,本文采取基于TF-IDF的空间向量模型排序算法实现排序功能。由于传统的TF-IDF算法具有许多缺点[9],对于词频(TF,Term Frequency)来说,词频值大时,确实可以象征其对文本的代表性,但是当词频超过一定阈值后继续增大,会导致文档权重偏高,不能更准确地反映出文档权重。且TF-IDF算法不能反映词的位置信息,在对关键词进行提取的时候,词的位置信息,例如文本的标题、文本的首句和尾句等含有较重要的信息,应该赋予较高的权重。逆文档频率(IDF,Inverse Document Frequency)表示包含该关键字的PDF文档数量,文档集中包含关键词的文档数量越多,表示该关键字在搜索的问题中不重要。为此,针对词频(TF)和逆文档频率(IDF)进行了相应的改进。由于在检索的时候关键词在文档集中没有出现,可能导致分母为零,造成系统抛出异常,因此,fIDF计算表达式为

(1)

式中,M为文档集总数,当t=1,fIDF值为最大的时候,该关键字在搜索中重要性为主要的词汇;当t=M的时候fIDF的值接近为0,说明任意一篇知识文档都包含该词,因此在文档集中是属于无关紧要的词汇。

词频表示文档的关键词在某一篇PDF文档中出现的次数,得到的词频次越大,表示该文档与检索的关键词越有可能相关。如果PDF文档内的某个关键词出现的次数太多,会影响权重值的计算,导致最终PDF文档的权重值很高,进而排序的名次很高,影响排序的公正性。针对上述缺陷对词频进行改进的解决方案有两种,一种是“亚线性变换”,另一种是“BM25变换”,如图3所示,亚线性变换就是使用log函数,函数y=x的增长率要比函数y=log(x+1)大很多,因此,当一篇文档中关键词的词频越多,超过某一个值后,对权重的影响也就变得趋近于一直稳定的值。而对于y=log(log(x+1)+1)函数,开始时刻随词频增量的增加,fTF值并没有相对较快的增加变化,并不符合相应需求。修改后的fTF表达式为

fTF(w,d)=log[1+c(w,d)]。

(2)

图3中,BM25变换在记录词频的时候给出一个上限,当一个词从无到有,是有很重要的价值,但是如果一个文档中包含了该关键词10次及以上,基本上不会产生太大的差异,所以在设计的时候适当降低词频的影响,随着词频的变大,可以得到表达式为

(3)

式中y的值最终会无限接近于k+1,其中k为设置词频的上限。进而得到改进的fTF′表达式为

(4)

通过图3(k值设为2,对数函数使用lg),比较上述两种解决方案,可以看到BM25变换要优于亚线性变换,所以在系统设计中选用BM25变换的解决方案。另一种可能是一个很长的文档叙述了很多内容,每个内容是一个小段落,这样的文档其实就是一篇篇小文档构成的,在这种情况下,词的权重计算值是不同的,因此,对篇幅较长的文档中的关键词加入扼制因子,对于篇幅较短的则反之。这里采用的算法为Pivoted Length Normalization,该算法需要参数fnormalizer来进行TF-IDF的权重平衡,fnormalizer的计算式为

(5)

图4为算法Pivoted Length Normalization的变化规律,当b=0的时候,所有值都为1,没有扼制,对文档没有任何影响;当b>0的时候,当文本长度小于avdl,fnormalizer的值小于1,关键词权重值则增加;当文本长度大于avdl,fnormalizer的值大于1,关键词权重值则减小。

加入扼制因子后fTF-IDF表达式为

fTF-IDF=

(6)

式中,参数z通过判断关键词在文档中的位置增加或者减小该关键词在文档中的权重,如果关键词的位置在标题中出现,则增加该关键词的权重值,如果没有则为1。

经过上述对TF-IDF算法的改进研究,我们需要将改进算法融入向量空间模型中使用,向量空间模型是一种广泛应用于文本分类等领域的计算模型[10],在根据优化后的TF-IDF算法得到文档关键词的权重后,利用空间向量模型对每个文档的权重进行计算排序,按照最终的每篇文档权重值从高到低进行展示。

3 系统性能测试与分析

为了验证本系统对PDF文本解析速度的高效性,引入Apache-Tika工具[10]作为对比。Tika是基于Java的内容检测和分析的开源工具包,可对多种文件类型进行内容分析,普遍应用于文本管理系统的解析模块。本实验通过比较Tika工具和本文PDF文档解析方法的时间,分析两种方法解析的效率。PDF文档解析时间对比如图5所示,本文方法对PDF文档解析的时间明显小于Tika工具对文档解析的时间,证明了本文方法在性能上要比Tika文档解析工具更快,提高了系统的性能。

然而对于排序功能与性能的测试,通过对检索排序算法的优化融合和程序上的实现,将500篇IT运维技术相关PDF文档添加到数据库中。从知识文档管理系统主界面图可以看到,通过对IT运维管理中常见的问题“服务器CPU占用率过高内容溢出”进行检索,可以从界面显示得到与该问题相关的14篇文档,然后记录前10篇PDF文档的权重值计算结果和检索时间。PDF文档检索信息结果如表1所示。为保证系统性能,从检索时间对本文算法与TF-IDF算法与空间向量模型计算文档权重的时间进行比对。从图6中可以看到对于检索不同的IT运维问题,3种不同排序算法所需要的时间对比,本文算法相对比TF-IDF算法和空间向量模型的计算耗时要略长一些,但仅仅是几十毫秒间的差距,况且在用户检索过程中,页面加载用时要远远超过算法用时,界面加载时间可能跟文档的大小、界面等因素有很大的关系,因此本文算法产生的额外耗时可以忽略不计。除算法耗时外,可以针对不同排序算法的准确度进行比较。

表1 PDF文档检索信息表Tab.1 Table of retrieval information for PDF documents

准确度(Precision,P)是返回结果中用户需要的文档所占的比例,对于评价该方法的准确度而言,需要对不同的问题进行查询测试,对每次查询分别计算Pk(Precision atk)[12],当k=5时,P5表示返回前5个结果的准确度,将查询20次的结果P5平均值作为系统整体的P5值。对于查询q问题时,检索结果中位置k处的准确率公式为

(7)

式中,dk为排序列表中位置k处用户需求文档标签,用户检索问题符合则标签为1,反之为0。针对IT运维管理系统中比较容易出现的故障进行检索,检索结果分别用TF-IDF、空间向量模型和改进算法进行排序,分别对每种算法的准确率结果进行统计,得到的结果本文算法在准确率上要比TF-IDF和空间向量模型算法更高。检索排序准确率统计结果如表2所示。

表2 检索排序准确率统计结果Tab.2 Statistical results of retrieval and sorting accuracy

从表2中可以看到当k=3时,本文改进算法的准确率明显高于TF-IDF算法和空间向量模型方法,当k=5时,3种算法的准确率相差不多,可见本文算法的效果要好于TF-IDF算法和空间向量模型方法。

4 结论

本文根据PDF文本管理系统设计需求,针对PDF文件解析速度慢,自行利用C语言编写设计PDF解析工具,完成内容解析模块的开发。又针对TF-IDF算法存在的天然缺陷进行改进,融合向量空间模型,提出新颖的检索排序算法并完成检索模块的开发。最后经过系统测试,证明了本文PDF文档管理系统在文本解析效率上对比开源的Tika工具具有明显效率优势,且在文本检索功能的准确率上高于TF-IDF、向量空间模型方法,为企业级智能文档管理平台提供有效和实用的方案。

猜你喜欢
词频排序文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
作者简介
恐怖排序
节日排序
词汇习得中的词频效应研究
汉语阅读中词频与注视时间、跳读的关系
Word文档 高效分合有高招
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
词频,一部隐秘的历史