一种基于局部敏感哈希策略的实例匹配方法转让专利

申请号 : CN201510307301.3

文献号 : CN104866471B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张海威石彬李仲伟解晓芳袁晓洁

申请人 : 南开大学

摘要 :

一种基于局部敏感哈希策略的实例匹配方法。解决语义网中快速提取两个数据集间描述相同事物实例的难题,本发明提出了一种新颖的通过局部敏感哈希来进行实例匹配的方法,该方法包括:重要的谓语选择;匹配不同数据集间的重要谓语;根据匹配的谓语提取候选实例对;提炼候选集得到实例匹配结果。

权利要求 :

1.一种基于局部敏感哈希策略的实例匹配方法,其特征在于,解决语义网中快速提取两个数据集间描述相同事物实例的难题;Linked Data是语义网的一个具体实现,以RDF三元组作为基础数据模型;RDF三元组是由主语、谓语和宾语组成的描述事物特征的框架,数据集中的实例由多个RDF三元组组成;

所述实例匹配方法详细步骤如下:

第1、根据谓语的覆盖率和辨别率找到重要谓语

第1.1、计算谓语的覆盖率;谓语覆盖率是谓语在整个数据集所有实例中出现的频率;

第1.2、计算谓语的辨别率;谓语辨别率是从数据集中辨别出某一个实例的能力;

第1.3、计算重要谓语;重要谓语是指数据集中谓语覆盖率和谓语辨别率都大于各自指定阈值的谓语;

第2、匹配不同数据集间的重要谓语得到候选谓语对;

第2.1、汇总同一数据类型的谓语;对第1.3步得到的重要谓语进行分类,谓语的类型是由RDF宾语的类型决定,将谓语类型划分为四种,包括string,URI,数值和日期,对同一类型的谓语进行汇总,两两组成一个谓语对;

第2.2、计算每个谓语对匹配的置信度;对第2.1步中每一个类型的所有谓语对分别计算其匹配的置信度,将谓语的所有宾语放在一个集合中,然后分别计算宾语间的Jaccard距离,也就是谓语对匹配的置信度;

第2.3、筛选候选谓语对;通过阈值来筛选所有谓语对,只有当匹配对的置信度高于阈值时,该匹配对才能加入到候选谓语匹配对进入接下来的步骤中;

第3、根据局部敏感哈希策略提取候选实例对

第3.1、构建实例的向量空间模型;对RDF三元组的宾语进行分词,以词语ID作为特征值,这些特征用向量的方式来表达,将整个数据集转化为一个实例ID对应一个特征向量v的向量空间模型;

第3.2、局部敏感哈希处理;采用基于Jaccard距离的局部敏感哈希函数族,随机产生n个哈希函数,对第3.1步的每个实例ID计算得到其签名向量,签名向量汇总在一起,整个数据集就转化为一个最小哈希签名矩阵,然后通过行条化处理得到候选实例对;所述的行条化处理是指,在得到最小哈希签名矩阵后,将签名矩阵划分为b个行条,每个行条由r行组成;对每个行条,存在一个哈希函数能够将行条中的每r个整数组成的列向量映射到某个大数目范围的桶中;

第4、实例匹配

设置实例匹配相似度的阈值,利用谓语匹配的置信度作为权重,采用加权平均的方式计算实例匹配的相似度,大于相似度阈值的实例对即为最终的实例匹配结果。

2.根据权利要求1所述的方法,其特征在于,第1步所述的覆盖率的计算方法如公式(1)所示:其中,D表示数据集,x表示数据集D中的实例,t表示一个RDF三元组,s表示三元组中的主语、pk表示三元组中的谓语、o表示三元组中的宾语;该公式能够计算出谓语pk在整个数据集D所有实例中的出现频率,即数据集中包含谓语pk的实例数量与数据集中所有实例数量的比值。

3.根据权利要求1所述的方法,其特征在于,第1步所述的辨别率的计算方法如公式(2)所示:该公式描述了谓语宾语的个数与三元组个数的比值,反映了谓语对应宾语的多样性;D表示数据集,x表示数据集D中的实例,t表示一个RDF三元组,s表示三元组中的主语、pk表示三元组中的谓语、o表示三元组中的宾语;该公式能够计算每个谓语pk对实例的辨别能力,即每个谓语包含所有宾语的种类与包含所有宾语的个数的比值。

4.根据权利要求1所述的方法,其特征在于,第1步所述的重要谓语的计算方法如公式(3)所示:{p|p∈D,Cov(p)>α&&Dis(p)>β}  (3)

其中D表示数据集,p表示三元组中的谓语,α、β由人工指定,默认将α设置为覆盖率Cov(p)的平均值,将β设置为辨别率Dis(p)的平均值;如果一个谓语的频率和辨别率分别大于给定的阈值α和β,那么这个谓语就是重要的。

5.根据权利要求1所述的方法,其特征在于,第2步所述的谓语对匹配的置信度的计算方法如公式(4)所示:其中DS,DT表示两个数据集,x表示数据集中的实例,<s,pi,o>,<s,pj,o>表示RDF三元组,s表示三元组中的主语、pi,pj表示三元组中的谓语、o表示三元组中的宾语,R表示对宾语的处理工作,对于日期、数值类型不做任何处理,采用原来的值;对于string和URI进行文本处理,包括文本分词、停用词过滤和词干提取。

6.根据权利要求1所述的方法,其特征在于第3步所述的基于Jaccard距离的局部敏感哈希函数族如公式(5)所示:hP(A)=min{P(a)|a∈A}  (5)

其中A表示源数据集和目标数据集中的已经匹配的重要谓语所组成的谓语对集合,a是其中一个谓语对,P(a)是a的一个投影变换。

7.根据权利要求1所述的方法,其特征在于第4步所述的利用谓语匹配的置信度作为权重,采用加权平均的方式计算实例匹配的相似度如公式(6)所示:其中Dk表示数据集,x表示数据集中的实例,<s,pk,o>表示RDF三元组,s表示三元组中的主语、pk表示三元组中的谓语、o表示三元组中的宾语,A表示源数据集和目标数据集中的已经匹配的重要谓语所组成的谓语对集合,conf(pS,pT)表示谓语pS与pT匹配的置信度,Ok表示谓语pk相关的所有宾语组成的集合,F(OS,OT)表示计算p S与p T相关宾语的相似度,对于string、URI计算两者文本处理后所包含的词语TF-IDF值的余弦相似度,对于数值和日期,先将数值精确到两位小数,日期取原始值,然后直接对比它们是否相同,若相同则为1,若不同则为0。

说明书 :

一种基于局部敏感哈希策略的实例匹配方法

【技术领域】

[0001] 本发明属于语义网的数据融合技术领域。【背景技术】
[0002] 随着互联网的快速发展,大数据时代已经到来。这些数据一般都来自不同的领域,例如公司、学校、政府、医院等等。但是到目前为止,这些数据大多分散在各处,并没有一个统一的标准来组织这些数据,而语义网的提出则为数据的集成应用打开了新的通路。
[0003] 语义网(Semantic Web),是由World Wide Web(W3C)组织发起的一个运动,旨在把当前的面向文档的网络演变为面向数据的网络(web of data),这一概念最早是由互联网创始人Tim Berners-Lee在1998年提出的,目标是通过给万维网上的文档添加能够被计算机所理解的语义,使得整个互联网成为一个通用的信息交换平台。2001年Scientific American杂志出版了由Tim Berners-Lee等的一篇文章,描绘了把现存互联网转化为语义网的愿景。2006年,对语义网这一伟大设想的实现仍在探索中。2007年一个名为Linking Open Data(LOD)的项目吸引了很多的注意力,它是以主语、谓语、宾语三元组的方式来组织数据,一个实例由多个三元组进行描述,如《算法导论》这本书就是一个实例,关于它的描述例如“《算法导论》属于计算机类型”、“《算法导论》的价格是70元”,这里《算法导论》是主语,“属于”和“价格”是谓语,“计算机类型”和“70元”是宾语。目前已经有很多数据集开始发布在它上面,其中一项重要的任务就是建立数据集之间的owl:sameAs连接。
[0004] 目前为止,已经有许多的方法来解决这个问题。这些方案中大多数都关注于如何准确并全面的检测出匹配的实例。但是用于实例匹配的算法很多不得不对每对实例都进行匹配,所以它并不适用于大数据集。一些成熟的系统,例如Silk和LIMES,都通过使用用户提前定义好的匹配规则来实现目标,这不适用于对数据集不太熟悉的用户。而另一些系统,例如RiMOM2013和SLINT+,试图在没有用户参与的条件下实现目标,目前有两种方法可以在没有用户参与的情况下实现匹配:一种是通过半监督学习的算法来迭代优化匹配规则,并根据规则找出置信度高的匹配对;另一种是通过非监督学习的算法来找到候选实例对,以此来减少匹配的数量;这些算法在小规模数据集上表现较佳,但并不能扩展到大规模数据集。【发明内容】
[0005] 本发明提出了一种基于局部敏感哈希策略的实例匹配方法,解决语义网中快速提取两个数据集间描述相同事物实例的难题。Linked Data是语义网的一个具体实现,以RDF三元组作为基础数据模型。RDF三元组是由主语、谓语、宾语组成的描述事物特征的框架,数据集中的实例由多个RDF三元组组成。LinkedData中包括大量的数据集,而且任何人都能在其上发布新的数据集,但新发布的数据集需要与现存数据集存在链接数据,即把描述相同事物的实例标记出来。
[0006] 本发明针对现有数据集规模较大、来源广泛、语义异构的特点,设计了基于局部敏感哈希策略的实例匹配方法,充分利用实例的谓语和宾语对该实例的辨别性,设计并实现了基于局部敏感哈希策略进行实例匹配的方法。
[0007] 本发明提供的基于局部敏感哈希策略的实例匹配方法详细步骤包括:
[0008] 第1、根据谓语的覆盖率和辨别率找到重要谓语
[0009] 重要的谓语一般具有两个特征:一是该谓语应该覆盖大多数的实例;二是该谓语的宾语应该存储了每个实例的特殊信息,从而能够区分不同的实例。所以,我们使用覆盖率和辨别率作为指标来评估谓语的重要性水平。
[0010] 第1.1、谓语的覆盖率
[0011] 谓语的覆盖率是指谓语在整个数据集所有实例中出现的频率,如90%的实例都有一个谓语rdfs:label来表示实例的名字,那么rdfs:label这个谓语的覆盖率就是90%。
[0012] 计算方法:
[0013] 计算谓语pk覆盖率Cov(pk)的方法如公式(1)所示。符号代表RDF三元组的主语、谓语和宾语。x,t和D分别代表实例、三元组和数据集。
[0014]
[0015] 该公式表示包含谓语pk的实例个数与数据集中实例总数的比值。D表示数据集,x表示数据集D中的实例,t表示一个RDF三元组,s表示三元组中的主语、pk表示三元组中的谓语、o表示三元组中的宾语。该公式能够计算出谓语pk在整个数据集D所有实例中的出现频率,即数据集中包含谓语pk的实例数量与数据集中所有实例数量的比值。
[0016] 伪代码:
[0017]
[0018]
[0019] 第1.2、谓语的辨别率
[0020] 谓语的辨别率是指从数据集中辨别出某一个实例的能力,如在药品数据集中谓语rdfs:name表示实例的名字,谓语rdfs:type表示实例的类型,那么在这个数据集中名字的辨别率要比类型高,因为它更能代表一个实例的特征。
[0021] 计算方法:
[0022] 计算谓语pk辨别率Dis(pk)的方法如公式(2)所示。符号代表RDF三元组的主语、谓语和宾语。x,t和D分别代表实例、三元组和数据集。
[0023]
[0024] 该公式描述了谓语宾语的个数与三元组个数的比值,反映了谓语对应宾语的多样性。D表示数据集,x表示数据集D中的实例,t表示一个RDF三元组,s表示三元组中的主语、pk表示三元组中的谓语、o表示三元组中的宾语。该公式能够计算每个谓语pk对实例的辨别能力,即每个谓语包含所有宾语的种类与包含所有宾语的个数的比值。
[0025] 伪代码:
[0026]
[0027] 第1.3、计算重要谓语
[0028] 重要谓语是指数据集所有谓语中能够标识实例特征的谓语。
[0029] 计算方法:
[0030] 公式(3)用来计算重要谓语:
[0031] {p|p∈D,Cov(p)>α&&Dis(p)>β}  (3)
[0032] 其中α、β由人工指定,默认将α设置为COV(pk)的平均值,将β设置为Dis(pk)的平均值。如果一个谓语的频率和辨别率分别大于给定的阈值α和β,那么这个谓语就是重要的。我们从输入的数据源中分别选择出各自重要的谓语。
[0033] 第2、匹配不同数据集间的重要谓语得到候选谓语对
[0034] 两个数据集中的重要谓语不一定能够一一对应,因此需要依赖其对应的宾语来匹配谓语,只有当两个数据集的重要谓语共享一些宾语时,才会认为两个谓语可能表示同一个属性,然后才能将其设置为候选谓语对进行接下来的操作。
[0035] 第2.1、汇总同一数据类型的谓语
[0036] 我们首先通过谓语的类型进行分组,谓语的类型是由RDF宾语的类型决定的。在本系统中我们使用了四种谓语类型:string,URI,数值和日期。然后我们匹配源数据集和目标数据集中数据类型相同的谓语,从而得到原始的谓语匹配对。
[0037] 第2.2、计算每个谓语对匹配的置信度
[0038] 对于同属一个类型的谓语,需要根据宾语的具体值来进行匹配,计算每个谓语对宾语间的Jaccard距离,也就是谓语匹配的置信度,如公式(4)所示。R表示对宾语的处理工作,对于日期、数值类型不做任何处理,采用原来的值;对于string和URI进行文本处理,包括文本分词、停用词过滤和词干提取。
[0039]
[0040] 第2.3、筛选候选谓语对
[0041] 通过阈值来筛选所有谓语对,只有当匹配对的置信度高于阈值时,该匹配对才能加入到候选谓语匹配对进入接下来的步骤中;
[0042] 第3、根据局部敏感哈希策略提取候选实例对
[0043] 候选实例对的生成是为了限制被比较的实例的数量。提取候选对的一个常见方法是采用信息检索领域的倒排表索引技术,对RDF三元组中的宾语建立倒排表索引,每个宾语后面连接着具有相同宾语的主语,这些连在一起的主语就可以看作是一部分实例候选集。但该方法得到的候选集数量较为庞大,通常还需要进一步对齐进行处理,本发明采用局部敏感哈希的思想来把可能相似的实例对聚合在一起。
[0044] 第3.1、构建实例的向量空间模型
[0045] 一个主语所有相关的宾语组织在一起可以看成是一篇文档,从这些中提取出来一些典型特征,本发明以词语ID作为特征值,这些特征可以用向量的方式来表达,将整个数据集转化为一个实例ID对应一个特征向量v的向量空间模型。
[0046] 第3.2、局部敏感哈希处理
[0047] 本发明采用基于Jaccard距离的局部敏感哈希函数族,如公式(5)所示,其中P是a的一个投影变换,随机选择n个哈希函数,即n种投影变换策略,计算得到实例的n维最小哈希签名矩阵。
[0048] hP(A)=min{P(a)|a∈A}   (5)
[0049] 在得到最小哈希签名矩阵后,一个有效的局部敏感哈希处理方法是将签名矩阵划分为b个行条(band),每个行条由r行组成。对每个行条,存在一个哈希函数能够将行条中的每r个整数组成的列向量映射到某个大数目范围的桶中。可以对所有行条使用相同的哈希函数,但是对每个行条都使用一个独立的桶数组,因此即使是不同行条中相同向量列,它们也不会被哈希到同一桶中。图2给出了一个12行条签名矩阵的一部分,它被分成4个行条,每个行条由3行组成。图中可见的第2列和第4列均包含列向量[0,2,1],因此它们肯定会哈希到行条1下的哈希桶中。因此,不管这两列在其它3个行条下的结果如何,它们都是一个候选对。此时,图中显示给出的其它列也有可能会哈希到行条1下的桶中,但是由于此时两个列向量[1,3,0]和[0,2,1]不同,同时哈希桶数目也很多,因此偶然冲突的预期概率会非常低,通常假设只有当两个向量相等时,它们才会哈希到同一个桶中。
[0050] 第4、实例匹配
[0051] 在提取候选集之后,还需要对每一个实例的候选对进行提炼,只有其相似度大于人工设置阈值的实例对作为最后的输出结果。实例的相似度计算仍然是以已经匹配的谓语和相关宾语作为参考,本方案提出采用加权平均的方式计算得到候选对的相似度,计算方法如公式(6)所示:
[0052]
[0053] 其中A表示源数据集和目标数据集中的已经匹配的重要谓语所组成的谓语对,conf(pS,pT)表示谓语pS与pT匹配的置信度,Ok表示谓语pk相关的所有宾语组成的集合,F(OS,OT)表示计算PS与PT相关宾语的相似度,对于string、URI计算两者文本处理后所包含的词语TF-IDF值的余弦相似度,对于数值和日期,先将数值精确到两位小数,日期取原始值,然后直接对比它们是否相同,若相同则为1,若不同则为0。
[0054] 本发明的优点和积极效果
[0055] 本发明可以辅助对数据集内容不是很熟悉的用户快速发现数据集间的相同实例,同时针对大规模数据集,可以采用分布式环境实现,极大的提高了系统的运行效率,降低时间复杂度。
[0056] 本发明可以快速发现两个数据集间相同的实例。在数据集越来越庞大的今天,本发明不仅有助于用户了解相关数据集,而且能够辅助用户在Linked Data上发布新数据集,进一步完善现有语义网资源,促进语义网的发展。【附图说明】
[0057] 图1是基于局部敏感哈希的实例匹配方法的实现流程;
[0058] 图2是最小哈希签名矩阵行条化处理示意图;
[0059] 图3是LinkedMDB数据集的部分内容;【具体实施方式】
[0060] 本发明在实施阶段采用了4个数据集,它们都是Linked Data中的真实数据集。前两个数据集D1和D2来自于IM@OAEI2011,是2011年组织的关于实例匹配方向的竞赛数据集,由于它们的数据量较小,本文另外又选择了较大的数据集来评测方案的性能,D3的规模是中等的、D4的规模较大,算法无法在内存中完成实验,数据集详细参数如表1所示。
[0061] 表1数据集详细参数
[0062]
[0063] 数据集涉及三个领域,包括地址、电影和人,其中实例匹配是多对多的关系,例如在D3中,实例个数分别为12813和13122,总匹配总个数为13165,其中一个DBpedia的实例可能与多个LinkedMDB中的实例匹配,或一个LinkedMDB中与多个DBpedia中的多个实例匹配。
[0064] 第1步、根据谓语的覆盖率和辨别率找到重要的谓语
[0065] 在重要谓语选择阶段,首先获得两个数据集所有的谓语信息,然后分别计算谓语覆盖率和谓语辨别率,从中筛选出重要谓语。
[0066] 图3为LinkedMDB数据集的部分内容,以它为例分别计算谓词的覆盖率和辨别率,其中每一行为一个包含<主><谓><宾> .的RDF三元组,以谓语为例,根据公式(1)和公式(2)可分别计算出该谓词的覆盖率为:
[0067]
[0068]
[0069] 本发明设置α为该数据集所有谓语覆盖率的平均值,β为该数据集所有谓语辨别率的平均值,只有满足公式(3)的谓语才会被选作为重要谓语。表2中Prs和Prt分别表示谓语的总个数,Pfs和Pft分别表示选出的重要谓语的个数。
[0070] 第2步、匹配重要谓语得到候选谓语对
[0071] 在谓语匹配阶段,对所有的重要谓语根据宾语的Jaccard距离计算置信度,只有当两个谓语的置信度大于某个阈值时才认为两个谓语是匹配的,并应用到后面的环节。在实验中,设置阈值为所有非平凡谓语对置信度的平均值,非平凡指的是置信度大于某个人工设置阈值的匹配对,该人工阈值设置为0.03。
[0072] 表2中Prs和Prt分别表示谓语的总个数,PAs和PAt分别表示用于后续阶段的匹配的重要谓语。
[0073] 表2谓语匹配结果
[0074]
[0075] 第3步、根据局部敏感哈希策略提取候选实例对
[0076] 本发明将参数r固定为1,n固定为20,然后分别对四个数据集进行候选集提取,本发明采用对完整性(pari completeness,PC)和减速比(reduction ration,RR)来衡量候选集提取情况,计算方法如公式(7)、公式(8)所示。
[0077]
[0078]
[0079] 对完整性(PC)用来表示选出的真实的匹配对与真实的匹配对的比值,减速比(RR)衡量选出来的匹配对的数量;PC和RR的取值范围为0~1,PC与RR的两对极限值为一个也未选出的(0,1)及全部选出的(1,0),只有当RR越大的同时保证PC越高,效果较好。
[0080] 表3为候选实例对提取结果与SLINT+的对比,从图中可以看出,本发明提出的方案在RR方面的指标基本都已达到99%,PC也达到了90%以上,与SLINT+在效果方面已经非常接近,可见该方案有一定的可行性;在效率方面,前三个数据集的结果是在一台电脑上进行实验得到的,D4数据集由于规模较大,本文在实现过程中采用Hadoop的HDFS来存储数据集,借助Spark在4个节点的集群上实现并行计算,所有的运行时间均优于SLINT+,在D3数据集上,本文将速度提升了10倍,在D4数据集上将速度提升了近20倍,主要原因在于采用局部敏感哈希的方法能将实例独立开来,可以很容易采用并行的模式进行计算,而且借助Spark和Hadoop可以非常快速地处理大规模数据集。
[0081] 表3候选实例对提取结果与SLINT+对比
[0082]
[0083] 第4步、实例匹配
[0084] 在实例匹配阶段,本发明采用准确率(precision,Prec)和召回率(recall,Rec)来衡量。它们的计算方法如公式(9)、公式(10)所示:
[0085]
[0086]
[0087] 准确率(Prec)用来表示实例匹配系统找到的真实匹配对与找到所有匹配对的比值,召回率(Rec)用来表示找到的正确的匹配对与数据集中所有真正匹配对的比值。Prec和Rec的取值范围也是0~1,Prec与Rec的两对极限值为(0,0)和(1,1),保证Rec较高的同时准确率越高越好。
[0088] 表4为实例匹配结果与SLINT+的对比。从实验结果可以看出,本文的方案在实验数据集上表现较佳,具有一定的可行性,同时在效率方面优于SLINT+,能够很容易的在并行架构下对大规模数据进行实例匹配。
[0089] 表4实例匹配结果与SLINT+的对比
[0090]