一种用于时空数据的Top-k频率计算方法与流程

文档序号:17442547发布日期:2019-04-17 04:58阅读:459来源:国知局
一种用于时空数据的Top-k频率计算方法与流程
本发明涉及数据频率计算
技术领域
,尤其涉及一种用于时空数据的top-k频率计算方法。
背景技术
:在社交网站上,如微博、微信、qq等,用户可以对自己发布的信息进行时间和空间的标记,而这些标记将产生新的数据分析问题,如用于检测流行的主题趋势或流行的站点以及频繁的访问轨迹,诸如营销公司感兴趣的是对于当前主流趋势的了解,并关注相关的产品,从而了解市场动态,提前掌握商机,但随之带来的是巨量数据存储的成本问题。用户可以指定在一定的时间和空间范围通过术语查找已发布的信息,而在这个时间和空间范围内找到k个最频繁的术语查询,称作top-k的时空术语频率(timeandspaceterminologyfrequency,tstf)查询,例如,查询者指定当前位置为查询地区,过去一月为查询范围,即可得到在过去一个月内,所查询的位置上的流行术语。hu,j.为此定义了一种新型的相关性函数,考虑文本的相似性和空间距离,进而提出了一种有效地索引结构regrontrie,并基于regrontrie提出了一种top-k算法,使得原本只能进行精确匹配的术语查询,即使在查询的关键词与基础数据存在一定差异的条件下,也可使用模糊查询;defelipe,chen,l.研究了一个最接近查询术语k个对象问题,通过对web网页上的数据文本进行研究,以将数据文本的内容与文本所在的位置结合起来;cao,x.解决了一组包含查询术语的空间文本对象的问题,这些对象都具有较小的空间对象距离,其返回的是整篇内容。r.ahuja考虑了空间和社会的变量,同样在一定范围内,查询高频率社交术语,根据用户在一定空间范围内的访问频率计算最top-k的术语,因网络资源巨大,受具体门户网站的限制,因此,对于r.ahuja来说,查询的速度无疑是非常缓慢;其次,网络资源的巨大与数据的大量冗余进而使得r.ahuja浪费巨大的存储空间。pritomahmed在处理tstf问题上,首先提出了一种方案,以下称为stl(sortedtermslists,stl),其中包括数据的存储索引结构,这种结构只在r-tree模型(如图3)的叶子节点存储处理过后的术语信息(如图4),该术语频度包括术语的关键字、术语来源的时空信息、以及术语的使用频度,并根据术语使用频度的大小在r-tree模型的也节点上按照术语频度的大小进行从大到小的排序。与我们不同的是,我们采用网状与树状结构相结合的方式。先用网状对未被处理过的数据进行分类,再按r-tree模型进行索引。相比,我们的存储方式节约了大量的存储空间。其次,stl的术语权值排序是按照使用的频度进行排序,而我们则是根据特定的算法计算出各术语权重,在根据术语的权重从大到小排序。stl术语排序方式在一定程度上会将意义不大的但是使用频度高关键字排在前面。而我们的排序方式侧重的术语的实际意义。最后pritomahmed提出了一种缩减r-tree模型中叶子节点向父节点传递术语是的长度缩减算法(stl-λ)。stl-λ的算法对zipf(如果把每个单词出现的频度按由大到小的顺序排列,则每个的单词出现的频度与它的排名的常数次幂存在简单的反比关系)做了推广,使之用于tstf问题。具体的做法是当查询非叶子节点的的top-k术语频度时,计算出top-k查询中排名为k的频度,再从该父节点的所有子节点中裁剪出频度大于k的频度的术语,并向上传递,用于合并或者再传递。而我们的算法只从父节点的所有叶子节点裁剪出频度大于k的频度的术语,并向上传递,用于合并或者再传递。避免了术语的重复处理,从而缩短了查询时间。技术实现要素:本发明所解决的技术问题在于提供一种用于时空数据的top-k频率计算方法,以解决上述
背景技术
中的缺点。本发明所解决的技术问题采用以下技术方案来实现:一种用于时空数据的top-k频率计算方法,首先通过网状存储方式将数据分类处理后,再进行r-tree模型索引查询,以减少用于时空数据的存储开销,而后对存储的时空数据进行top-k频率计算,以提高返回的top-k术语的主动有效性,进而提高查询效率,具体步骤如下:1)设置拥有区域v={,,…,}是一个在所有查询范围内有n个对象的数据集合,其中,每个对象∈v对应的是一定的空间和时间内的所有文章,每个对象拥有三个属性<d.a,d.loc,d.time>,d.loc表示位置,d.time表示在该位置上的具体时间,d.a表示在该位置上具体时间包含的所有文章合a,a={,,…,},其中,on表示在该位置上具体时间内的一篇文章,包含一个属性<o.terms>,o.terms={,,…}表示该文章的术语集合,包括重复项;经计算,得到频率f(t),一个词的频率t∈v表示为f(t)={(t)+(t)+…+(t),(t)表示在一篇文章o.terms中出现的次数,再设置一个感兴趣的区域r、一个时间范围t,t的频率表示为(t)={|.locr,.timet};定义区域查询tstf,tstf是由<r,k>属性定义,r表示感兴趣的区域,k表示输出项的数量,目标是找到前k项,并按照频率f(t)进行由大到小排序:,,…,,其频率为(),(),…,f(),其中()是所有频率中最大项;定义权值频率计算matf(a),matf(a)以所有查询区域内的文章集合a为输入,计算该拥有区域出现过的所有术语t的权值频率,并返回已排序的atl列表;计算术语的权值频率大小,使得top-k排序的术语更具有现实意义,在某些语言中,单纯使用计算出现频率的方法进行top-k排序,在实际上意义并不大,为此采用matl(multi-areatermsfrequency,matf)方法计算atl(areatermslist,atl)的术语频率;定义atl长度λ,λ由数量频率排名中术语t出现次数和t的排名频p决定,目标是计算生成非叶子节点的atl所需的叶子节点的atl长度,c为zipf的一个常数,lx是所有术语的数量和,r为感兴趣的区域,包含atl,k表示用户感兴趣的top-k项,fw为字典类型,fw值为r区域包含的叶子节点所有排名为p的术语期望,f表示为r区域排名为k的术语的期望;2)获取数据文本后,根据数据文本标注的时间和空间进行分类,采用网状结构进行分类,在同一区域内,根据所需分为多个时间段进行存储,在一个时间段内,根据文章标记事件的空间进行严格的分类;而后在数据已经由时空进行初步分类的前提下,使用r-tree状的结构模型将所有的数据文本进行分类,分类方式按照数据来源地区进行分类;3)在所得数据文本已经被获取,且已经按照时间段进行分类的条件下,采用只在叶子节点的方式存储基础数据,这种存储方式是只在r-tree的叶子节点上建立一个atl存储节点,当进行top-k查询时,非叶子部分的查询由子节点的叶子节点向上层递进叠加得到,使用atl-l方式索引数据,可保证所有的基础数据只存储一次,大大节约存储空间;尽管上述存储结构节约了大量的存储空间,但在基础数据异常庞大时,节约的存储空间还远远不够,于是对每一个叶子节点进一步加工,不再是单纯地存储数据集合,而是将数据集合进行处理之后,再存储术语集合,这种结构可避免一个区域内因术语重复出现,而造成的数据重复存储的问题,从而节约存储空间;因数据源已采用网状结构进行分类,故不需记入术语时空标记,具体步骤如下:首先计算一个术语在该篇文章中的词数频率tnf(termsnumberfrequency,tnf),即术语t在文章中出现的数量tn(termsnumber,tn)除以该文章的总术语数ta(termsamount,ta),而ts(termsshow,ts)表示术语t在所有文档中出现的文档数,采用求平均值的方式计算术语t的词数频率,以此计算该术语在文章中占得比率,如公式(1)所示:tnf=()/ts(1)其次估算一篇文章在所有文章中所拥有的权重,通过网站对浏览该文章的用户数量标记,可知用户群体对该篇文章的关注度,故权重与用户关注度uc(user-centered,uc)平均值有关系,in为该篇文章的标记量,而ua表示用户的总数(useramount,ua),假设ua不为零,uc表示如公式(2)所示:uc=(in+1)/ua/ts(2)逆文档频率idf(inversedocumentfrequency,idf),idf表示为基础数据中的文档总数ac(articlecounts,ac)与包含该术语的文档数(ts)加一(防止分母为零)之比,表示如公式(3)所示:idf=log(ac/(ts+1))(3)多区域术语频率matf表示如公式(4)所示:matf=tnf*uc*idf(4)依次,计算atl大小λ,此步分析基于术语在整个语料库遵循zipf定律分布,首先给出叶子节点和非叶子节点atl的模型,模型的工作方式是只在叶子节点建立atl排序,当要查询的区域为非叶子节点时,采用的方式是从叶子节点每次向上截取λ长度的atl列表以生成更高层级的atl列表,而本节的工作就是探索向上传递阈值λ的大小,使模型在节约成本的前提下,提升查询的效率和准确性;使用关键词出现的频率排序来计算λ的值,让每个同一水平的节点对象平均有x个术语,l为使用λ时涉及到的节点数,因此,整个基础数据中的术语的总数是lx,p为一个术语的排名,而freq(p,lx)表示在包含lx项的数据集的有序频率列表中第p项的频率,zipf定律指出:一个术语的频率与它在频率列表中的排名成反比,因此,zipf定律参数c(特定的数据集合下)如公式(5)所示:c=p(5)使用公式(5),任意术语t的频率freq(p,lx)可以计算为;r-tree的每个级别都包含平均lx/项,因此,i级节点top-k中第p项的频率是/(p);给定lx、q与z;如存在某术语的节点被加入z后,在该节点的父节点又被重复的加入,并且重复加入已使用过的术语的节点,会使θ的长度增加,从而增加计算量,故指数p的阈值计算如公式(6)所示:θ(p,q,,z)=(6)当阈值等于或低于在查询区域中k的频率值时,在索引p中top-k阈值算法结束,预期的频率列表大小计算如公式(7)所示:λ(k,q,lx,z)={θ(p,q,lx,z)≤}(7)。在本发明中,随着重复的术语数量增加,存储数据会渐渐趋向于平缓;当数据类型不同时,存储数据趋向于平缓时的数据级也不同,当数据逐渐增大时,tecs与stl算法之间的数据存储差距会逐渐增加,在基础数据达到一定的大小时,由于储存结构的结构数据存储相对较小,此时可忽略该数据结构的数据存储,故初始状态下的数据储存为0,在初始状态下随着基础数据大小的增加,储存数据也同步增加,但当基础数据达到一定程度时,由于重复的术语数量增加,stl算法存储的术语地址信息也在增加,tfcs算法与stl算法之间的差距会越来越大;但当基础数据大时,可能该数据术语的使用频率很高,此时存储数据并不一定会越大,其取决于基础数据中的术语使用频率;基础数据经过分词处理后再存储至基础数据库中,由于分词后存在大量的术语重复,故数据大小的起点并不是10mb,当r-tree结构层数增加一层时,两种结构都增加相当于一倍的节点,但是由于tfcs算法不存储地址信息,故tfcs算法相对于stl算法表现较好。有益效果:1)本发明在数据存储方面,通过采用网状结构进行时空分类,再进行r-tree模型的存储,有效节约对排序频率列表中术语来源信息的存储,从而节约了大量的存储空间;2)本发明在返回的术语方面,通过多区域的术语频率算法,相对于stl算法而言确保返回术语的有效性;3)本发明在查询速率方面,改进stl算法的λ值计算属性,使得非叶子节点的频率列表的创建更具实际意义,减少了节点的重复使用,从而加快查询速率。附图说明图1为本发明的较佳实施例中的查询区域示意图。图2为本发明的较佳实施例中的时空数据存储流程模型图。图3为本发明的较佳实施例中的atl存储模型示意图。图4为本发明的较佳实施例中的感兴趣区域数据存储模型示意图。图5为本发明的较佳实施例中的叶子与非叶子模型存储示意图。图6~图7为本发明的较佳实施例中的基础数据与存储数据大小对比示意图。图8为本发明的较佳实施例中的10mb数据下层数与数据存储测试示意图。图9为本发明的较佳实施例中的10mb数据集下有效术语数量对比图。图10为本发明的较佳实施例中的25mb数据集下有效术语数量对比图。图11为本发明的较佳实施例中的50mb数据集下有效术语数量对比图。图12为本发明的较佳实施例中的创建非叶子节点的平均处理时间对比图。具体实施方式为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白清晰,下面结合具体图示,进一步阐述本发明。一种用于时空数据的top-k频率计算方法,也称为tfcs(atop-kfrequencycalculationschemeforspatio-temporaldata,tfcs)算法,通过网状存储方式将数据分类处理后,再进行r-tree模型索引,以减少用于时空数据的存储开销,且提高返回的top-k术语的主动有效性,进而提高查询效率,相对于对时空数据的直接存储,有效减少时空数据的重复存储。对数据进行预处理之后的存储,更有利于top-k的查询效率的提升,下面以一个位置的术语频率集合为例,具体步骤如下:1)设置拥有区域v={,,…,}是一个在所有查询范围内有n个对象的数据集合,其中,每个对象∈v对应的是一定的空间和时间内的所有文章,是一个拥有三个属性<d.a,d.loc,d.time>的对象,d.loc表示一定的位置,d.time表示在该位置上的具体时间,d.a表示在该位置上具体时间包含的所有文章集合a,a={,,…,},其中,on表示在该位置上具体时间内的一篇文章,包含一个属性<o.terms>,o.terms={,,…}表示该文章的术语集合(可能包括重复项);经过计算,得到频率f(t),一个词的频率t∈v表示为f(t)={(t)+(t)+…+(t),(t)表示在o.terms中出现的次数,再设置一个感兴趣的区域r、一个时间范围t,t的频率表示为(t)={|.locr,.timet}:定义i:(区域查询tstf),tstf是由<r,k>属性定义,r表示感兴趣的区域,k表示输出项的数量,目标是找到前k项,并按照频率f(t)进行由大到小排序:,,…,,其频率为(),(),…,f(),其中()是所有频率中最大项;如图1所示,矩形实线区域为拥有区域,di为v中已拥有区域内的其中一个。而虚线矩形表示di中所感兴趣的区域r,假设di中的文章为,中所包含的术语如表ⅰ所示,假设感兴趣的k的值为2,tstf则是在r区域中选出用户最感兴趣的两项术语:表ⅰ地区对象术语列表对象术语对象术语{}{}{}{}{}{}{}{}{}{}假设选出的两项(k=2)术语为“张家中学”和“运动会”,则可能代表着在张家中学举行的运动会;定义ii:(权值频率计算matf(a)),matf(a)由所有查询区域内的文章集合a为输入,计算该拥有区域出现过的所有术语t的权值频率,并返回已排序的atl列表;计算术语的权值频率大小,使得top-k排序的术语更具有现实意义,在某些语言中,例如句子:“我们想估计内部节点的排序列表的长度应该是多少”,对这句话进行分词处理是:术语‘内部节点’、‘排序’、‘列表’是我们所预期返回的关键词,但是在实际情况中‘的’、‘是’、‘多少’的使用频率要远远大于‘内部节点’、‘排序’、‘列表’的使用频率,故单纯使用计算出现频率的方法进行top-k排序,在实际上意义并不大,为此采用matl方法计算atl的术语频率:定义iii:(atl长度λ),λ由数量频率排名中术语t出现次数和t的排名频p决定,目标是计算生成非叶子节点的atl所需的叶子节点的atl长度,λ值计算是tstf计算中重要的一步,c为zipf的一个常数,lx是所有术语的数量和,r为感兴趣的区域,包含atl,k表示用户感兴趣的top-k项,fw为字典类型,fw值为r区域包含的叶子节点所有排名为p的术语期望,f表示为r区域排名为k的术语的期望;2)获取数据文本后,根据数据文本标注的时间和空间进行分类,如图2所示采用网状结构进行分类,在同一区域内,根据所需分为多个时间段进行存储,在一个时间段内,根据文章标记事件的空间进行严格的分类;首先将大量的基础数据进行分类,当进行top-k查询时可快速所需数据源,该储存是按时间和空间间隔进行分类,具体的间隔可由实际情况而定,因为数据文本的获取方式与位置有关,且地区的结构模式大致相同,图2中,在数据已经由时空进行初步分类的前提下,对每一个图2中节点(对应特定时间段和空间区域的节点)使用r-tree状的索引模型将所有的数据文本进行分类,分类方式按照数据来源地区进行分类;3)在所得文本数据已经被获取,且已经按照时间段进行分类的条件下,采用只在叶子节点的方式存储基础数据,这种存储方式是只在r-tree的叶子节点上建立一个atl索引节点,如图3所示,虚线部分区域只存在于存储结构中,不建立atl索引节点,当进行top-k查询时,非叶子部分的查询由子节点的叶子节点向上层递进叠加得到,使用atl-l方式储存数据,可保证所有的基础数据只存储一次,大大节约存储空间,如区域“美国”是非叶子节点,当查询区域为美国时,它的atl术语排序由其子叶子节点“纽约”、“洛杉矶”的atl术语排序相加所得;尽管图3的索引结构节约了大量的存储空间(所有的非叶子节点都不需要进行数据储存便可查询),但在基础数据异常庞大时,节约的存储空间还远远不够,于是对每一个叶子节点进一步加工,如图4所示,不再是单纯的存储数据集合,而是将数据集合进行处理之后,再存储术语集合,这种结构可避免一个区域内因术语重复出现,而造成的数据重复存储的问题,从而节约存储空间;因数据源已采用网状结构进行分类,故不需记入术语时空标记,具体计算如下:首先计算一个术语在该篇文章中的词数频率tnf(termsnumberfrequency,tnf),即术语t在文章中出现的数量tn(termsnumber,tn)除以该文章的总术语数ta(termsamount,ta),而ts(termsshow,ts)表示术语t在所有文档中出现的文档数,采用求平均值的方式计算术语t的词数频率,以此计算该术语在文章中占得比率,如公式(1)所示:tnf=()/ts(1)其次考虑一篇文章在所有文章中所拥有的权重,在很多网站均对浏览的用户数量进行标记,表现在“下载量”、“浏览量”、或者“点赞数”等方面,而此类标记间接反映用户群体对该篇文章的关注度,故算法还考虑了权重与用户关注度uc(user-centered,uc)平均值的关系,in为该篇文章的标记量,而ua表示用户的总数(useramount,ua),假设ua不为零,uc表示如公式(2)所示:uc=(in+1)/ua/ts(2)逆文档频率idf(inversedocumentfrequency,idf),idf表示为基础数据中的文档总数ac(articlecounts,ac)与包含该术语的文档数(ts)加一(防止分母为零)之比,表示如公式(3)所示:idf=log(ac/(ts+1))(3)多区域术语频率matf表示如公式(4)所示:matf=tnf*uc*idf(4)依次,计算atl大小λ,这一步的分析是基于术语在整个语料库(即收集数据集的所有数据)遵循zipf定律分布,首先给出叶子节点和非叶子节点atl的模型,模型的工作方式是只在叶子节点建立atl排序,当要查询的区域为非叶子节点(如、、)时,采用的方式是从叶子节点每次向上截取λ长度的atl列表以生成更高层级的atl列表,而本节的工作就是探索向上传递阈值λ的大小,使模型在节约成本的前提下,提升查询的效率和准确性;使用关键词出现的频率排序来计算λ的值,让每个同一水平的节点对象平均有x个术语,l为使用λ时涉及到的节点数,因此,整个基础数据中的术语的总数是lx,p为术语的排名,而freq(p,lx)表示在包含lx项的数据集的有序频率列表中第p项的频率,zipf定律指出:一个术语的频率与它在频率列表中的排名成反比,因此,zipf定律参数c(特定的数据集合下)如公式(5)所示:c=p(5)使用公式(5),任意术语t的频率freq(p,lx)可以计算为;在本实施例中,r-tree的每个级别都包含平均lx/项,因此,i级节点top-k中第p项的频率是/(p);注意,top-k算法的工作原理是在连续的atl术语上计算截取长度阈值θ,即在top-k中计算所涉及的atl中所有频率值的和,给定lx、q和z;同时z与stl是不同,此时z指的是包含在查询区域内的所有叶子节点,而不是所有可能会被使用的节点,在实际的查询计算中,非叶子节点存储是不存在,只在进行非叶子节点区域查询时才会调用执行;若如pritomahmed所示使用所用涉及到的节点,会造成术语的节点的重复使用,如存在某术语的节点被加入z后,在该节点的父节点又被重复的加入,并且,重复加入已使用过的术语的节点,会使的截取叶子节点内atl术语长度的阈值θ的长度增加,从而增加计算量,故阈值θ计算如公式(6)所示:θ(p,q,,z)=(6)当阈值等于或低于在查询区域中k的频率值时,在索引p中top-k阈值算法结束,预期的频率列表大小计算如公式(7)所示:λ(k,q,lx,z)={θ(p,q,lx,z)≤}(7)为验证网状结构的可用性,以及权值频率算法的有效性,将tfcs算法方法与stl算法方法进行对比,对比方面包括:(1)空间存储对比,(2)top-k术语有效性对比,(3)对stl算法-λ修改后的查询速度作对比;如图6所示,当数据集不大时,由于数据存储结构关系,初始状态下会有120kb的结构存储数据,在初始状态下随着基础数据的增大,术语的数量也同步增加,但当基础数据达到一定程度时,由于stl算法的top-k列表的存储需要存储大量的术语来源数据,此时,与tfcs算法对比,表现的并不是很友好,同时随着数据的增加,频率列表中的术语地址信息巨大,而采用网状结构分类与r-tree索引方式相结合,避免术语地址信息的大量存储;随着重复的术语数量增加,存储数据会渐渐趋向于平缓;当数据类型不同时,存储数据趋向于平缓时的数据级也不同,当数据逐渐增大时,tecs与stl算法之间的数据存储差距会逐渐增加,如图7所示,在基础数据达到一定的大小时,由于储存结构的结构数据存储相对较小,此时可忽略该数据结构的数据存储,故初始状态下的数据储存为0,与图6类似,在初始状态下随着基础数据大小的增加,储存数据也同步增加,但当基础数据达到一定程度时,由于重复的术语数量增加,stl算法存储的术语地址信息也在增加,tfcs算法与stl算法之间的差距会越来越大;图7体现了数据的不稳定性,即并不是基础数据越大,存储数据就一定越大,但当基础数据大时,可能该数据术语的使用频率很高,此时存储数据并不一定会越大,其取决于基础数据中的术语使用频率;如图8所示,基础数据经过分词处理后再存储至基础数据库中,由于分词后存在大量的术语重复,故数据大小的起点并不是10mb,当r-tree结构层数增加一层时,两种结构都增加相当于一倍的节点,但是由于tfcs算法不存储地址信息,故tfcs算法相对于stl算法表现较好,由图8可知,随着r-tree层次的增加,tfcs算法与stl算法之间的差距相对稳定,由于当基础数据一定时,基础信息的地址信息总量不变,因此tfcs算法与stl算法之间的差距相对稳定;从图9~11所示可知,在不同的基础数据级中,由于分词过程中产生很多无效术语,但是这些术语存有很高的使用频率,单纯采用出现频率的排序方法易筛选出大量的无效术语,在设置k=10的条件下,使用tfcs算法,在输出的十个术语中,有效术语的数量明显多于stl算法,普通的stl算法算法只能将有效术语维持在0~3个,而tfcs算法能将术语维持在3~6个之间,大大提高了查询的有效性;在图12中,不同数量级的λ对非叶子频率列表创建影响巨大,λ的值越大,创建非叶子节点的平均处理时间就越久,这体现使用λ的必要性,估计λ,以关注实际的atl使用长度;tfcs算法使用估计λ,由于使用真实(真实存在的叶子节点)的节点代入计算,以避免术语节点的重复使用,使得查询的速度更快。在本实施例中,数据存储方面,通过采用网状结构进行时空分类,再进行r-tree模型的索引方式,有效节约对排序频率列表中术语来源信息的存储,从而节约了大量的存储空间;在返回的术语方面,通过多区域的术语频率算法,相对于stl算法而言确保返回术语的有效性;在查询速率方面,改进stl算法的λ值计算属性,使得非叶子节点的频率列表的创建更具实际意义,减少了节点的重复使用,从而加快查询速率。以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1