基于Storm的食品数据并行计算一致性问题的优化方法与流程

文档序号:16037031发布日期:2018-11-24 10:09阅读:152来源:国知局

本发明涉及数据处理技术领域,尤其涉及一种基于storm的食品数据并行计算一致性问题的优化方法。

背景技术

随着互联网的爆炸式发展以及网络设备的数量增加,数据的生成量达到了前所未有的水平。例如,推特每天会产生500万条新的推文,新浪微博每天会产生超过1亿条内容。传统的数据处理方式已经远远不能满足如今数据的增长,对于传统的聚类来说,多次迭代很难应用到如此巨大的数据量上,无论计算效率与实时性都不能满足要求。随着数据产生速度的爆炸,流式数据挖掘逐渐成为数据挖掘的主流,与传统的数据挖掘相比,流式数据挖掘在效率和时效性上远远胜于传统迭代方式的数据挖掘,但是流式数据挖掘不允许反复扫描历史数据,需要通过一次聚类算法进行处理,因此计算结果准确性较差。

聚类是流式数据挖掘之中最基础和最重要的技术之一,是从复杂的数据当中,将相似的数据进行分组,将结果用于接下来的数据发掘。鉴于聚类算法的重要性,已有多种不同的流式聚类算法被提出,应用于各个方向,例如,single-pass算法提出流式聚类的基本思想,著名的clustream算法着重于效率,大约将计算效率提高至50条每秒,还有针对于任意形状的簇进行聚类。

单遍法或单道法(single-pass算法)是流式数据聚类的经典算法,对于依次到达的数据流,该算法按照数据的输入顺序,每次处理一个数据,对其进行聚类,依据该数据与已有类的数据进行相似度计算,将该数据判断为已有类或者形成一个新类,用来进行事件的提取与追踪。但是聚类结果依赖于数据的输入顺序,而且算法精度不高。

过去十年是数据处理变革的十年,mapreduce(映射归约)模型、hadoop(海杜普)模型以及一些相关的技术能够处理的数据量比以前要大得多,hadoop已经成为批处理的标准,然而人们对于实时处理的要求越来越高,大规模的实时数据处理已经越来越成为一种业务需求,但是hadoop无法进行数据的实时处理。



技术实现要素:

为解决现有技术存在的局限和缺陷,本发明提供一种基于storm的食品数据并行计算一致性问题的优化方法,包括:

获取食品数据;

通过第一层spout节点将所述数据随机分发给第一层bolt节点;

使用正向最大分词方式对所述数据进行分词;

根据tf-idf算法将分词之后的数据聚类分发给第二层bolt节点,获得向量化之后文本的表示形式如下:

d={(t1,w1),(t2,w2),(t3,w3),......,(t4,w4),}(1)

其中,t1、t2、t3…tn为特征项,w1、w2、w3…wn为对应所述特征项的权重值;

将文本向量化之后的数据聚类分发给第三层bolt节点,进行single-pass聚类处理,在30ms之内获取和计算簇增量,当没有新的簇可供获取和计算时,随机等待30ms-50ms的时间;

第四层bolt节点使用余弦相似度算法进行文本聚类,所述余弦相似度算法的计算公式如下:

其中,a和b为两个文本向量;

第六层bolt节点将每个文本的簇id存储到对应文本的id字段之中,最终形成聚类结果。

可选的,所述第四层bolt节点使用余弦相似度算法进行文本聚类的步骤之后,所述第六层bolt节点将每个文本的簇id存储到对应文本的id字段之中的步骤之前包括:

第五层bolt节点重新计算新的簇的中间值,将文本的频率值之中所有特征项添加至簇的平均值,若簇中已经存在所述特征项,根据当前中间点与簇的文本个数重新计算中间值,若不存在,根据簇的文本个数计算中间值。

可选的,所述特征项的权重为v=ft×fid

ft=m/m(2)

fid=lg(n/n+0.01)(3)

其中,m表示文本之中特征项出现的次数,m表示文本之中的总词数,n表示文本的总数量,n表示包含特征项的文本数。

可选的,所述优化方法使用的拓扑结构包括控制节点和工作节点,所述控制节点包括nimbus组件,所述nimbus组件用于给所述工作节点分配数据处理工作,而且监控所述工作节点的工作状态,所述工作节点包括supervisor组件,所述supervisor组件用于监控所辖服务器的工作状态,根据工作需要启动或者关闭对应的工作进程。

本发明具有下述有益效果:

本发明提供的基于storm的食品数据并行计算一致性问题的优化方法获取食品事件数据,对每个事件进行single-pass聚类,通过动态获取簇增量和延时计算两种方式解决数据不一致的问题,从而实现流式数据聚类,用于发现舆论导向,对公众关注点进行快速响应。本发明提供的技术方案通过storm分布式框架并行处理以及动态获取簇增量和随机延时的方法提高了舆情数据的处理效率和准确率,解决了并行处理数据不一致以及遍历簇次数过多的问题。因此,本实施例提供的技术方案实现了基于storm框架的single-pass算法,而且对single-pass算法进行了改进,大大提高了运算效率,提高了优化方法的时效性。

附图说明

图1为本发明实施例一提供的分布式框架的拓扑结构图。

图2为本发明实施例一提供的single-pass算法的流程图。

图3为本发明实施例一提供的聚类结果准确率示意图。

具体实施方式

为使本领域的技术人员更好地理解本发明的技术方案,下面结合附图对本发明提供的基于storm的食品数据并行计算一致性问题的优化方法进行详细描述。

实施例一

本发明提供一种基于storm的食品数据并行计算一致性问题优化方法,首先通过爬取网络媒体的新闻网页获得食品事件,然后对每个事件进行single-pass聚类。与此同时,在并行计算时通过动态获取簇增量与延时计算两种方式解决数据不一致的问题,从而实现流式数据聚类以及主题发现技术,用于发现舆论导向,对公众关注点快速响应。本实施例通过storm分布式框架并行处理以及动态获取簇增量和随机延时的方法提高了舆情数据的处理效率和准确性,解决了并行处理数据不一致以及遍历簇次数过多的问题。

本实施例中,拓扑结构包括控制节点和工作节点,所述控制节点包括nimbus组件,所述nimbus组件负责分配工作给工作节点而且监控状态;所述工作节点包括supervisor组件,所述supervisor组件负责监听所辖服务器的工作,根据需要启动/关闭工作进程。

本实施例提供的spout节点从外部数据源读取数据而且随机分发给第一层bolt节点进行计算和处理,bolt节点向外继续发送自身处理后的结果给下一层bolt节点,从而将任务分成多个部分并行处理,任务拓扑在提交之后将会一直运行,除非显示终止。

本实施例中,第一层bolt节点对文本进行分词,使用现有的开源框架word分词器进行处理,本算法使用正向最大分词方式,可以在较大程度上保留具有整体含义的词汇。在分词完成之后,本实施例进行删除停用词操作,本实施例中70%以上文本均包含“食品”这个高频词,因此在停用词表中加入食品,可以排除对聚类产生干扰的词汇。计算结束之后,若词向量不为空,则将词向量发送给下一层。第二层bolt节点使用tf-idf算法进行向量化,但是流式聚类只能对文本进行一次计算,所以idf值将无法计算,若动态的计算idf值,那么对于计算初期,文本集合相对较少时,idf值也会相对较小,造成计算精度较差,不能很好的体现idf计算的意义。因此,在本实施例中,只进行tf计算,对于高频停用词汇,在分词过程之中,已经使用停用词表进行过滤。其中,tf计算公式如下:

ft=m/m(2)

其中,m表示该文本中特征词出现的次数,m表示该文本的总词数,n表示总文档数。

本实施例提供的第三层bolt节点进行聚类操作,single-pass算法并发计算时将会产生一致性问题,因为每条文本进行计算时是相互独立的,当对一条文本进行比较时,需要获取所有簇的集合,并发执行很有可能在执行结束时,簇的集合已经改变,但是该条文本并没有察觉到簇的变化。因此,在获取完簇列表之后,再动态地获取簇增量,已没有新的簇可供计算时,随机延时一段时间,通过这种方式可以极大程度的避免新建簇时的一致性问题,并且对于聚类运算的时间效率并不会产生太大的影响。之后将与关键词列表匹配过的文本发送到第四层bolt节点,使用余弦相似度算法计算文本之间的距离,从而形成簇。最后发送给第五层bolt节点进行聚类的后续处理。

图1为本发明实施例一提供的分布式框架的拓扑结构图。如图1所示,本实施例提供的基于storm的食品数据并行计算一致性问题优化方法采用storm分布式框架进行文本聚类,所述分布式框架共有七层,将从hbase中读取的数据通过第一层的spout(发射任务)节点shufflegrouping(随机分发)分发给第一层的bolt节点。

在第一层bolt节点中,首先要对文本进行分词,本实施例提供的技术方案使用开源框架word分词器进行处理,本算法使用正向最大分词方式,可以在较大程度上保留具有整体含义的词汇。在分词之后进行删除停用词操作,在本实施例中,主要是与食品相关,因此70%以上文本均包含“食品”这个高频词,在停用词表中加入食品,可以排除这个对聚类产生一定干扰的词汇。

本实施例将第一层bolt节点分词后的数据进行modulegrouping(聚类分发)分发到第二层bolt节点,即对文本使用tf-idf算法向量化。在本实施例中,文本采用向量空间模型(vsm)的形式来表示,一个文本可以有如下表示形式:

d={(t1,w1),(t2,w2)(t3,w3),......,(t4,w4),}(1)

其中,t1、t2、t3…tn为特征项,w1、w2、w3…wn为对应所述特征项的权重值,特征项由分词器得出,权重通过tf-idf算法进行计算,tf为特征词在文本中出现的频率,idf是指逆向文件频率。因此,所述特征项的权重v=ft×fid:

ft,m/m(2)

fid=lg(n/n+0.01)(3)

其中,m表示文本之中特征项出现的次数,m表示文本之中的总词数,n表示文本的总数量,n表示包含特征项的文本数,0.01是为了防止n/n为1的情况。在本算法中,只进行tf计算,对于高频停用词汇,在分词过程中使用停用词表进行过滤。

本实施例将第二层bolt节点文本向量化后的数据进行modulegrouping(聚类分发)分发到第三层bolt节点,这一层也叫聚类层。

本实施例进行single-pass聚类操作,之后再获取簇增量,在获取簇增量的时候,已经没有新的簇可供计算时,那么随机延时一段的短时间,该时间应足够小以至于不能过多的降低聚类的效率,也应该足够大,大于一次获取簇增量的时间加上计算该增量相似度的时间。

本实施例提供的延时时间具有随机性,从而保证两者不会同时进行延时计算,经过计算每次动态获取与计算时间为30ms以内,随机等待时间设置为30-50ms。

本实施例中,第四层bolt节点使用余弦相似度算法进行文本聚类,从而形成事件。本实施例使用余弦相似度算法计算文本之间的距离,公式如下:

其中,a和b为两个文本向量,通过计算两个文本向量的夹角余弦值,当余弦值越接近1证明两个文本的距离越小,即说明两个文本属于同一类的可能性越大,当余弦值越接近0,说明两个文本距离越大,即说明两个文本属于同一类的可能性越小。

图2为本发明实施例一提供的single-pass算法的流程图。如图2所示,由于计算文本两两之间相似度计算量太大,导致消耗的时间很长,因此在形成的每个类中通过目前的元素,计算出一个虚拟中心点,将其作为该簇的中心点,之后进入的每个文本都与各类中的中心文本进行相似计算来确定是否属于该类,如果与所有中心文本都达不到阈值t,将会形成新类,并且在类中加入新文本时将会重新计算中心文本。

本实施例中,第五层bolt节点为后续处理,即重新计算添加进的簇的虚拟中间点,具体算法为,将文本的tf值中所有词添加进簇的平均值,若簇中已存在,则通过当前中间点与簇中包含的文本个数,重新计算中间值,若不存在,则直接通过簇的文本个数计算中间值。第六层bolt节点是将每个文本的簇id存储到对应id文本的clusterid字段中,从而得到最终的聚类结果。storm各层信息如表1所示:

表1为storm各层信息

本实施例对上述技术方案进行评价分析,实验环境如下:

硬件环境:集群之中共有五台服务器,一台nimbus节点,四个supervisor节点;

软件环境:jdk1.7.0_67,apache--0.9.5,apache-maven-3.3.9,idea17,hadoop2.5.0-cdh5.3.9,zookeeper-3.4.6;

操作系统:开发系统为windows7,集群系统为linux系统。

本实施例的数据集为贵州大数据研究中心提供的舆情文本数据,共有4千万余条,本实施例选取其中4万条数据进行测试,集群共五台服务器,一台nimbus节点,四个supervisor节点,总共12个节点。集群采用改进的single-pass算法执行全部四万条数据并获得结果。为了证明该方法能够有效聚类,从结果中随机抽取一些簇来验证是否聚类正确。

图3为本发明实施例一提供的聚类结果准确率示意图。如图3所示,将传统single-pass算法与本实施例提供的算法的平均距离结果对比,两者聚类计算阈值都为0.3。可以看出,本实施例提供的算法的聚类结果远高于0.3,而传统single-pass算法仅仅超过阈值。因此,改进后的single-pass算法所实现的聚类,簇更加紧密,从而大大提高了运算效率,提高了优化方法的时效性。

本实施例提供的基于storm的食品数据并行计算一致性问题的优化方法获取食品事件数据,对每个事件进行single-pass聚类,通过动态获取簇增量和延时计算两种方式解决数据不一致的问题,从而实现流式数据聚类,用于发现舆论导向,对公众关注点进行快速响应。本实施例提供的技术方案通过storm分布式框架并行处理以及动态获取簇增量和随机延时的方法提高了舆情数据的处理效率和准确率,解决了并行处理数据不一致以及遍历簇次数过多的问题。因此,本实施例提供的技术方案实现了基于storm框架的single-pass算法,而且对single-pass算法进行了改进,大大提高了运算效率,提高了优化方法的时效性。

可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1