余栋柱
摘要 国家高质量发展战略方案有序推进,随着烟草行业监管要求不断升级,出台的规章制度与方针政策也在不断丰富与细化。内部专卖监督管理队伍的员工在烟草行业网查找自己需要的信息资料,难度也在不断加大。本文提出以垂直搜索引擎框架构为基础,构建基于烟草行业内部专卖监督管理需求的信息整合方案,旨在为烟草员工提供准确的搜索结果,实现更加有效的科学监管。
关键词 烟草行业;高质量发展;垂直搜索引擎;信息整合;科学监管
随着烟草行业内部网络信息量的不断增长以及行业监管要求的升级,员工在工作中获取自己所需信息的难度也在不断加大。行业内部网普通的搜索查询结果难以满足员工特定的搜索要求,并且上下级行业网的信息有不同程度的重复。这一现状对于烟草行业内部专卖监督管理工作的开展,进行全过程闭环监督,构建监管长效机制,带来了一定的困难。
基于烟草行业内部专卖监督管理的现实需求,为员工提供准确的搜索结果,实现有效的科学监管,需要构建一个信息整合方案,对各级烟草行业内部网进行页面净化、信息抽取、页面分类、数据挖掘等深度加工,以获取具有较高准确率、覆盖率的搜索结果。经过对比,垂直搜索引擎是符合需求的一种技术方案。
一、垂直搜索引擎的相关技术
垂直搜索引擎,是对专业特定的领域或行业的内容进行专业和深入的分析挖掘、过滤筛选,使信息定位更精准的专业搜索引擎。它是搜索引擎的细分和延伸,能针对性地为某一特定领域、某一特定人群或某一特定需求提供专门的信息检索服务,以满足用户个性化的信息需求。
二、Nutch框架的简介
作为一个基于Java 实现的开源搜索引擎,Nutch提供了构建垂直搜索引擎所需的全部工具,包括网页爬虫、网页解析器、索引器以及检索器。
总体上,它可以分为爬网程序以及搜索程序两个部分。第一是爬网程序,它使用自带的Crawl命令,负责搜集页面,并把爬取回来的网页数据,解析做成反向索引;第二是搜索程序,网络爬虫的解析器将自动分析页面,搜索第一步的反向索引,响应用户的请求。
三、需要解决的行业需求问题
开源框架Nutch构造出性能良好的垂直搜索引擎后,依然需要解决一些特定的问题,才可满足烟草行业内部专卖监督管理的信息整合需求,主要包括:
针对上面这些问题,再结合烟草内部专卖监督管理的具体需求,还需要在以Nutch为基础的框架,增加页面解析(parser)、页面分类(classifier)、中文分词(analyzer)、检索排序(sorter)这四个关键的功能模块,用来完成页面解析分类、中文分词以及检索结果排序等功能。
四、构建垂直搜索引擎的方案
(一)网页分类的设计
本方案的一个核心功能是让网页根据我们需要的内容自动分类。classifier模块将抓取下来的网页进行个性化分类。Contents模块把烟草行业内部网页的元素数据meta data和文本内容储存起来。在Classifier模块中,维持了采用XML的配置文件进行定义分类的规则。在方案中,利用分词器Analyzer,对每个行业内部网页的内容进行分词,再将分词后的内容和classifier模块中的分类规则进行匹配检验,用分类便签信息贴给网页,这样一来,索引器就能实现网页分类的功能。
(二)网页信息抽取的设计
框架的网页解释和网页检索是两个相互独立处理的过程,笔者把烟草行业内部网页的信息抽取处理过程,划分为两部分,即抽取原始页面的结构化信息与存储抽取的结构化信息。
笔者提出的方案,把烟草内部网页的处理分成四个步骤,分别是规范化网页、净化网页、抽取结构化信息、存储信息。前三个是抽取信息的过程,最后一个是存储信息的过程。
1.网页内容的净化。普通网页包括正文内容和其他内容。正文内容是主题信息内容,其他内容是和主题信息内容关联不大的导航条、宣传信息等内容,也叫“网页噪音”。网页净化模块,就是为了尽量剔除“网页噪音”,让后面步骤里的信息抽取有更高的效率和准确率。
了解对比国内中文网页净化算法后,再结合烟草行业内部专卖监督管理的现实情况,笔者提出一种特有的网页净化算法。将HTML页面构建成一颗标签树,再利用网页的标签(主要是TABLE标签)进行分块,并对其添加语义属性。它是剪枝净化的依据,净化后的标签树再还原成“去噪后”的HTML。分块之间也有父子层次关系,这样的标签树称为扩展语义的DOM树。
2.信息抽取。通过上面网页净化步骤的处理后的网页结构相对简单,建议采用基于模版信息抽取的方式进行结构化信息抽取。制定不同的正则表达式和使用XPath技术完成信息抽取的任务。
用XPath处理结点的优势是处理字段结点全部内容为结构化数据字段值的情况;正则表达式的优势是处理文本相关方面。算法中都用它们提取结构数据的字段值。
(三)中文分析器的设计
烟草行业内部网页大多是中文字符,所以需要用Chinese Analyzer對网页做索引,进一步对网页内容进行分析处理。同时,还要对员工用户输入的中文词语进行自动分词,让系统识别出最接近语义组合的结果;然后在系统查询数据库数据的时候,对输入的查询词语分词后,得到相关的词语。
首字Hash+折半查找高,第一层Hash是根据词汇的长度来计算的,第二层Hash是首字Hash,最后得到词汇子表进行折半查找。第一次对第0个字进行Hash,所有首字相同的词语是一个子集合。这个子集合相对整个词典称为子词典。循环每个子词典。
如果这个子词典的词语数小于某个常数C(暂使用C=16),那这个子词典使用二分查找;否则继续对这个子词典做与第一次一样的Hash,分解出再下一级的子词典。
(四)检索结果的排序和分页
1.结果数据的排序。基于框架内部的Score和DocID的相关度,是本设计方案展示搜索结果的默认方式。Score是一种底层boost,它根据关键词内部评分和做索引的需要而建立。优先排序Score高的条目,再根据索引先后顺序排序,如果Score一样,先索引的排前面。
可以根据需要,在每次执行查找操作的时候,人为干预提升某个文档的相关度,只要修改boost里面的Score数值,就可以让它的搜索结果排在靠前的位置。也可以使用系统自带的Sort类对检索结果进行排序。
2.分页的解决。当查询结果数据量大,一个版面(或者web版面)无法完全显示的时候,目前通常的解决方案有如下四种。第一种是利用session的暂存数据二次获取;第二种是对数据库进行多次查询获得查询目标数据;第三种,结合上面的第一种缓存和第二种的多次查询;第四种,则是前面一二结合缓存和多次查询后,再把数据缓存到数据库级别当中。对于烟草行业整合数据的查询,如果对定位的要求不高,第三种方式即可,当查询用户比较多的时候,推荐采用第四种方式。
这样的好处是每个检索结果在session缓存中的数据量可以进一步减少,这样就可以用它缓存更多的检索结果,能大大提升检索速度。
五、结语
本文基于烟草行业内部专卖监督管理的信息整合需求,为了信息查询操作更加方便,为了结果更符合行业部门人员的需求,提出了信息整合的方案,并对方案的设计方法作了阐述。在解决行业特定的问题的过程中,对网页内容自动分类、解析页面内容并提取、中文的分词、检索结果排序和分页提出了设计解决方案,最终满足行业自定义的信息整合需求。
(作者单位为广州市烟草专卖局)
参考文献
[1] 卷烟经营内部专卖管理监督工作指引(试行)[Z].国家烟草专卖局,2019.
[2] 陈昌平,张捷,胡州明,等.垂直搜索引擎在企业内部的应用探索[J].信息与电脑,2018(20):51-53.
[3] 赵双双,林红,李仁旺.基于Lucene的烟草个性化搜索引擎的研究与实现[J].工业控制计算机,2015,28(1):114-116.