面向自然语言处理的流式计算框架
2018-08-19陈珉彭鸾李钊
陈珉 彭鸾 李钊
摘要:近年来,自媒体发展速度非常迅猛,传统媒体积极拥抱新媒体,加速媒体深度融合步伐。媒体生产数据、互联网发布的数据,每天有海量的数据需要分析处理,用于热点新闻发现、新闻选题评价、传播效果分析等应用场景。传统的数据分析框架已经不能满足用户实时数据分析和查询的需求。本文提出一种能够适应用户连续处理分析海量文本数据的框架,具有低延时、可扩展的特点。
关键词:自然语言处理;流式计算;传统媒体
一、背景
当前,大数据产业深刻改变着人类的生产和生活。地方媒体详细记录了地区发展变迁的历程,存有大量的文字、图片、视频等历史资料。同时,在互联网上每天有海量的新闻产品发布。将这些沉睡的、分散的数据有效汇聚、管理、挖掘、应用。在支撑媒体产品生产同时,服务于媒体自身的精准营销,还可以高效便捷的为政府机构、社会企业与民众提供资料网络查询、城市资讯综合服务等。逐步实现传统媒体和新媒体的融合发展,变“内容为王”为“信息服务为王”。
二、面向自然语言处理的流式计算框架设计
本文选用JStorm框架为流式计算平台的基础,完整的面向自然语言处理的流式计算框架,包含数据源模块、预处理模块、实时计算模块、存储模块以及反压机制。
(1)数据源模块
数据源模块的作用是将数据不断的送入JStorm中。本框架中采用的方法是接收用户提交TXT、WORD、PDF、XML格式的文件,通过不同格式的文件解析器,解析文件中的内容信息。之后,将大文本拆分为多个小文本以及进行数据格式封装。数据封装是为了加入文本标签、文本归属、唯一标识、调用的算法等信息,完成封装后,进入Redis缓存。
(2)预处理模块
预处理模块的作用是对需要处理的文本进行预处理。预处理模块在JStorm中是一个Bolt组件,包含了中文分词、信息抽取等基础算法。对待分析文本调用哪些基础算法,根据数据源模块中的封装定义的。
(3)实时计算模块
文本数据流通过实时计算模块分别流入不同的具有高并行度的任务中,任务中运行的是不同的算法,使用分布式锁来保证数据的最终一致性。对任务的管理使用动态平衡算法对任务分配规则加载,而不会影响正常的处理過程。这样的机制具有很高的动态稳定性,无论是动态增加计算能力,还是动态管理算法配置,都不会影响正常的服务。开发人员需要实现框架针对应用开发人员提供的API,对数据对象、计算逻辑进行内部封,也可以完成词库和算法模型的调用。
针对自然语言处理的使用场景,对JStorm的实时计算框架进行了一些优化处理。实时任务查询功能,根据数据源模块中封装的唯一任务标识进行任务进度查询。图形化任务发布功能,是在网页上可以将算法任务发布成处理的任务。任务分配模块,主要是优化算法调用的顺序,通过Redis通知来实现。滑动窗口管理,通过定时输出采样数据,使用TOPN算法,输出滑动窗口内,系统的数据统计特征。
(4)存储模块
存储模块是将分析处理后的结果落地,用于可视化的展示使用。存储模块分两类,一类NoSQL数据库,一类是网络文件系统NFS。在实时计算平台最后一个Bolt节点,使用Redis数据库将计算结果缓存下来,并发送消息通知给可视化展示模块。可视化展示模块,在收到通知后,将最终的结果用JSON格式存储在文件系统中。对于中间过程,可视化模块通过展示Redis缓存数据,可显示中间过程。使用Redis作为缓存,保证了在计算节点宕机的情况,数据的恢复能力。
(5)反压机制
由于Spout数据源的处理能力不均及承载算法Bolt节点的任务处理时长的差异性,导致Tuple数据流有时存在超时现象,影响系统整体的吞吐量及其性能。本系统是在Spout节点中使用基于队列的数据流反压机制来优化上述问题。在Spout节点中订阅Redis通知,在收到Redis推送的通知后,将消息ID和消息内容压入消息队列,消息队列使用LinkedTransferQueue和ConcurrentHashMap实现数据对象的临时缓存。不断调用的nextTuple函数会从消息队列中拉取消息,并发射数据到Bolt算法节点中。
三、物理部署
流式计算系统部署主要分为五大块,实时计算集群、离线计算集群、网络应用服务器、数据库集群以及性能监控预警;实时计算集群主要提供实时计算平台用于实时数据分析服务;离线计算集群提供的是离线计算平台,主要用于语料处理、词库训练以及语料存储等功能;网络应用服务器用于向外提供基于Web的显示服务,数据库集群部署关系型数据和非关系型数据库,分别用于存储业务数据和词库数据。各个分隔的模块之间用消息服务连接。整个平台使用性能监控预警服务对平台的运行情况进行全面的监控管理。
四、结语
面向自然语言处理的流式计算系统符合目前主流的云平台结构设计,确保实用性、开放性系统易维护的原则。系统以B/S结构为主,系统提供的自然语言处理计算服务,满足传统媒体对于热点新闻发现、新闻选题评价、传播效果分析等场景下的业务需求。
参考文献:
[1]蒋晨晨,季一木,孙雁飞,王汝传.基于Storm的面向大数据实时流查询系统设计研究.南京邮电大学学报2016.6
[2]李昊鹏.流式计算的研究与应用.理论探索.2017.10
[3]熊安萍,朱恒伟,罗宇豪.Storm流式计算框架反压机制研究.计算机工程与应用.2018.54(1)