本文来自获得《2021MongoDB技术实践与应用案例征集活动》入围案例奖作品
作者:张先明
1. 背景介绍
成立于上个世纪 50 年代,有 60 多年历史的某中心(以下简称“中心”)所提供服务的属性是软科学;中心服务提供的产品是大量面向专业的,高质量的专业技术报告。如何更好的利用这些海量的文献以促进工作发展,是一个中心要面对的问题。
为此,信息化部门开始着手建设“信息资源共享系统”(以下简称“系统”)。系统的建设目
标与意义是:
在单位内部,开展不同部门之间的信息资源的共用,以便达到合理的资源配置;
提高信息流动速度,降低获得成本;实现内部信息资源的通畅,提高信息资源利用率;
实现中心内部信息共享的积累与充分共享为最终目标。
2. 系统使用技术
2.1 系统建设面临的要点
经过调研,中心认为可以借鉴互联网用户经常使用的百度,搜狗这样的网络检索系统。互联网用户检索出来的是各类网页,而本系统用户检索出来的是中心所拥有文献。基于这一点,我们要考虑如下几个要点:
1.如何把中心大量的文献保存在一个数据平台当中,这个平台不仅要完好的保存文献,还要提供高效的查询,导出服务。
2.一个文献往往有几万个汉字,如何让用户以最快的速度了解这个文献的内容,以判断内容是否符合用户的要求。
用户检索一方面要能找到相关的文献,另一方面检索的速度要符合通行的标准:对用户请求的响应时间不超过 3 秒。
从这几个要点来看,传统的工程建设方法(比如基于关系型数据库)已经力不从心,所以这里引进符合要求的大数据以及互联网等技术。
2.2 系统建设所使用技术
系统建设所使用的技术有如下几项:面向大数据库存储的文档数据库MongoDB;提高了检索质量,有利于前后端分离的微服务 SpringBoot,以及对文献进行文字处理的自然语言处理技术(NLP)。下面大致介绍一下这几项。
2.2.1 MongoDB 数据库
本系统部使用的数据库版本为3.6,部署服务器操作系统windows server 2008。由于服务器硬件和操作系统软件性能质量都比较一般,数据库在系统运行中的性能发挥的不是最优。
2.2.2 微服务以及 SpringBoot
微服务的最重要的特征是由于服务较小且可独立部署,因此不再需要繁琐的行动才能更改应用程序小部分内容。SpringBoot 是 Java 领域微服务架构最优落地技术,Spring Boot 2.0+MongoDB 3.6 方案是在本系统所使用的服务端方案。
2.2.3 自然语言处理
自然语言处理( NLP)以语言为对象,把计算机作为语言研究的强大工具,在计算机的支持下对语言信息进行定量化的研究。这里我们使用两个重要的部分:
1.自动摘要。利用计算机按照某一规则自动地对文本信息进行提取、集合成简短摘要的一种信息压缩技术,旨在实现两个目标:首先使语言的简短,其次要保留重要信息。
2.关键词提取。从文本里面把跟这篇文章意义最相关的一些词语抽取出来。关键词是为了文献标引工作,从报告、论文中选取出来用以表示全文主题内容信息的单词或术语。
摘要和关键词在系统建设方面有着重要的应用,它是进行工作不可或缺的基础和前提。本系统使用 java 工具包 ansj 来执行此类工作。
另外由于中心产生的文献保存格式基本为:pdf,word,excel,ppt 格式。所以本系统使用相应的 tika 软件包把文件中的文本内容抽取出来,然后再对文本内容进行自动摘要、关键词提取工作。
3. 系统设计
系统主体功能模块有以下两个模块组成:信息采集、信息检索。
中心使用“信息采集”模块对移交过来的大量文献进行批量的采集处理,将处理结果保存在数据存储当中。用户使用“信息检索”功能对采集结果进行检索,并对检索出的结果进行详情阅读等操作。这里要注意的是,本文所用的样例文献都来源于公开的新闻网站。
3.1 信息采集
3.1.0 工作过程
一个文献被采集进入系统的过程步骤如下所示:
1.文件采集
文献从硬盘中读取,解析生成元数据
文献本身和元数据保存在数据库
2.全文抽取
把全部文本从文献抽取出来
保存在 MongoDB 当中
3.自动摘要和关键词提取
分析上一步得到的全文,提取摘要和关键词
保存到数据库当中
4.文献间相关度计算
把文献的关键词和其它文献的关键词进行计量
把符合条件的结果保存到数据库当中
该模块内容如下:文件采集、全文抽取、自动摘要与关键词提取、文献间相关度计算。文章不仅介绍了各个子模块的工作内容,还用图例显示工作效果。
3.1.1 文件采集
文件采集是在后台服务器上实现的。对准备好的大批量文献进行批处理,逐一进行读取,生成元数据(年份、作者、部门等)。将文献本身和生成的元数据保存到数据库当中。
图 1. 服务器上准备好的待采集的文件。可以看到要做实例文献的“温润如玉的长荣航空皇玺桂冠舱.docx”,该文献大小为 9MB。
图 2.采集后文献保存在 MongoDB 数据库(GridFS)当中。从图中可以看到保存在数据库当中的“温润如玉的长荣航空皇玺桂冠舱.docx”文献,数据库管理员可以完整地把文献下载到本地。
图 3.显示了该文献生成的元数据(部门:管理所,年份:2019,种类:报告…..)。要注意的是,这些文献是作为 pdf/doc/ppt 等格式文件整体保存在数据库中的,用户并不能查看其内容以及进行内容检索。
3.1.2 全文抽取
对上一步保存好的文献进行读取,读取出全部文本内容,然后把这些内容保存(MongoTemplate 技术)数据库中。
图 1.保存在数据库中的全文。由于文献内容比较多,读者只可以看到部分内容。实际上的全文字数已经超过了一万多字。
3.1.3 自动摘要与关键词提取
使用 NLP 处理软件包对从“温润如玉的长荣航空皇玺桂冠舱.docx”抽取的全文,进行摘要的自动生成和关键词抽取.并保存到数据库(MongoTemplate 技术)当中。
图 1. “温润如玉的长荣航空皇玺桂冠舱.doc”的自动摘要生成内容。
图 2. 提取出来的关键词。本文献提取出来的关键词为: 长荣,航空,商务舱,休息室,座位,桂冠舱,台北等。
3.1.4 文献间相关度计算
当一个用户对发现了一篇对他工作有用的文献之后,想必还想进一步了解一些相关的文献。系统在后台在对每一篇文献进行相关度计算,得到一批与这篇文献相关的文献,并保存下来,供用户使用。
该功能背后的数据科学原理就是可信度计算:同时出现在文献 1 和文献 2 的关键词个数占文献 1 关键词个数的比例大小,取值为(0,1],数值越大,相关度就越高。“温润如玉的长荣航空皇玺桂冠舱.docx”相关的文献集合如下, 可以看出来,这些文献都是关于民航飞行的。
加拿大航空国际商务舱体验.docx 相关度 0.5
长荣航空创始人.docx, 相关度 0.4
追寻瑞士航空曾经的风花雪月.docx, 相关度 0.5
家常温馨的韩亚航空长途商务舱.docx 相关度 0.35
香港航空即将开通首条新西兰奥克兰航线.doc 相关度 0.3
日本航空 JL009 芝加哥-东京成田.docx 相关度 0.3
又见风挡破裂.docx, 相关度 0.3
航空安全榜.docx, 相关度 0.29
当你在飞机上睡着时.docx 相关度 0.37
3.2 信息检索
3.2.0 工作过程该功能是面向中心广大用户的,用户可以使用这个功能模块在网页上进行相关检索,系统对每一次操作的工作过程大体用下图可以说明:
该功能涉及到系统的三层结构:网页前端、运行在服务器 JAVA EE 平台的微服务架构,还有文档数据库 MongoDB。
服务器部署的微服务概览所下图所示:
该功能模块可以分为以下几个子模块: 关键词检索、文献信息浏览。
3.2.1 关键词检索
信息检索模块主要是面向中心广大用户的,它提供了一种类似于百度检索的功能:用户在文本查询框中输入关键词后,页面返回一批相关的文献数据,用户可以查看详细内容。系统提供了文件名检索、目录(摘要和关键词)检索、全文检索。
图 1. 用户检索文件名称包含“发动机”的文献。用户提交了关键词“发动机”后,网页就显示出相关的文献集合。如果文献数量太多,用户可以点击分页查看更多的内容。本次检索出72个相关的文献内容,左侧显示了对这72条记录进行了相应的分类汇总(密级、年度、作者、部门等)
图 2. 显示了每一条记录(文献)展示给用户的内容。包括了文件名称、摘要(如果字数太多则截取前几十字)、关键词、密级、年度等。
如果用户想对其中一条查询结果进行进一步的了解,用户可以打开新的页面查看。
图 1. 显示了用例“普惠推出新的航空发动机 MRO 服务品牌 EngineWise”
本功能不仅显示了一条文献的详细信息,而且还显示了与这个文献有一定相关度(推荐阅读)的其它文献简要信息。
图 2. 显示了“普惠推出新的航空发动机 MRO 服务品牌 EngineWise”相关的其它文献,可以看出来本文献和相关文献都是关于发动机维修(MRO)的。
世界知名航空维修 MRO 企业:将如何前行,关联度:0.6
MRO 最大影响:大批新一代发动机迎来首次大修,关联度:0.5
国外航空发动机维修模式及其竞争关系,关联度:0.55
普惠最新财务表现,关联度:0.5
普惠公司售后市场供应链与涡轮控制签署全新 MRO 交易,关联度:0.5
看 GE 公司是如何进行航空发动机维修和维护工作,关联度:0.5
阿提哈德航空工程公司为肯尼亚 787 提供检修,关联度:0.45
航空维修,是好生意吗,关联度:0.45
有多少是使用国产发动机的,关联度:0.42143
数据如何改变飞机维修,关联度:0.4
4.系统运营情况
系统当前收录文献近 42 万件(360GB),可供中心人员进行查询和下载。系统运行性能良好,平均用户请求响应时间低于 2.5 秒。
5.将来的工作
将来的工作可以分为两个部分:事务性工作、系统功能扩展。事务性工作。
信息采集的扩大:力争 2022 年数据量达到 70 万篇(500GB)。
系统功能扩展:仿制百度,搜狗之类的互联网检索系统部分有益的功能:智能检索,以提高用户使用体验,更重要的是在使用过程中不断发现新的知识点。
作者:张先明