肖招娣
(广东电网有限责任公司 佛山供电局, 佛山 528000)
对企业的审计,已经成为常态化工作,故企业内部常态化的审计和监察也成为必要。在企业的生产、经营、管理过程中,产生大量的非结构化文本。传统的企业文件监察与审计通过人工完成,需要投入大量的人力、物力、财力,无法避免人的主观因素的影响,面对海量的企业文件只能采用抽查的方式开展,难免留有死角和潜在的风险。本文提出基于NLP(Natural Language Processing,自然语言处理)的企业文件智能监察系统。其核心技术是使用NLP算法,把非结构化的文档转换为结构化的数据,存储在数据库中;将相关的企业的规章制度、管理办法以及国家的法律法规拆分成一条条审计规则,存放在知识库中;基于知识库,使用专家系统及统计分析,对企业文件进行智能监察。
该企业文件智能监察系统包括3个核心功能模块:
非结构化数据结构化处理模块,该模块主要使用自然语言处理技术,借助R语言或者Python的函数,将文档转化为结构化数据存放在数据库中,减少数据的体量,大幅度降低数据处理的技术难度。
文件监察规则管理模块:该模块主要运用知识库管理系统,实现对监察规则的管理。这也是智能监察功能的基础。
智能监察模块:通过运用专家系统或者统计建模分析,实现对文件的智能监察。
如图1所示。
图1 系统架构图
2.1.2 数据去重
从非结构化数据中结构化处理过程得到的数据最终将存储在关系型数据库中。为了避免数据冗余,为了避免重复对一个文件进行两次或者两次以上的结构化处理(该处理过程需要花费一定的时间和计算资源),需要进行必要的去重。文档查重常用的算法有simHash和minHash算法,通常使用局部敏感散列LSH。其中simHash是Google提出并且使用查重的算法。
本文使用simHash算法查重,如图2所示。
图2 simHash原理图
简单说来,simHash的原理是:将一份文档转换为64字节的特征字,然后判断重复只需要判断他们的特征字的距离是不是 2.1.2 数据转换 由于结构化数据的处理相对半结构化数据、非结构化数据的处理更为简单,且有不少现成的工具和方法可用。为了降低非结构化文件的智能监察的技术难度,也为了减少数据的量体,本文首先对非结构化数据进行结构化处理。非结构化数据结构化处理的过程,其核心为正则表达式的使用,从海量的非结构化数据中提取出关键信息。R语言和Python均提供了一系列的方法帮助实现非结构化数据的结构化处理。 在R语言中,需要用到几个重要的函数,包括gregexpr( )、substring( )、strsplit( )和grep( )函数。其中,gregexpr( )、strsplit( )和grep( )函数是正则表达式相关的函数。而substring( )函数为字符串函数,用于提取字符串子集。 在Python中,更是提供了强大的正则表达式功能,相关函数有match( )、search( )、split( )、group( )、compile( )、sub( )和subn( )等函数。同时,在处理海量文本时,由于单纯使用正则表达式的效率较低,可以使用Python的开源库FlashText提取关键字,提高效率。 对企业文件的审计和监察,无非是对海量的企业文件进行合规性和合法性的审查,及时发现存在审计风险的问题,第一时间提醒相干人在文档修订过程中完成整改,防患于未然。本文使用Wiki的知识库管理系统进行审查规则的管理,包括添加、修改、删除和查询等功能。知识库分主题进行规则管理,对于每一类文件的审查,均会将相应的法律法规、公司内部的规章制度和管理办法拆分成一条条规则。 专家系统是一个智能计算机程序系统,基于其内部存放的大量的某个领域专家的经验及知识,应用人工智能技术和计算机技术,模拟人类专家的决策过程,进行推理和判断,能够利用人类专家的知识和解决问题的方法来处理该领域问题。 本文应用的是基于规则的专家系统,如图3所示。 图3 专家系统架构图 专家系统通常由人机交互界面、知识库、综合数据库、推理机、解释器、知识获取等6个部分构成。在本系统中,知识数据库有专门的功能模块,其中包括了知识获取的功能;综合数据库即用于存放非结构化数据结构化处理后得到的数据的数据库。系统需要着重实现的功能是解释器和推理机部分,为了简化开发过程,本系统使用了开源的专家系统。 在智能审查方面,涉及两类的主要的方法。大部分情况下,使用专家系统,结合知识库固化的规则,即可完成智能审查。但是专家系统具有其优点的同时,也具有其缺点,具体说来包括: (1) 规则之间的关系不透明。在基于规则的系统中,由于基于规则的专家系统缺乏分层的知识表达,难以观察单条规则如何对整个策略起作用。 (2) 低效的搜索策略。推理引擎在每个周期中搜索所有的规则。当规则很多时,系统速度会很慢。 (3) 没有学习能力。修改和维护系统的任务仍然由知识工程师来做。 故而对于一些审计规则较为复杂的情形,本文使用统计建模进行分析,通过编程为特定的审计规则实现专用的功能,以此提高系统的效率。 发现问题最终是为了解决问题。智能监察模块的存在,主要是为了及时发现企业文件编写过程中存在的风险,将监察结果及时反馈到合同起草、项目文档审查等过程中相关干 系人环节,提出问题及整改意见,避免错误成为定局,避免给企业和个人带来不必要的风险,实现安全从业。 为了实现辅助整改的功能,该系统在开发的过程中,开发了一系列的API供各信息系统在流程中调用。同时,为了提高系统的实时计算的性能和效率,负责计算的应用服务器采用负载均衡的方式进行部署。 针对企业日常生产、经营、管理活动过程中产生了大量的文件,仅依靠法务工作者及监察审计人员肉眼审阅,已经无法满足监管需求的现状,本文研发了一套基于人工智能技术的企业文件智能监察系统。该系统首先利用自然语言处理技术对非结构化数据进行结构化处理;再结合知识库对审计规则进行管理;最后使用专家系统及统计建模分析,完成对企业文件的智能审查。 通过该系统的研发与应用,使得对企业文件实现全面监察成为可能,解放了劳动力,保证了监察结果的客观性,提升了工作效率,为企业员工的安全从业提供了技术保障。 [1] Rishi Nalin Kumar.从原始数据到数据科:使非结构化数据结构化,以推动产品开发[EB/OL].周元昊,译.(2016-12-28). http://www.infoq.com/cn/articles/raw-data-to-data-science. [2] 文档去重算法:SimHash和MinHash[EB/OL].[2017-01-01].http://m.blog.csdn.net/lafeedfh/article/details/51997814. [3] simhash算法原理及实现[EB/OL].(2014-01-30).https://yanyiwu.com/work/2014/01/30/simhash-shi-xian-xiang-jie.html. [4] 使用SimHash进行海量文本去重[EB/OL].[2016-05-30].https://www.cnblogs.com/maybe2030/p/5203186.html. [5] 基于规则的专家系统的优点和缺点[EB/OL].(2012-09-13).http://book.51cto.com/art/201209/356613.htm. [6] 丁世飞.人工智能(第二版)[M].北京:清华大学出版社,2015. [7] 蔡自兴,(美)约翰·德尔金,龚涛.高级专家系统:原理设计及应用(第2版)[M].北京:科学出版社,2017. [8] 王众托,吴江宁,郭崇慧.信息与知识管理(第2版)[M].北京:电子工业出版社,2014. [9] Steven Bird.Python自然语言处理[M].北京:人民邮电出版社.2014. [10] 章宗庆.统计自然语言处理(第2版)[M].北京:清华大学出版社,2013:73-104. [11] [印度] Deepti Chopra, Nisheeth Joshi, Iti.精通Python自然语言处理[M].北京:人民邮电出版社.2017. [12] [印度]Deepti Chopra, Nisheeth Joshi,Iti Mathur. Mastering Natural Language Processing with Python[M].Packt Publishing,2016:79-103. [13] 郑捷.NLP汉语自然语言处理原理与实践[M].北京:电子工业出版社,2017. [14] 张文宇,薛昱,苏锦旗,等.知识发现与智能决策[M].北京:科学出版社有限责任公司,2017. [15] Yoshua Bengio.人工智能中的深度结构学习[M].北京:机械工业出版社,2017.2.2 审查规则管理
2.3 智能监察
2.4 辅助整改
3 总结