一种基于Spark框架的实体统一算法的制作方法

文档序号:13004936阅读:426来源:国知局
一种基于Spark框架的实体统一算法的制作方法与工艺

本发明属于大数据融合技术领域,涉及一种基于spark框架的实体统一算法。



背景技术:

在这个信息爆炸的时代,互联网上海量数据大量涌入,大数据这个概念便应运而生。近20年里,数据产生的方式不断在扩展,数据之间的关系变得千丝万缕,呈现出大规模数据关联、交叉和融合的局面。数据融合的概念最初来源于多传感器数据融合,早在上世纪70年代这个概念就被提出,在军事、交通、遥感、生物医学等方面已经得到了广泛的应用。在信息检索领域也存在数据融合的概念,旨在将多个独立的数据集上的检索结果合并成一个统一的结果,使得合并后的检索效果尽可能接近在一个集中数据集上进行检索的效果。由于需要集成整合来自不同数据源的异构数据,必然需要进行数据融合的研究。但是,早期数据集成研究主要集中在模式匹配等方面的问题,直到最近几年数据融合才逐渐成为研究热点。

大数据融合更为具体和形象的解读在于,通过对融合数据进行实体统一、冲突解决、数据关联,形成以目标实体为中心的多侧面全景视图。数据融合可以有效识别同一实体的不同表达、解决可能存在的数据冲突、建立同一实体多角度数据的关联,通过有效的检测和消除脏数据、挖掘数据关联,一方面提高了融合数据的质量,另一方面也为进一步的分析决策提供了基础。实体统一(又被称为实体解析(entityresolution)、记录链接(recordlinkage)、重复检测(duplicatedetection)等)是指将表示同一现实世界实体的不同记录识别出来,并进行合并的过程,从而达到消除数据冗余,提高数据质量的目的,一直以来都是数据融合和数据清洗中的重点研究内容,其结果影响着数据质量。

当前主要有三种基本的解决思路,第一种是穷尽式的实体统一即传统的实体统一方法,通过两两比较数据集中的所有记录,然后再合并相似的记录,从而找到描述某一个实体的若干记录集合。然而,该方法的计算复杂度比较高(o(n2),其中n表示数据集合的规模),主要针对小数据集,重点关注统一结果的准确性,随着大数据时代的到来,传统的实体统一方法由于时间复杂度较高,难以处理大规模数据。第二种思路是基于分块的实体统一,例如标准分块方法(standardblocking)定义了块的键值,具有相同块键值的记录同属于一个块中,初步将较为相似的记录划分到同一个块中,再仅对属于同一块中的记录进行两两比较,这种方法显著降低了运行时间,但会损失部分精度,因为某些描述同一实体的记录可能没有被分到同一个块中。近邻排序的分块方法(sortedneighborhoodblocking)解决了块间实体匹配的问题,但是如何确定窗口的大小成为一个关键的问题,如果窗口较大会影响效率,如果窗口较小又会导致相似但是距离较远的实体无法被包括在同一个滑动窗口下。此外,q-gram索引方法和canopy聚类方法也是常用的分块技术。第三种则是基于分布式架构的实体统一,采用mapreduce模型提高实体统一计算效率成为目前较为流行的研究方向。但是这种方法的准确性将不如传统的实体统一方法。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于spark框架的实体统一算法,在一定程度上确保结果有效性的同时,提高实体统一计算效率。

为达到上述目的,本发明提供如下技术方案:

一种基于spark框架的实体统一算法,包含如下步骤

s1:输入待统一的实体集数据;

s2:利用标准分块算法初步将较为相似的实体集数据划分到同一个块中得到实体合集;

s3:利用模式快速扫描算法prsa(patternrapidscanningalgorithm)和基于编辑距离的模式匹配算法pmabed(patternmatchingalgorithmbasedoneditdistance)计算任意实体对的相似度,对步骤s2经过分块后的实体合集进行模式匹配,利用模式抽取算法pea(patternextractalgorithm),将匹配的即实体合集中相似度大于给定阈值ζ的实体对通过pmabed算法进行回溯合并,得到抽取的模式合集,利用prsa、pmabed算法对模式合集进行模式匹配,利用pea算法,将匹配的即模式合集中相似度大于给定阈值ζ的模式通过pmabed算法回溯进行合并,得到共同模式;

s4:得到实体统一的结果。

进一步,所述步骤s3具体为:

s31:对所述实体集合中实体相同的部分进行统一,不同的部分进行保留,从而形成特定的涵盖具有相似性实体的模式;

s32:将实体间的匹配操作转换成对应的模式之间的匹配操作,利用prsa算法,得到模式元素不匹配的子模式;

s33:将元素不匹配的子模式通过pmabed算法,得到子模式的编辑距离矩阵;

s34:利用相似度计算公式

得出模式相似度,式中sim(m1,m2)为模式m1和模式m2的相似度,d(m′1,m′2)为子模式m′1和子模式m′2的编辑距离矩阵,|m1|表示模式m1的长度,|m2|表示模式m2的长度;

s35:利用pea算法,将相似度大于给定阈值ζ的模式通过pmabed算法回溯进行合并,得到共同模式。

进一步,步骤s32具体为

s3201:prsa算法匹配两个不同的模式m1=m1[1]m1[2]…m1[x]、

m2=m2[1]m2[2]…m2[y],x≥y;

s3202:初始化参数,假设模式中的数组下标i从i=1开始;

s3203:对两个模式长度相同的部分进行遍历,若下标相同的模式元素存在相同部分,则

将两个模式中的元素合并后存放到合并模式m12中,否则记录当前模式元素的下标,并将

m1[i]元素和m2[i]元素分别存放到m′1和m′2中;

s3204:将模式m1中未遍历的模式元素分别与ε合并后存放到合并模式m12中,其中ε为空字符。

进一步,步骤s33中所述得到子模式的编辑距离矩阵采用如下原则:

1)对于多字符,如果两个模式元素中含有相同的字符,则该两个模式元素匹配;

2)对于空字符,如果不匹配,则包含空字符的模式元素取空字符,此时其不占字符长度。

进一步,步骤s35中所述共同模式的生成规则如下:

式中k为回溯中的某个位置,m′12[k]为该位置的共同模式,ε表示空字符,m′2[j]表示子模式m′2中位置j的元素,m′1[i]表示子模式m′1中位置i的元素,d[i][j]表示距离矩阵d(m′1,m′2)中的第i行第j列元素;

本发明的有益效果在于:本发明方法利用spark框架对大数据集中的数据进行实体统一,用模式代替记录进行实体统一计算,在一定程度上确保结果有效性的同时,提高实体统一计算效率,能够从大规模数据中更快速地筛选出有价值的数据。同时也能解决块间匹配效率的问题。

附图说明

为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:

图1为本发明的算法流程示意图;

图2为本发明模式匹配和模式抽取流程图。

具体实施方式

下面将结合附图,对本发明的优选实施例进行详细的描述。

本发明包含如下步骤

s1:输入待统一的实体集数据;

s2:利用标准分块算法初步将较为相似的实体集数据划分到同一个块中得到实体合集;

s3:利用模式快速扫描算法prsa(patternrapidscanningalgorithm)和基于编辑距离的模式匹配算法pmabed(patternmatchingalgorithmbasedoneditdistance)计算任意实体对相似度,对步骤s2经过分块后的实体合集进行模式匹配,利用模式抽取算法pea(patternextractalgorithm),将匹配的即实体合集中相似度大于给定阈值ζ的实体对通过pmabed算法进行回溯合并,得到抽取的模式合集,利用prsa、pmabed算法对模式合集进行模式匹配,利用pea算法,将匹配的即模式合集中相似度大于给定阈值ζ的模式通过pmabed算法回溯进行合并,得到共同模式;

s4:得到实体统一的结果。

步骤s1所述输入待统一的实体集数据,可以采用以下方式实现:

利用计算机领域内英文文献的集成数据库系统提供的api或可下载数据集,获取dblp-scholar数据集。

步骤s2所述数据分块,包括:利用标准分块算法初步将较为相似的数据划分到同一个块中。输入为待统一数据,输出为实体集合r={r1,r2,r3,…,rn},n∈c,每个实体集合对应到相应的块集b中b={b1,b2,b3,…,bn},n∈c;

如图2所示,步骤s3中的模式匹配和模式抽取具体为:

s301、对实体集合中实体相同的部分进行统一,不同的部分进行保留,从而形成特定的涵盖具有相似性实体的一个模式。下面对实体模式进行形式化定义。一个模式m=m[1]m[2]…m[i]…m[n],1≤i≤n,其中m[i]={ci1,ci2,…,cij,…,cix},1≤j≤n,cij∈∑∪ε,其中∑表示字母,ε表示空字符,例如集合r={halloword,helloworld}的对应模式为m:h{e,a}llowor{l,ε}d。

s302、现在可以将实体间的匹配操作转换成其对应的模式之间的匹配操作。设两个模式m1=m1[1]m1[2]…m1[x]和m2=m2[1]m2[2]…m2[y],其中x和y分别为m1和m2的长度,且x≥y。利用prsa算法,得到模式元素不匹配的子模式,算法描述下:

模式快速扫描算法prsa。

输入:两个不同的模式m1、m2和各自的长度x、y,且x≥y;

输出:快速扫描后不匹配元素的子模式m1′、m2′和匹配元素的合并模式m12。

该算法的输入为需要匹配的两个不同的模式m1、m2,各自的长度x、y,规定x≥y。输出为快速扫描后不匹配元素的子模式m′1、m′2和匹配元素的合并模式m12。首先初始化参数,假设数组下标从1开始,令i=1,下标数组index。然后对两个模式长度相同部分进行遍历,若下标相同的模式元素存在相同部分,则将模式元素合并后存放到合并模式m12中,否则记录当前模式元素的下标,并将m1[i]元素和m2[i]元素分别存放到m1′和m2′中。再将模式m1中未遍历的模式元素分别与ε合并后存放到合并模式m12中。例如模式m1=wo{l,ε}der和模式m2={w,v}orled,通过prsa算法得到的结果为m′1={l,ε}dr,m′2=rld,m12={w,v}oe,index={2,3,5}。

s303、将子模式m′1、m′2通过pmabed算法,得到子模式m′1、m′2的编辑距离矩阵。由于模式中的元素可能有多个字符,且还存在ε字符,所以不能直接将字符串的编辑距离用于模式之间的距离。为了计算模式之间的距离,采用如下原则:

1)对于多字符。如果两个模式元素中含有相同的字符(包括空字符),则该两个模式元素匹配。

2)对于空字符。如果不匹配,则包含空字符的模式元素取空字符,此时其不占字符长度,对编辑距离没有影响。

通过这种处理方式可以得到两个模式最小的编辑距离d(m′1,m′2),其递推公式如下:

其中

s304、利用相似度计算公式

得出模式m1、m2的相似度。

s305、利用pea算法,将相似度大于给定阈值ζ的模式通过pmabed算法回溯进行合并,得到模式的共同模式。将子模式m′1、m′2通过pmabed算法生成的距离矩阵d,根据最短距离进行回溯,从d[|m′1|,|m′2|]出发直到d([0],[0]),即可得到不匹配元素子模式的共同模式m′12。其具体的生成规则如下:

其中k为回溯中的某个位置,直到i=0,j=0这时m′1、m′2的模式m′12=m′12[0],m′12[1],…,m′12[k]。当i,j>0时存在特殊情况,即回溯规则中的3个条件同时满足,规定c函数的优先级高于a函数。这样有助于相同字符的合并,从而减少引入不相关的实例。再将不匹配子模式的共同模式根据index中存储的位置插入到匹配元素的模式中,得到模式m1、m2的共同模式,算法描述如下:

模式抽取算法pea

输入:两个不同的模式m1、m2的相似度值sim(m1,m2),不匹配的子模式m′1、m′2,匹配元素的合并模式m12,下标数组index以及阈值ζ。

输出:模式m1、m2的共同模式m12。

该算法的输入为两个不同的模式m1、m2的相似度值sim(m1,m2),不匹配的子模式m′1、m′2,匹配元素的合并模式m12,下标数组index以及阈值ζ;输出为模式m1、m2的共同模式m12。首先初始化参数,假设数组下标i从1开始,通过步骤s304中的相似度计算公式,得到模式m1、m2的相似度值,若该值大于等于给定的阈值ζ,说明m1、m2相似,需要对不匹配的子模式m′1、m′2通过回溯规则进行回溯,得到m′1、m′2的模式m′12。再根据index将模式m′12插入到m12相应的位置。由于抽取的模式m′12的长度存在超过m′1、m′2长度的情况,本发明利用链表来定义模式。例如模式m1=wo{l,ε}der和模式m2={w,v}orled,通过步骤s302中的prsa算法得到的结果为m′1={l,ε}dr,m′2=rld,m12={w,v}oe,index={2,3,5}。若给定的阈值ζ为0.5,则sim(m1,m2)=0.5≥ζ,此时m′12={r,ε}{l,ε}{d,l}{d,r}。由于抽取所得模式长度大于m′1、m′2的长度,无法通过下标一一对应进行还原插入,所以本发明利用链表来定义模式,将模式按照连续下标分组进行匹配和抽取并保存在链表中,最后将分组抽取所得模式按下标分组从最后一组连续下标数组的第一个位置开始倒叙进行还原插入得到模式m1、m2的共同模式m12={w,v}o{r,ε}{l,ε}{d,l}e{d,r}。

步骤s4所述模式合并,包括:重复执行步骤s3,直至块间模式都不匹配,这样通过迭代的方法就能抽取出相似实体的共同模式。

步骤s5所述得出实体统一结果,包括:步骤s4中得出的一个共同模式即标示为一个实体。

最后说明的是,以上优选实施例仅用以说明发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。

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