数据相似度确定方法、装置及处理设备与流程

文档序号:18832445发布日期:2019-10-09 03:53阅读:163来源:国知局
数据相似度确定方法、装置及处理设备与流程
本申请涉及数据处理领域,特别涉及一种数据相似度确定方法、装置及处理设备。
背景技术
:数据集通常采用表的形式记录数据,表中的每一行即为一个元组(也称为记录)。相似连接是一种常见的数据集操作,是指从多个数据集中确定出相似度大于指定阈值的元组(tuple)对,并将该元组对存储在数据集中的同一行。相关技术中,一般采用局部敏感哈希(localitysensitivehashing,lsh)算法来确定属于不同数据集的元组对的相似度。具体的,lsh算法可以采用多个不同的哈希函数对各个数据集中的每个元组分别进行哈希映射,得到每个元组在不同哈希映射下的哈希值;之后可以统计属于不同数据集的元组对在各个哈希函数的哈希映射下,哈希值相同的次数,从而得到每个元组对所对应的统计频次,该统计频次即可反映元组对的相似程度。但是,当数据集个数较多,或数据集中包括的元组的个数较多时,相关技术中的lsh算法的效率较低。技术实现要素:本申请提供了一种数据相似度确定方法、装置及处理设备,可以解决相关技术中的相关技术中的lsh算法的效率较低的问题。技术方案如下:第一方面,提供了一种数据相似度确定方法,应用于处理设备,该方法可以包括:获取与多个不同的哈希函数一一对应的多个哈希表,每个该哈希表是由对应的哈希函数对多个数据集中的每个元组进行哈希映射后得到的,每个该哈希表包括至少一个哈希桶,每个该哈希桶中记录有多个键值,该多个键值指示的元组的哈希值相同;将该多个哈希表所包括的多个哈希桶划分为至少一个集群,每个该集群包括相似度大于相似度阈值的多个哈希桶;分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计,得到每个键值对所对应的统计频次,该统计频次的高低与键值对所指示的元组对的相似程度的高低正相关。本申请提供的方法,由于每个集群中的各个哈希桶中记录的键值的相似度较高,因此在以集群为单位读取哈希桶时,可以在较短的时间内快速统计得到相似键值对的统计频次,有效提高了频次统计的效率,提升了lsh算法的性能。可选的,该处理设备分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计,得到每个键值对所对应的统计频次的过程可以包括:分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计,得到每个键值对在每个该集群中对应的统计频次;将每个键值对在各个集群中对应的统计频次累加,得到每个该键值对所对应的统计频次。可选的,该处理设备可以包括:存储器以及与该存储器连接的硬件处理器,该多个集群存储在该存储器中;其中,该硬件处理器可以从该存储器中依次读取每个该集群,并分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计;该方法还可以包括:该硬件处理器将统计得到的统计频次写入该存储器;该存储器进而可以将每个键值对在各个集群中对应的统计频次累加,得到每个该键值对所对应的统计频次。由于该硬件处理器的处理速度较快,与存储器之间的数据传输带宽也较高,因此可以有效提高频次统计时的运算速度,改善lsh算法的性能;此外,由于可以减少存储器与中央处理器之间的数据传输量,从而可以有效提升系统性能,降低系统能耗。可选的,由于硬件处理器的存储空间有限,因此该硬件处理器可以在其存储空间被占满,或者完成对一个集群的统计后,将统计得到的统计频次写入该存储器,直至将每个键值对在各个集群中对应的统计频次均写入该存储器。可选的,该硬件处理器将统计得到的统计频次写入该存储器时,可以将统计得到的统计频次中,数值小于频次阈值的统计频次写入该存储器。由于统计频次较高的键值对在后续的统计过程中更新的概率较高,因此相对于将已统计得到的所有统计频次均写入存储器,只写入频次较低的键值对的统计频次可以有效减少对存储器的写操作。可选的,该硬件处理器每次写入该存储器的统计频次记录在一个表分片中;该存储器将每个键值对在各个集群中对应的统计频次累加,得到每个该键值对所对应的统计频次的过程可以包括:分别统计接收到的多个表分片中,每对表分片的相似度;按照相似度由高至低的顺序,依次对每对表分片中相同键值对所对应的统计频次进行累加,得到每个该键值对所对应的统计频次。根据相似度由高至低的顺序,每对表分片进行合并,可以有效提高表分片合并的效率,减少合并过程中所占用的存储空间,以及合并运算的时间。可选的,该硬件处理器将统计得到的统计频次写入该存储器的过程可以包括:对统计得到的统计频次进行排序;将排序后的统计频次写入该存储器。对键值对进行排序后再写入存储器,使得各个表分片中记录的键值对的排列顺序统一,从而可以进一步降低表分片合并时的计算复杂度,提高存储器对各个表分片进行合并时的效率。可选的,在分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计之前,该方法还可以包括:依次检测每个该哈希桶中是否包含目标键值对,该目标键值对指示的元组对属于待查询数据集;将每个该集群中不包含目标键值对的哈希桶滤除。通过滤除不符合要求的哈希桶,可以有效减少该硬件处理器所需执行的读取操作,有效提高数据处理的效率。第二方面,提供了一种数据相似度确定装置,该装置可以应用于处理设备中,该装置包括至少一个模块,该至少一个模块可以用于实现上述第一方面所提供的数据相似度确定方法。第三方面,提供了一种处理设备,该处理设备可以包括:存储器、分别与该存储器连接的硬件处理器和中央处理器;该存储器、硬件处理器和中央处理器可以用于实现上述第一方面所提供的数据相似度确定方法。第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该计算机可读存储介质在计算机上运行时,使得计算机执行上述第一方面所提供的数据相似度确定方法。第五方面,提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,可以使得计算机执行上述第一方面所提供的数据相似度确定方法。综上所述,本申请提供了一种数据相似度确定方法、装置及处理设备,该处理设备在获取到多个哈希表后,可以先将该多个哈希表所包括的多个哈希桶按照相似性划分为至少一个集群,使得每个集群包括的多个哈希桶的相似度大于相似度阈值,之后再分别对每个集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计。由于每个集群中的哈希桶较为相似,因此以集群为单位进行统计时,可以有效提高键值对的统计频次的统计效率。并且,本申请提供的处理设备可以通过硬件处理器对存储器中存储的哈希表进行频次统计,由于该硬件处理器的处理速度较快,与存储器之间的数据传输带宽也较高,因此可以有效提高频次统计时的运算速度,改善lsh算法的性能。附图说明图1是本发明实施例提供的一种处理设备的结构示意图;图2是本发明实施例提供的一种数据相似度确定方法的流程图;图3是本发明实施例提供的一种集群的划分示意图;图4是本发明实施例提供的一种数据相似度确定算法的框图;图5是本发明实施例提供的另一种数据相似度确定算法的框图;图6是本发明实施例提供的一种记频表的示意图;图7是本发明实施例提供的一种存储器确定每个键值对所对应的统计频次的方法流程图;图8是本发明实施例提供的一种数据相似度确定装置的结构示意图;图9是本发明实施例提供的另一种数据相似度确定装置的结构示意图。具体实施方式本发明实施例提供的数据相似度确定方法可以应用于单机环境,即单个处理设备中。该处理设备可以为计算机或者服务器等。以单个处理设备为例,参考图1,该处理设备可以包括存储器01、硬件处理器02以及中央处理器(centralprocessingunit,cpu)03,该cpu03也可以称为该处理设备的主机(host)端。该处理设备中设置的硬件处理器02的个数可以为一个或多个,图1中仅示出了一个硬件处理器。其中,该存储器01可以为固态硬盘(solidstatedrives,ssd),该ssd通常采用闪存(flash)作为存储介质。ssd的随机写操作的性能低于顺序写操作和读操作的性能,并且写操作会减少ssd的寿命,因此,要尽可能减少对ssd的写操作,尤其是随机写操作。该硬件处理器02可以为具备数据处理功能的硬件电路,例如可以为现场可编程门阵列(fieldprogrammablegatearray,fpga)或者复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)等,该硬件处理器02通常采用动态随机存取存储器(dynamicrandomaccessmemory,dram)作为存储介质。dram的读写速度要远高于ssd,且随机或顺序的读写操作并没有太大差异。因此,写操作,尤其是随机写操作可以尽量在dram中完成。该硬件处理器02可以通过高速外设部件互连标准(peripheralcomponentinterconnectexpress,pcie)接口与存储器01连接,该存储器01与cpu03之间则可以通过输入/输出(input/output,i/o)接口连接。相关技术中,数据集一般存储在存储器中,而频率统计一般是由cpu实现。该存储器和cpu之间存在大量和频繁的i/o操作,由于i/o接口的数据传输带宽较低,严重限制了lsh算法的效率。而在本发明实施例提供的方法中,该存储器01可以用于存储哈希表,该硬件处理器02可以读取存储器01中存储的哈希表,并统计哈希值相同的元组对出现的频次,从而得到元组对的统计频次,并反馈至存储器01。该存储器01最终可以将统计频次大于指定阈值的元组对发送至cpu03。通过该硬件处理器02进行频次统计,存储器01只需向cpu03发送统计频次大于指定阈值的元组对,从而可以有效减少存储器01与cpu03之间的数据传输量。由于存储器01与硬件处理器02之间采用的pcie接口的数据传输带宽比i/o接口的数据传输带宽高,因此可以有效提高数据处理的效率。并且,该频次统计的过程不会对存储器01与cpu03之间的数据传输带宽造成影响,实现了数据的并行处理,能够提高cpu03的性能。需要说明的是,除了单机环境之外,本发明实施例提供的方法也可以应用于计算机集群中,本发明实施例对该方法的应用场景不做限定。图2是本发明实施例提供的一种数据相似度确定方法的流程图,该方法可以应用于图1所示的处理设备中,参考图2,该方法可以包括:步骤101、cpu从存储器中获取与多个不同的哈希函数一一对应的多个哈希表。其中,每个哈希表是由对应的哈希函数对多个数据集中的每个元组进行哈希映射后得到的,例如,该多个哈希表可以采用lsh算法计算得到。每个哈希表包括至少一个哈希桶,每个哈希桶中记录有多个键值,该多个键值指示的元组的哈希值相同。其中,每个键值用于指示一个元组在数据集中的存储位置,因此键值一般也可以称为元组的索引。示例的,假设待处理的数据集包括数据集p和数据集q,其中数据集p中包括d1、d2、d3、d4和d5共五个元组,用于指示该五个元组的存储位置的键值分别为p1、p2、p3、p4和p5;数据集q中包括c1、c2、c3、c4和c5共五个元组,用于指示该五个元组的存储位置的键值分别为q1、q2、q3、q4和q5。假设cpu分别采用了f1至fn共n个哈希函数对该两个数据集中的每个元素进行哈希映射,则最终可以得到与该n个哈希函数一一对应的n个哈希表(n为大于1的整数)。表1中示出了与第一个哈希函数f1对应的哈希表t1、与第二个哈希函数f2对应的哈希表t2以及与第n个哈希函数fn对应的哈希表tn。以第二个哈希表t2为例,如表1所示,该哈希表t2包括标识为2.1至2.m的m个哈希桶(m为大于1的整数),其中标识为2.1的哈希桶中记录有键值p1和键值p2。由此可知,该键值p1所指示的元组d1在采用第二个哈希函数f2进行哈希映射后得到的哈希值,与键值p2所指示的元组d2采用第二个哈希函数f2进行哈希映射后得到的哈希值相同。同理可知,键值q2、键值p5以及键值q5所指示的三个元组采用该第二个哈希函数f2进行哈希映射后的哈希值也相同。表1步骤102、cpu将该多个哈希表所包括的多个哈希桶划分为至少一个集群。在本发明实施例中,cpu可以采用预设的聚类算法,基于哈希桶内所包括的键值的相似性对该多个哈希桶进行聚类(cluster),以将该多个哈希桶划分为至少一个集群,每个集群可以包括相似度大于相似度阈值的多个哈希桶,该多个哈希桶可以属于不同的哈希表,即可以是由不同的哈希函数映射得到的。其中,cpu所采用的聚类算法可以包括层次聚类算法(hierarchicalmethods)、划分聚类法(k-means)以及基于模型的聚类方法(model-basedmethods)中的任一种,本发明实施例对此不做限定。示例的,对比表1所示的三个哈希表可以看出,由于哈希表t1中的哈希桶1.1、哈希表t2中的哈希桶2.1以及哈希表tn中的哈希桶n.1所记录的键值相似,主要为p1,p2,q1和q2,因此可以将该三个哈希桶划分至同一个集群;而哈希表t1中的哈希桶1.m、哈希表t2中的哈希桶2.m以及哈希表tn中的哈希桶n.m所记录的键值主要为p5和q5,因此可以将该三个哈希桶划分至同一个集群。图3是本发明实施例提供的一种集群的示意图,参考图3,在采用聚类算法对n个哈希表中的各个哈希桶进行划分后,可以划分得到c1至cw共w个集群(w为大于1的整数),其中集群c1可以包括哈希桶c1.1至哈希桶c1.x共x个哈希桶,该x个哈希桶中可以包括表1中的哈希桶1.1、哈希桶2.1以及哈希桶n.1;集群c2可以包括哈希桶c2.1至哈希桶c2.y共y个哈希桶,该y个哈希桶中可以包括表1中的哈希桶1.m、哈希桶2.m以及哈希桶n.m。其中,x和y均为大于1的整数。步骤103、cpu将该至少一个集群中的每个集群作为一个文件存储在存储器中。进一步的,cpu可以将该至少一个集群中的每个集群作为一个文件(file)存储在存储器中,其中,文件为文件系统中对存储内容进行管理的逻辑单位。由于每个文件是以连续的方式存储在存储器中ssd,因此可以使得硬件处理器在读取集群时具有连续性,即可以顺序读取每个集群中的哈希桶,提高了数据读取的效率。需要说明的是,在本发明实施例中,cpu在将至少一个集群存储至存储器中之后,还可以依次检测每个集群中的每个哈希桶中是否包含目标键值对,该目标键值对指示的元组对属于待查询数据集,该待查询数据集为预先指定的需要进行相似连接的数据集。进一步的,cpu可以将每个集群中不包含该目标键值对的哈希桶滤除,从而可以过滤掉无需读取的哈希桶,减少该硬件处理器所需执行的读取操作,有效提高数据处理的效率。示例的,假设待查询数据集为数据集p和数据集q,而cpu获取到的哈希表是基于数据集p、数据集q、数据集r和数据集s得到的。则cpu可以依次检测每个哈希桶中是否包含属于数据集p和数据集q的元组对所对应的目标键值对,若某个哈希桶中记录的每个键值对所指示的元组对均不属于该数据集p和数据集q,则可以将该哈希桶滤除,即将该哈希桶从集群中删除。作为一种可选的实现方式,cpu可以在每个哈希桶中设置一个布隆过滤器(bloomfilter),该布鲁过滤器可以是由待查询数据集的关键字(例如数据集的标识p和q)组成的签名,通过该布鲁过滤器可以快速滤除无需读取的哈希桶。步骤104、硬件处理器从存储器中依次读取每个集群,并分别对每个集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计。其中,某个键值对出现的次数是指该键值对在各个哈希桶中出现的次数,也即是,该多个哈希桶中,记录有该键值对的哈希桶的个数。由于需要实现对不同数据集的元组进行相似连接,因此可以仅对属于不同数据集的键值对的出现次数进行统计。图4是本发明实施例提供的一种数据相似度确定算法的框图,参考图4可以看出,该硬件处理器02可以包括统计模块021以及写入模块022,该统计模块021可以设置在硬件处理器02的dram中,该统计模块021可以依次从存储器01中读取每个集群,并以集群为单位,进行键值对的统计。该写入模块022则可以将统计得到的统计频次以表分片的形式写入至存储器01。假设集群c1中所包括的哈希桶为表1所示的哈希桶1.1、哈希桶2.1以及哈希桶n.1,则从表1可以看出,该三个哈希桶中,属于不同数据集的键值对包括:键值对p1和q1,键值对p2和q1,键值对p1和q2,以及键值对p2和q2。其中,哈希桶1.1和哈希桶n.1中均记录有键值对p1和q1,因此可以统计得到该键值对p1和q1出现的次数为2,即该键值对p1和q1对应的统计频次为2;相应的,可以统计得到键值对p2和q1对应的统计频次也为2;键值对p1和q2,以及键值对p2和q2对应的统计频次均为1。步骤105、当该硬件处理器的存储空间被占满,或者该硬件处理器完成对一个集群的统计后,将统计得到的统计频次写入该存储器。由于硬件处理器中的dram容量有限,因此当其存储空间被占满,或者完成对一个集群的统计后,可以将统计得到的统计频次先写入存储器。也即是,硬件处理器可以在对各个集群的哈希桶进行统计的过程中,分次将各键值对的统计频次写入存储器,直至将每个键值对在各个集群中对应的统计频次均写入该存储器。其中,硬件处理器该每次写入存储器的统计频次可以记录在一个表分片中。图5是本发明实施例提供的另一种数据相似度确定算法的框图,参考图5可以看出,硬件处理器02统计得到的各个键值对的统计频次可以记录在记频表中。假设该硬件处理器02完成了对集群c1的统计,则可以将当前已经统计得到的各个键值对的统计频次写入存储器01,例如可以向存储器写入表分片1。进一步的,为了提高统计频次的写入效率,降低硬件处理器的存储空间的占用速率,硬件处理器每次向存储器写入统计频次时,可以仅将统计得到的统计频次中,数值小于频次阈值的统计频次写入该存储器,也即是,仅写入统计频次较低的部分键值对的统计频次,而统计频次较高的键值对则保留在该硬件处理模块中继续进行统计。其中,该频次阈值可以为预先设定的固定值,也可以是根据已经统计得到的统计频次的上限值所确定的阈值,例如该频次阈值可以为上限值的三分之一或者二分之一等。由于统计频次较高的键值对在后续的统计过程中更新的概率较高,因此相对于将已统计得到的所有统计频次均写入存储器,只写入频次较低的键值对的统计频次可以有效减少对存储器的写操作。又由于对采用ssd作为存储介质的存储器进行写操作会影响存储器的性能,降低其使用寿命,因此该分次写入数值较低的统计频次可以降低对存储器性能的影响。并且,由于分次写入到存储器的统计频次最终需要进行合并,将统计频次较高的键值对保留在硬件处理器中继续进行统计,可以保证每次写入到存储器的统计频次中重复的键值对的数量较少,进而可以降低最终合并计算时的计算量,有效提高表分片的合并算效率。示例的,假设当硬件处理器的存储空间被占满时,其统计得到的统计频次记录在记频表中,该记频表如图6所示。且该记频表中的统计频次按照数值由高至低的顺序进行排序。其中,r1部分为统计频次大于或等于频次阈值的键值对部分,r0部分为统计频次小于该频次阈值的键值对部分。则该硬件处理器在向存储器写入统计频次时,可以仅将该r0部分的键值对的统计频次先写入至存储器,而r1部分的键值对则继续保留在该硬件处理器中。例如,该r0部分的键值对的统计频次可以记录在表分片1中,并写入至存储器01。在后续的统计过程中,若r1部分中,r11部分的键值对被更新,已写入到存储器的r0部分中,r01部分的键值对被更新,则当该硬件处理器再次向存储器写入统计频次时,例如写入表分片2时,该相邻的两个表分片中重复的键值对部分仅为该r01部分,从而可以有效减小后续进行表分片合并时的计算量。同时,由于在后续的统计过程中,仅r01部分为新增的键值对部分,而r11部分可以直接在原纪录中被更新,从而可以有效降低硬件处理器的存储空间的占用速率,减少了因其存储空间被占满而必须向存储器写入表分片的次数,因此进一步减少了对存储器的写操作。基于同样的原因,当各个哈希表中的哈希桶按照相似性划分成多个集群后,由于每个集群中的各个哈希桶中记录的键值的相似度较高,因此硬件处理器以集群为单位读取哈希桶时,可以在较短的时间内快速统计得到相似键值对的统计频次,有效提高了频次统计的效率,提升了lsh算法的性能,并且可以减少对存储器的写操作。可选的,在本发明实施例中,硬件处理器每次向存储器中写入统计频次时,还可以按照预设的排序算法对该统计得到的统计频次进行排序,然后再将排序后的统计频次写入该存储器。示例的,硬件处理器可以按照各个键值对的首字符在预设的字符顺序表中的位置,对该各个键值对的统计频次进行排序。例如,当键值对的首字符为字母时,可以按照各个键值对的首字母在字母表中的顺序进行排序。或者,若键值对的首个字符为数字时,可以按照数字由大至小(或由小至大)的顺序进行排序。其中,在进行排序时可以采用快速排序算法,其时间复杂度仅为o(nlogn),log是指以2为底的对数。对键值对进行排序后再写入存储器,使得各个表分片中记录的键值对的排列顺序统一,从而可以进一步降低表分片合并时的计算复杂度,提高存储器对各个表分片进行合并时的效率。步骤106、存储器将每个键值对在各个集群中对应的统计频次累加,得到每个该键值对所对应的统计频次。存储器接收到硬件处理模块写入的统计频次后,可以将每个键值对在各个集群中对应的统计频次累加,从而得到每个该键值对所对应的总的统计频次。由于硬件处理器每次写入的统计频次可以记录在一个表分片中,因此存储器在进行统计频次的汇总时,可以依次对相邻两个表分片进行合并,即将该两个表分片中相同键值对的统计频次进行求和,从而将该两个表分片合并为一个表分片。之后,再将合并得到的表分片继续与其他表分片进行合并,直至将接收到的所有表分片合并为一个表为止,该最终合并得到的频次统计表中即记录有每个键值对所对应的总的统计频次。进一步的,存储器还可以将该频次统计表中统计频次大于指定阈值的键值对发送至cpu,以便cpu对该统计频次大于指定阈值的键值对所指示的元组对进行相似连接。图7是本发明实施例提供的一种存储器确定每个键值对所对应的统计频次的方法流程图,参考图7,该统计过程可以包括:步骤1061、分别统计接收到的多个表分片中,每对表分片的相似度。在本发明实施例中,存储器可以采用预设的相似度估计函数,对接收到的多个表分片中,每对表分片的相似度进行计算。例如,该存储器可以采用最小哈希(minhash)算法计算每对表分片的相似度。示例的,假设如图5所示,该存储器共接收到了硬件处理器写入的m个表分片(m为大于1的整数),则存储器可以分别计算该m个表分片中,每两个表分片的相似度,总计可以计算得到m×(m-1)/2个相似度。步骤1062、按照相似度由高至低的顺序,依次对每对表分片中相同键值对所对应的统计频次进行累加,得到每个该键值对所对应的统计频次。存储器可以按照相似度由高至低的顺序,依次对每对表分片进行合并,直至将该所有表分片合并至一个表。其中,在合并任一对表分片时,可以将该对表分片中相同键值对所对应的统计频次进行累加。由于每对表分片合并后可以生成一个新的表分片,后续再继续按照相似度进行合并时,若某对表分片中的一个表分片已经合并至新的表分片,则可以将该新的表分片与该某对表分片中的另一表分片进行合并。示例的,假设硬件处理器分次写入存储器的表分片包括表分片1至表分片4共4个表分片,且存储器计算得到的该4个表分片中,每对表分片的相似度如表2所示,其中,表分片1和表分片2的相似度为50%,为各对表分片中相似对最高的一对表分片,表分片3和表分片4的相似度为10%,为各对表分片中相似对最低的一对表分片。表2则在进行表分片合并时,按照相似度由高至低的顺序,存储器可以先将表分片1和表分片2中相同键值对所对应的统计频次进行累加,得到一个新的表分片:表12;之后,按照相似的高低顺序,存储器需要合并表分片1和表分片3,由于表分片1已经合并至表12,因此存储器可以直接将该表分片3与表12进行合并,得到新的表分片:表123;最后,将表分片4与表123进行合并即可得到最终的频次统计表。在本发明实施例中,根据相似度由高至低的顺序,每对表分片进行合并,可以有效提高表分片合并的效率,减少合并过程中所占用的存储空间,以及合并运算的时间。进一步的,以酒店推送场景为例,介绍本发明实施例提供的数据相似度确定方法。假设某连锁酒店的会员信息维护数据库中存储有每位会员的历史住宿数据。包括会员的房间喜好,个人习惯,住宿地点偏好,特殊要求等等信息。当会员访问连锁酒店的预订页面时,酒店可以根据会员的历史住宿数据,为其推送可能感兴趣的酒店。其中,在该连锁酒店的数据库中,每个酒店可以作为一个单独的多维向量存储在该数据库中。每个酒店对应的向量可以包括多个维度,例如星级,价格,节假日涨幅,各种优惠,装修时间,有无健身房,有无会议室,有无游泳池,距离市区距离,距离机场、地铁站或公交站距离,房间评价,早餐评价,服务评价以及安静程度评价等。对于某个特定会员来说,假设该会员住过且个人评价不低于某一权值的酒店记录在数据集p中,该数据集p中的元组可以表示为p*;该会员选择的城市中有空房的酒店记录在数据集q中,该数据集q中的元组可以表示为q*。则对该数据集p和数据集q中的元组进行相似连接,即可确定并推送出在各个维度都与会员个人喜好相匹配的酒店。该推送流程如下:步骤一、采用lsh算法对数据集p和数据集q中的每个元组(即酒店)进行哈希映射后,得到多个哈希表。然后再对该多个哈希表中的多个哈希桶进行聚类划分,得到至少一个集群,每个集群中存有包含相近的酒店的哈希桶。步骤二、通过fpga或其他硬件处理器的dram依次读取每个集群,并统计每一个酒店对(p*,q*)出现的频次。步骤三、当dram已满,或一个集群统计结束时,在dram中留下高概率被更新的酒店对(即统计频次高于某一阈值的的酒店对),将低概率被更新的酒店对(即统计频次低于某一阈值的酒店对)以表分片的形式写入ssd。直至所有集群统计完毕。步骤四、在存储器中将所有表分片合并成一个大的频次统计表。该最终得到的频次统计表可以如表3所示。表3酒店对统计频次p1,q1034p1,q1633p3,q829p2,q821p1,q716p3,q1012……步骤五、统计该频次统计表中,数据集q中的每个酒店对应的总频次,并按照总频次由高至低的顺序进行推荐。示例的,参考表3可以看出,数据集q中的酒店q8对应的总频次为50次(29+21),酒店q10对应的总频次为46次,酒店q16对应的总频次为33次,酒店q7对应的总频次为16次,因此可以按照酒店q8、酒店q10、酒店q16和酒店q7的顺序进行推荐。通过本发明实施例提供的数据相似度确定方法,可以准确、快速地向用户推荐匹配其爱好和习惯的酒店。并且,在本发明实施例中,可以通过硬件处理器提升lsh算法的性能,进而可以在保证相似连接准确率的前提下大大提高运算效率,从而使得实时推荐成为可能。需要说明的是,本发明实施例提供的数据相似度确定方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。综上所述,本发明实施例提供了一种数据相似度确定方法,该方法在获取到多个哈希表后,可以先将该多个哈希表所包括的多个哈希桶按照相似性划分为至少一个集群,使得每个集群包括的多个哈希桶的相似度大于相似度阈值,之后再分别对每个集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计。由于每个集群中的哈希桶较为相似,因此以集群为单位进行统计时,可以有效提高键值对的统计频次的统计效率。并且,本发明实施例提供的方法中,可以由硬件处理器对存储器中存储的哈希表进行频次统计,由于该硬件处理器的处理速度较快,与存储器之间的数据传输带宽也较高,因此可以有效提高频次统计时的运算速度,改善lsh算法的性能;此外,由于可以减少存储器与cpu之间的数据传输量,从而可以有效提升系统性能,降低系统能耗。图8是本发明实施例提供的一种数据相似度确定装置的结构示意图,该装置可以配置于处理设备中,参考图8,该装置可以包括:获取模块201,可以用于实现上述图2所示实施例中步骤101所示的方法。划分模块202,可以用于实现上述图2所示实施例中步骤102所示的方法。统计模块203,可以用于分别对每个集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计,得到每个键值对所对应的统计频次,该统计频次的高低与键值对所指示的元组对的相似程度的高低正相关。可选的,该统计模块203可以用于:分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计,得到每个键值对在每个该集群中对应的统计频次;将每个键值对在各个集群中对应的统计频次累加,得到每个该键值对所对应的统计频次。该统计模块203的功能可以参考上述图2所示实施例中步骤104和步骤106中的相关描述,此处不再赘述。可选的,参考图9,该装置还可以包括:检测模块204,用于在分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计之前,依次检测每个该哈希桶中是否包含目标键值对,该目标键值对指示的元组对属于待查询数据集。过滤模块205,用于将每个该集群中不包含目标键值对的哈希桶滤除。综上所述,本发明实施例提供了一种数据相似度确定装置,该装置在获取到多个哈希表后,可以先将该多个哈希表所包括的多个哈希桶按照相似性划分为至少一个集群,使得每个集群包括的多个哈希桶的相似度大于相似度阈值,之后再分别对每个集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计。由于每个集群中的哈希桶较为相似,因此以集群为单位进行统计时,可以有效提高键值对的统计频次的统计效率。关于上述实施例中的装置,其中各个模块执行操作的实现方式已经在有关该方法的实施例中进行了详细描述,故此处不再阐述说明。参考图1,本发明实施例还提供了一种处理设备,该处理设备可以包括:存储器01、硬件处理器02和中央处理器03。其中,该中央处理器03,可以用于实现上述图2所示实施例中步骤101和步骤102所示的方法。该存储器01和硬件处理器02,可以用于分别对每个集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计,得到每个键值对所对应的统计频次,该统计频次的高低与键值对所指示的元组对的相似程度的高低正相关。可选的,该存储器01和硬件处理器02,可以用于:分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计,得到每个键值对在每个该集群中对应的统计频次;将每个键值对在各个集群中对应的统计频次累加,得到每个该键值对所对应的统计频次。可选的,该多个集群存储在该存储器中;相应的,该硬件处理器02,可以用于实现上述图2所示实施例中步骤104和步骤105所示的方法。该存储器01,可以用于实现上述图2所示实施例中步骤106所示的方法。可选的,该硬件处理器每次写入该存储器的统计频次记录在一个表分片中;该存储器01,可以用于实现上述图7所示实施例中步骤1061和步骤1062所示的方法。进一步的,该中央处理器03,可以还用于:在分别对每个该集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计之前,依次检测每个该哈希桶中是否包含目标键值对,该目标键值对指示的元组对属于待查询数据集;将每个该集群中不包含目标键值对的哈希桶滤除。综上所述,本发明实施例提供了一种处理设备,该处理设备在获取到多个哈希表后,可以先将该多个哈希表所包括的多个哈希桶按照相似性划分为至少一个集群,使得每个集群包括的多个哈希桶的相似度大于相似度阈值,之后再分别对每个集群包括的多个哈希桶中,属于不同数据集的键值对出现的次数进行统计。由于每个集群中的哈希桶较为相似,因此以集群为单位进行统计时,可以有效提高键值对的统计频次的统计效率。并且,该处理设备可以通过硬件处理器对存储器中存储的哈希表进行频次统计,由于该硬件处理器的处理速度较快,与存储器之间的数据传输带宽也较高,因此可以有效提高频次统计时的运算速度,改善lsh算法的性能;此外,由于可以减少存储器与cpu之间的数据传输量,从而可以有效提升处理设备的性能,降低设备能耗。本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该计算机可读存储介质在计算机上运行时,使得计算机执行如上述方法实施例所提供的数据相似度确定方法。本发明实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如上述方法实施例所提供的数据相似度确定方法。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1