相似度处理方法、对象筛选方法和装置与流程

文档序号:11177193阅读:243来源:国知局
相似度处理方法、对象筛选方法和装置与流程

本申请涉及相似度计算领域,具体而言,涉及一种相似度处理方法、对象筛选方法和装置。



背景技术:

现有技术中,计算余弦相似度的过程本身不难,但是在大数据应用的背景下,协同过滤面临的主要瓶颈是计算性能的问题。应用协同过滤需要两两个体之间计算一次相似度,假设有n个对象,那么计算复杂度即为n2

发明人发现,在实际的应用中,计算规模是比较大的。以淘宝推荐场景为例,如果使用基于商品的协同过滤算法,淘宝8亿在线商品,那么计算复杂度则为8亿的平方,这个计算规模是无法承受的。这种大规模的计算会导致一些问题的存在,例如,需要进行计算复杂度为8亿的平方的计算,那么就需要大量的服务器,如果目前布局的服务器不足够多,将导致服务器一致处于满负荷运算中,对于其他的的请求将无法响应,会导致不良的后果出现。

另外,发明人还发现,在其他的场景中,也可能存在对计算的一些要求,例如,计算时间的要求等,如果计算规模较大则无法达到时间要求。

针对相关技术中相似度计算规模较大所导致的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请实施例提供了一种相似度处理方法、对象筛选方法和装置,以至少解决相似度计算规模较大所导致的问题。

根据本申请实施例的一个方面,提供了一种相似度处理方法,该方法包括:获取计算条件,其中,在所述计算条件被满足的情况下,能够计算两两相似度的对象个数的最大值为k;根据所述计算条件从n个对象中筛选出i个对象,其中,i小于等于n,i小于等于k;对所述i个对象两两计算相似度。

根据本申请实施例的另一方面,还提供了一种相似度处理装置,该装置包括:第 一获取模块,用于获取计算条件,其中,在所述计算条件被满足的情况下,能够计算两两相似度的对象个数的最大值为k;第一筛选模块,用于根据所述计算条件从n个对象中筛选出i个对象,其中,i小于等于n,i小于等于k;第二计算模块,用于对所述i个对象两两计算相似度。

根据本申请实施例的一个方面,还提供了一种相似度处理方法,该方法包括:一种对象筛选方法,其特征在于,包括:获取n个对象中每个对象分别对应的一个或多个属性的值;根据所述每个对象的一个或多个属性的值从所述n个对象中筛选出i个相似的对象。

根据本申请实施例的一个方面,还提供了一种相似度处理方法,该方法包括:根据n个对象中每个对象分别对应的一个或多个属性的值,从所述n个对象中筛选出i个对象;对所述i个对象两两计算相似度。

根据本申请实施例的一个方面,还提供了一种对象筛选装置,该装置包括:第二获取模块,用于获取n个对象中每个对象分别对应的一个或多个属性的值;第二筛选模块,用于根据所述每个对象的一个或多个属性的值从所述n个对象中筛选出i个相似的对象。

根据本申请实施例的一个方面,还提供了一种相似度处理装置,该装置包括:第三筛选模块,用于根据n个对象中每个对象分别对应的一个或多个属性的值,从所述n个对象中筛选出i个对象;第二计算模块,用于对所述i个对象两两计算相似度。

在本申请实施例中,采用根据计算条件来尽量缩减计算两两相似度的对象的根数,从而达到了根据计算条件合理筛选计算对象的目的,解决了相关技术中相似度计算规模较大所导致的问题。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的一种相似度处理方法的计算机设备的硬件结构框图;

图2是根据本申请第一实施例的相似度处理方法的流程图;

图3是根据本申请实施例的多个服务器负载均衡的示意图;

图4是根据本申请第二实施例的相似度处理方法的流程图;

图5是根据本申请第三实施例的相似度处理方法的流程图;

图6是根据本申请实施例的相似度处理过程的示意图;

图7是根据本申请实施例的对象筛选方法的流程图;

图8是根据本申请第四实施例的相似度处理方法的流程图

图9是根据本申请第一实施例的相似度处理装置的示意图;

图10是根据本申请第二实施例的相似度处理装置的示意图;

图11是根据本申请第三实施例的相似度处理装置的示意图;

图12是根据本申请第四实施例的相似度处理装置的示意图;

图13是根据本申请实施例的对象筛选装置的示意图;

图14是根据本申请第五实施例的相似度处理装置的示意图;以及

图15是根据本申请实施例的一种计算机设备的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块或单元。

实施例1

根据本申请实施例,还提供了一种相似度处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行, 并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

为了便于描述,在此对本申请实施例涉及的几个术语进行说明:

协同过滤:寻找与个体的相似群体,因此计算两个个体之间的相似度,是协同过滤核心任务。

预聚类:根据业务场景,进一步对要研究的对象进行聚类,每个个体只与和它在同一个聚类簇中的其他个体进行相似度计算。

余弦相似度算法:用于计算两个个体之间的相似度。在以下实施例中并没有对相似度计算方法进行改进,而是利用现有的相似度计算的方法,以下公式中的字母所代表的含义对于本领域技术人员来说是可以理解的,因此,在本实施例中就不再赘述。现有的以及将来的所有的相似度算法都可以应用以下本实施例中的计算方案。

常用的相似度计算方法的公式有以下几种:

欧几里德距离:

皮尔逊相关系数:

余弦相似度算法:

tanimoto系数:

本申请实施例所提供的方法实施例可以在服务器上进行运算,为了提供更好的使用体验,还可以提供运算结果查询服务,例如,可以通过网页、或者客户端来查看服 务器上的运算结果。服务器可以理解为一种计算机。当然,随着技术的发展,云计算得到了越来越广的应用,本申请实施例中所提供的方法也可以在云计算中推广使用。终端的计算能力也会随着技术的发展而增强,当终端可以获取到相应的数据而进行计算时,例如,终端可以包括但是不限于:手机、平板电脑以及其他的便携式设备。但是就目前而言,在服务器部署本申请以下实施例是一种较优的选择。

在目前的技术条件下,服务器、终端、云计算所依赖的硬件架构都是类似的,均可以看做是一种计算机设备。本申请实施例可以在这种计算机设备中执行。随着技术的发展,计算机设备硬件架构发生了变化,或者出现了新架构的运算设备,本申请实施例也可以实施。下面以图1中的计算设备的架构为例进行说明。

图1是根据本申请实施例的一种相似度处理方法的计算机设备的硬件结构框图。如图1所示,计算机设备1可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机设备1还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的相似度处理方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的相似度处理方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备1。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机设备1的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。在另外一个实施例中,传输装置106也可以是一个有线的网卡模块,通过有线的方式与互联网进行通讯。

在上述运行环境下,本实施例提供了如图2所示的相似度处理方法。图2是根据本申请第一实施例的相似度处理方法的流程图,如图2所示,该流程可以包括如下步 骤:

步骤s202,获取计算条件,其中,在计算条件被满足的情况下,能够计算两两相似度的对象个数的最大值为k。

作为一种可选的实施方式,计算条件可以包括以下至少之一:用于计算相似度的资源、计算相似度的时间、计算相似度的规模。例如,计算条件可以是计算相似度的时间在3秒以内,或者计算相似度的运算次数在100万次以内,计算条件可以是用于计算相似度的资源、计算相似度的时间、计算相似度的规模中的一个或者多个。计算条件也可以是其他类型能够对相似度的计算构成限制的条件。

本实施例以计算能力为例对计算条件进行解释。一般情况下计算能力是由计算所能够使用的资源决定的,此时,计算能力表示k取最大值时,能够计算的k个对象的两两相似度。

该计算能力可以是一台服务器的计算能力,作为一种可选的实施方式,计算能力表示k取最大值时,能够计算的k个对象的两两相似度,计算能力可以是服务器的计算能力,例如,共有k个个体,在相似度计算时,需要对k个对象中的任意两个个体之间计算一次相似度,计算的复杂度为k2,如果服务器的计算能力最大能够达到计算k2的相似度,则计算能力为k。

例如,一台服务器计算能力为能够进行复杂度为10000的计算,那么,k的取值最大就为100。或者是,计算能力还可以直接用能够计算的最大的两两相似度的个数来进行表示,例如,该一台服务器的计算能力就是最大计算100个对象的两两相似度。该计算能力也可以多台服务器所提供的计算能力,此时,可以根据该多台服务器的计算能力来计算k值,然后根据多个服务器的每个服务器的计算能力来进行负载均衡。

图3是根据本申请实施例的多个服务器负载均衡的示意图,如图3所示,服务器群或者云计算可以由多台服务器共同完成,其中,服务器1的计算能力为2000,服务器2的计算能力为3000,服务器3的计算能力为1000,服务器4的计算能力为4000,因此将四台服务器作为服务器群或者云计算来看,该整体服务器的计算能力为1w。通过多台服务器提供的计算能力能够更好地完成k个对象的两两相似度的计算。当然,对于云服务器来讲,开发者可能不需要过多关心云服务器内部是如何进行负载均衡的,只需要按照云服务器提供的最大的计算能力来计算即可。如果服务器的计算能力发生变化,可以根据变化后的服务器的计算能力来重新调整k值。

在另一个可选的实施方式中,k的值可以是一台服务器或者多台服务器或者云服务器完全进行相似度计算时的值。当然,有时候某些或者某个服务器还需要提供其他 的服务,例如,服务器20%的资源需要分配给其他的服务来进行计算,那么此时的计算能力就需要按照该服务器80%的资源来进行计算,对于多台服务器或者云服务器也是相同的。

步骤s204,根据计算条件从n个对象中筛选出i个对象,其中,i小于等于n,i小于等于k。

根据计算条件从n个对象中筛选出i个对象可以是根据计算能力从n个对象中筛选出i个对象,其中,i小于等于n,i小于等于k。

当i等于k时就表明希望利用所有的可利用的计算能力来进行两两相似度的计算。在实际实施时,也可以选择小于k的i值,这样,一方面,可以更快的得到计算结果;另一方面,也可以降低计算所带来的资源消耗,节省的资源可以用来进行其他服务。作为可选的实施方式,如果选择了小于k的i值,可以计算复杂度降低所带来的资源节约,将该资源提供给其他服务。

步骤s206,对i个对象两两计算相似度。

通过上述步骤,根据计算能力从大量的对象中筛选适当数量的对象,然后进行两两相似度计算,解决了现有技术中相似度计算规模较大所导致的问题,从而降低了相似度计算的复杂度。

在上述步骤s204中,根据计算能力从n个对象中筛选出i个对象。筛选的方式有很多种,例如,如果单纯为了降低计算规模,那么可以随机从n个对象中筛选出i个对象来进行计算。这样的计算结果在某种程度上也是有一定意义的。在一个例子中,如果仅仅希望了解某网络调查的100w个答案中大致相似的比例有多大,此时没有必要对100w个答案都进行两两相似度的计算,而是从中随机选择10w个来进行计算,此时的结果也可以表示希望得到的结果。

在另外可选的实施方式中,也可以通过过滤的方式,来过滤掉相似度不是很高的对象,然后再对剩余相似度较高的对象进行计算。以下通过几个例子来进行说明:

再例如,根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象。n个对象中的每个对象都具有一个或多个属性,根据每个对象的一个或多个属性的值进行筛选。

n个对象都具有第一属性,根据n个对象的第一属性从n个对象中筛选出i个对象,可以在一定的区间范围筛选,也可以根据实际需要分段或者单点筛选。例如,n个对象都具有第一属性和第二属性,根据n个对象的第一属性和第二属性从n个对象 中筛选出i个对象,首先从n个对象中筛选出满足第一属性筛选条件的a个对象,然后从a个对象中筛选满足第二属性筛选条件的i个对象,其中,i≤a。同样,如果需要根据更多属性从n个对象中筛选出i个对象,则可以依次根据每个属性从n个对象中筛选。

如果通过身高、体重和年龄三个属性从2000个对象中挑选200个对象,首先可以根据身高挑选出1.2米以上的对象,挑选出1000个,然后根据体重,挑选出30千克以上的对象,挑选出600,然后根据年龄挑选出年龄在8岁和12岁的对象,挑选出200个对象,计算挑选出的这200个对象的相似度。根据年龄挑选对象时也可以挑选8岁至12岁的对象,根据具体目的可以改变筛选属性和属性的值。通过筛选出适当对象计算相似度,能够降低计算的复杂度。

作为一种可选的实施方式,根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象包括:将一个或多个属性的值落入到预定范围的对象从n个对象中筛选出来作为i个对象,其中,预定范围是根据i的值确定的。

以计算淘宝店铺间的相似度为例,例如,一共有10万个店铺,但是计算复杂度太高,现有的计算能力只能计算5万个店铺的相似度,因此要初步筛选出属性值相近,相似度较高的5万个店铺进行相似度计算,这10万个店铺都有具有多个属性,例如,每日的销售货品的数量和每日销售额两个属性。如果只根据销售货品的数量就可以从10万个店铺中筛选出5万个店铺,就不使用销售额。如果只根据货品的数量不能筛选出5万个店铺,例如,根据货品数量筛选出的店铺具有7万个,则可以再根据销售额进行进一步筛选,如果根据销售额仍然筛选不出,可以再根据其他的属性进行筛选。逐渐增加筛选属性的数量,以获得满足计算能力的对象数量。其中,预定范围是根据i的值确定的,根据i的数量的不同,可以调整预定范围,例如,以货品数量筛选店铺时,如果限定商品数量为100-200件,筛选出6万个店铺,则将商品数量调整为100-150件,以筛选出5万个店铺。

例如,通过身高、体重和年龄三个属性从2000个对象中挑选200个对象,首先可以根据身高挑选出1.2米以上的对象,挑选出1000个,然后根据体重,挑选出30千克以上的对象,挑选出600,然后根据年龄挑选出年龄在8岁到12岁之间的对象,挑选出300个。超过200个,此时,可以将年龄属性调整为9岁到11岁,然后挑选出200个对象,计算挑选出的这200个对象的相似度。

通过将一个或多个属性的值落入到预定范围的对象从n个对象中筛选出来作为i个对象,筛选出合适数量的对象,然后计算相似度,能够在保证数据结果准确的同时满足计算能力的要求,采用根据计算能力来尽量缩减计算两两相似度的对象的根数, 从而达到了根据计算能力合理筛选计算对象的目的,解决了相关技术中相似度计算规模较大所导致的问题。

根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子从n个对象中筛选出i个对象。图4是根据本申请第二实施例的相似度处理方法的流程图。如图4所示,该流程可以包括如下步骤:

步骤s301,根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子。

步骤s302,根据聚类因子从n个对象中筛选出i个对象。

通过以上步骤,通过得到每个对象对应的聚类因子,然后根据聚类因子从n个对象中筛选出i个对象,能够根据用户需要对聚类因子进行调整,使筛选出的对象的相似度更高,进而降低了相似度计算规模。

在一个可选的实施方式中,根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子可以是:根据多个相同属性的值加权和计算得到每个对象分别对应的聚类因子,根据得到的聚类因子从多个对象中筛选出适当数量的对象以计算两两之间的相似度,也即,根据聚类因子从n个对象中筛选出i个对象。其中,每个对象可能具有多个相同属性,也可能不具有某个属性,如果不具有某个属性,可以在计算聚类因子时将该属性值记为零。

例如,一共10万个店铺,但是计算复杂度太高,现有的计算能力只能计算5万个店铺的相似度,因此要筛选出属性值相近,相似度较高的5万个店铺进行相似度计算,这10万个店铺都具有多个属性,例如,每日的销售货品的数量和每日销售额两个属性。为了获得共同特征更多的店铺来计算相似度,可以根据销售货品的数量和销售额进行加权和计算作为聚类因子,然后再根据聚类因子从n个对象中筛选出i个对象。加权和计算可以是根据具体对象确定加权参数,也可以由用户预先输入加权参数或者计算模型计算店铺的聚类因子,然后根据计算出的聚类因子从n个对象中筛选出i个对象。

再例如,通过身高、体重和年龄三个属性从2000个对象中挑选200个对象,可以设置身高、体重和年龄三个属性的重要性系数,也即,根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子,例如,通过身高×0.5+体重×0.2+年龄×0.3得到聚类因子,根据聚类因子对2000个对象进行排列,从中选取200个对象计算相似度,选取的200个对象可以是连续的,也可以是分段不连续的。

图5是根据本申请第三实施例的相似度处理方法的流程图。如图5所示,该流程可以包括如下步骤:

步骤s401,按照每个对象分别对应的聚类因子的大小对每个对象进行排列。

按照每个对象分别对应的聚类因子的大小对每个对象进行排列可以是:在计算出每个对象对应的聚类因子时,按照聚类因子的大小对所有对象从小到大排列,或者从大到小排列。

步骤s402,从排列好的n个对象中选择连续的i个对象。

作为一种可选的实施方式,根据聚类因子从n个对象中筛选出i个对象包括:按照每个对象分别对应的聚类因子的大小对每个对象进行排列;从排列好的n个对象中选择连续的i个对象。

例如,根据销售货品的数量和销售额进行加权和计算作为聚类因子,然后按照每个店铺对应的聚类因子的大小对每个店铺进行排列,例如,按照聚类因子从小到大对店铺进行排列,然后从排列好的n个店铺中选择连续的i个店铺,对连续的i个店铺计算两两相似度。从连续排列的店铺中选择出满足计算能力的i个连续店铺,由于选出的i个连续店铺的相似度最高,因此本申请实施例的技术方案能够降低相似度计算的复杂度。

作为一种可选的实施方式,根据n个对象中每个对象分别对应的一个或多个属性值,从n个对象中筛选出i个对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子和一个或多个属性从n个对象中筛选出i个对象。

例如,一共有10万个店铺,但是计算复杂度太高,现有的计算能力只能计算5万个店铺的相似度,因此要筛选出属性值相近,相似度较高的5万个店铺进行相似度计算,这10万个店铺都具有多个属性,例如,每日的销售货品的数量和每日销售额两个属性。可以根据销售货品的数量和销售额进行加权和计算作为聚类因子,然后再根据聚类因子和销售额从n个对象中筛选出i个对象。例如,加权和计算方法为:销售货品数量×0.9+销售额×0.1。在筛选时,根据i的数量可以调整属性个数和聚类因子计算方法,以筛选出相似度更高的对象。

下面结合一个可选的实施例简述本申请的技术方案:

图6是根据本申请实施例的相似度处理过程的示意图。如图6所示,假设个体总数为n个,记为k1-kn,计算相似度时,需要k1分别与k1-kn计算两两相似度,协同过滤算法需要计算两个个体之间的相似度,虽在编程模型(mapreduce)的分布式框架下执行,但是同一个体ki会被分配到同一个归约(reduce)中,即reduce最大计算复杂度达n2。本申请实施例的技术方案可以分为数值型聚类和枚举型聚类两种,其 中,数据值聚类先对全个体按不同的聚类因子(在这里,聚类因子可以理解为不同属性的加权和,例如两个属性的加权和,极端情况下,聚类因子可以是一个属性,此时没有加权和,聚类因子就可以是一个属性)排序,例如,业务上需找出2m个聚类因子q的相似个体,所有个体按因子q排序,在按照大小顺序排列的对象中选取个体ki线的上邻近m个个体和下邻近m个个体。又例如,仍然需要2m个个体,那么,枚举型聚类将具体相同t个枚举值(也可以理解为属性值)的个体聚为同一类(枚举值聚合),通常t与m有相互制约关系,t越大表明需要具有相同属性值的个体的个数可能越少,因此,聚为同一类的个体数m越小,当业务上有严格限制m的值时可适当调整t的值。最终聚完类后的计算复杂度降为(2m)2,其中m<<n。

通过上述技术方案,预聚类处理技术能够在降低计算个体数以提升计算效率,同时,其保留与邻近特征的个体对比剔除差异较大个体的处理方式不会影响数据结果的准确性和合理性,能够完全与全量个体计算得出的高相似度(top相似)个体吻合。

本申请实施例一种可选的应用方式:以计算店铺基于类目构成的相似为例,首先构建一张表t_tezheng,它有三个字段:seller_id、cate_id、wgt,分别表示店铺的id,类目的id以及店铺在该类目下的特征分量(已经被标准化处理),

通过余弦相似度可以得到的就是两个店铺间的相似度。假设某个类别标识cate_id下的店铺数有100w,其计算复杂度至少为10000w2,然而这10000w2个相似个体真正与个体本身相似的也就相似度较大的1000个,通常超过1000之外的相似个体都会被过滤。根据具体的店铺属性,能够找出很多聚类因子。继续以上面的店铺类目构成相似度计算为例,例如,业务上,要求两个店铺主营一级行业要一致,经营实力要接近,才会有可比性,因此可以以主营类目和月成交额两个维度作为聚类因子对店铺进行聚类。在t_tezheng这张表上扩展两个字段,根据扩展后的表的字段来进行计算,分到每个reduce上的数据量会少很多,而最终目标挖掘个体的相似个体往往更需要这些特征相似的约束。在实际应用中,可以根据不同的应用场景指定不同的聚类因子来设定预聚类的处理方案,保证数据结果准确的同时满足计算性能的要求。

本申请实施例可以通过结构化查询语言(structuredquerylanguage,简称为sql)部署在开放数据处理服务(opendateprocessingservice,简称为odps)平台来实现。

本申请实施例在深入了解mapreduce处理join过程的原理后,适时结合业务场景,进一步对要研究的对象进行聚类,每个个体只与和它在同一个聚类簇中的其他个体进行相似度计算,最终有效减少分配到同一个reduce的连接键(key)。假设计算能力能接受的最大计算复杂度为k2,那么只要保证每个聚类簇下的个体数不超过k即可。通过这种筛选方式,可以根据计算能力来尽量缩减计算两两相似度的对象的根数,从 而达到了根据计算能力合理筛选计算对象的目的,解决了相关技术中相似度计算规模较大所导致的问题。

在上述实施例中,通过对象的筛选使相似度计算的复杂度得到降低。这种筛选方法还可以单独使用,任何需要进行筛选的时候都可以使用该方法,图7是根据本申请实施例的对象筛选方法的流程图,如图7所示,该流程可以包括如下步骤:

步骤s701,获取n个对象中每个对象分别对应的一个或多个属性的值。

例如,一共有n个对象,n个对象都具有一个或多个属性的值,获取n个对象中每个对象分别对应的一个或多个属性的值可以是获取n个对象中每个对象的一个属性的值,也可以是获取n个对象中每个对象分别对应的多个属性的值,获取的属性的值的个数可以根据对象筛选的条件来确定。

步骤s702,根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象。

获取n个对象中每个对象分别对应的一个或多个属性的值之后,根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象。

根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象可以是:将一个或多个属性的值落入到预定范围的对象从n个对象中筛选出来作为i个对象,其中,预定范围是根据i的值确定的。

例如,如果通过身高、体重和年龄三个属性从2000个对象中挑选200个对象,首先可以根据身高挑选出1.2米以上的对象,挑选出1000个,然后根据体重,挑选出30千克以上的对象,挑选出600,然后根据年龄挑选出年龄在8岁和12岁的对象,挑选出200个对象,计算挑选出的这200个对象的相似度。根据年龄挑选对象时也可以挑选8岁至12岁的对象,根据具体目的可以改变筛选属性和属性的值以筛选出适当数量的对象。

根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象可以是:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子从n个对象中筛选出i个对象。

根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象可以是:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子和一个或多个属性从n个对象中筛选出i个对象。

本实施例中的对象筛选方法与上述相似度处理方法的实施例中的对象筛选方法一 致,在此不再赘述。

在对象筛选方法的实施例中,对象筛选的结果可以不用来计算相似度,可以仅仅是作为数据存储或者预处理,在后续的过程中,可以在需要的时候进行相似度的计算或者样本的分析。该对象筛选方法可以应用于多种场景中,例如,可以应用在抽样调查分析中。

本实施例还提供了一种相似度处理方法。在该方法中,相似度的计算可以不用获取计算条件,例如,计算条件足以满足全体对象的相似度计算,但由于实际计算时无需计算全部的对象间的相似度,此时,相似度计算无需获取计算条件,而指示根据对象的属性值进行筛选,然后计算相似度。图8是根据本申请第四实施例的相似度处理方法的流程图,如图8所示,该流程可以包括如下步骤:

步骤s801:根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象。

根据n个对象中每个对象分别对应的一个或多个属性的值从n个对象中筛选出i个对象可以是筛选出i个相似的对象,也可以是筛选出i个相似度低的对象,或者也可以是任意筛选出i个对象,根据n个对象中每个对象分别对应的一个或多个属性的值来筛选对象,可以是筛选对象的一个或多个属性的值在某个区间内的对象。

步骤s802:对i个对象两两计算相似度。

在筛选出i个对象后对i个对象两两计算相似度。

本实施例中的相似度处理方法中,对象筛选的过程与上述相似度处理方法的实施例中的对象筛选过程一致,在此不再赘述。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块以及单元并不一定是本申请所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的相似度处理方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使 得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

实施例2

根据本申请实施例,还提供了一种用于实施上述相似度处理方法的相似度处理装置,图9是根据本申请第一实施例的相似度处理装置的示意图,如图9所示,该装置包括:第一获取模块10,第一筛选模块20和第一计算模块30。

第一获取模块10,用于获取计算条件,其中,在所述计算条件被满足的情况下,能够计算两两相似度的对象个数的最大值为k。

第一筛选模块20,用于根据计算条件从n个对象中筛选出i个对象,其中,i小于等于n,i小于等于k。

第一计算模块30,用于对i个对象两两计算相似度。

该实施例的相似度处理装置中,第一获取模块10可以用于执行本申请实施例中的步骤s202,第一筛选模块20可以用于执行本申请实施例中的步骤s204,第一计算模块30可以用于执行本申请实施例中的步骤s206。

本申请实施例通过第一获取模块10获取计算条件,其中,在所述计算条件被满足的情况下,能够计算两两相似度的对象个数的最大值为k,第一筛选模块20根据计算条件从n个对象中筛选出i个对象,其中,i小于等于n,i小于等于k,第一计算模块30对i个对象两两计算相似度,从而实现了降低相似度计算复杂度的技术效果,进而解决了相似度计算规模较大所导致的技术问题。

在一种可选的实施方式中,计算条件包括以下至少之一:用于计算相似度的资源、计算相似度的时间、计算相似度的规模。

在一种可选的实施方式中,第一筛选模块20用于根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象。其中,n个对象中的每个对象都具有一个或多个属性,第一筛选模块20根据每个对象的一个或多个属性的值进行筛选。

上述相似度处理方法的实施例在相似度处理装置中也同样适用,例如,n个对象都具有第一属性,第一筛选模块20根据n个对象的第一属性从n个对象中筛选出i个对象,可以在一定的区间范围筛选,也可以根据实际需要分段或者单点筛选。再例如,n个对象都具有第一属性和第二属性,根据n个对象的第一属性和第二属性从n个对象中筛选出i个对象,第一筛选模块20首先从n个对象中筛选出满足第一属性筛 选条件的a个对象,然后从a个对象中筛选满足第二属性筛选条件的i个对象,其中,i≤a。同样,如果需要根据更多属性从n个对象中筛选出i个对象,则可以依次根据每个属性从n个对象中筛选。也可以一次限定多个属性,从n个对象中筛选出i个对象。

在一种可选的实施方式中,第一筛选模块20用于将一个或多个属性的值落入到预定范围的对象从n个对象中筛选出来作为i个对象,其中,预定范围是根据i的值确定的。

在一种可选的实施方式中,图10是根据本申请第二实施例的相似度处理装置的示意图。如图10所示,该相似度处理装置包括:第一获取模块10,第一筛选模块20和第一计算模块30。其中,第一筛选模块20包括:第一计算单元201和第一筛选单元202。

该实施例中的第一获取模块10,第一筛选模块20和第一计算模块30的作用与本申请第一实施例的相似度处理装置的作用相同。在此不再赘述。

第一计算单元201,用于根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子。

第一筛选单元202,用于根据聚类因子从n个对象中筛选出i个对象。

在一种可选的实施方式中,图11是根据本申请第三实施例的相似度处理装置的示意图。如图11所示,该相似度处理装置包括:第一获取模块10,第一筛选模块20和第一计算模块30。其中,第一筛选模块20包括:第一计算单元201和第一筛选单元202,第一筛选单元202包括排列单元2021和选择单元2022。

排列单元2021,用于按照每个对象分别对应的聚类因子的大小对每个对象进行排列。

选择单元2022,用于从排列好的n个对象中选择连续的i个对象。

在一种可选的实施方式中,图12是根据本申请第四实施例的相似度处理装置的示意图。如图12所示,该相似度处理装置包括:第一获取模块10,第一筛选模块20和第一计算模块30。其中,第一筛选模块20包括:第二计算单元203和第二筛选单元204。

第二计算单元203,用于根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;

第二筛选单元204,用于根据聚类因子和一个或多个属性从n个对象中筛选出i个对象。

该实施例中的第二计算单元203可以与上述实施例中的第一计算单元201相同,也可以不相同,第二筛选单元204可以与上述实施例中的第一筛选单元202相同,也可以不相同。

根据本申请实施例,还提供了一种用于实施上述对象筛选方法的对象筛选装置,图13是根据本申请实施例的对象筛选装置的示意图,如图13所示,该装置包括:第二获取模块40和第二筛选模块50。

第二获取模块40,用于获取n个对象中每个对象分别对应的一个或多个属性的值。

第二筛选模块50,用于根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象。

该实施例的对象筛选装置中,第二获取模块40可以用于执行本申请实施例中的步骤s701,第二筛选模块50可以用于执行本申请实施例中的步骤s702。

根据本申请实施例,还提供了一种用于实施上述相似度处理方法的相似度处理装置,图14是根据本申请第五实施例的相似度处理装置的示意图,如图14所示,该装置包括:第三筛选模块60和第二计算模块70。

第三筛选模块60,用于根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象。第三筛选模块60可以与上述实施例中的第一筛选模块20的作用相同。

第二计算模块70,用于对i个对象两两计算相似度。

该实施例的相似度处理装置中,第三筛选模块60可以用于执行本申请实施例中的步骤s801,第二计算模块70可以用于执行本申请实施例中的步骤s802。

实施例3

本申请的实施例还提供一种计算机设备,该计算机设备可以是计算机设备群中的任意一个计算机设备。可选地,在本实施例中,上述计算机设备可以是构成服务器的设备,也可以是构成服务器集群的设备,或者是构成云计算的设备。或者说,云服务器也可以称为是计算机设备,只不过对于用户来将不需要关心这些云计算服务器中的设备的具体硬件的构成。当然,这终端计算能力的发展,有可能终端也会加入到云计算当中来,此时,上述计算机设备也可以是移动终端群中的任意一个移动终端。

可选地,在本实施例中,上述计算机设备可以位于计算机网络的多个网络设备中的至少一个网络设备。

可选地,图15是根据本申请实施例的一种计算机设备的结构框图。如图15所示,该计算机设备a可以包括:一个或多个(图中仅示出一个)处理器101、存储器103、以及传输装置105。

存储器103可用于存储软件程序以及模块,如本申请实施例中的应用事件交互方法和装置对应的程序指令/模块,处理器101通过运行存储在存储器103内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用事件交互方法。存储器103可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器103可进一步包括相对于处理器101远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备a。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置105用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置105包括一个网络适配器nic,其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置105为射频rf模块,其用于通过无线方式与互联网进行通讯。在本实施例中,

上述计算机设备可以执行应用程序的相似度处理方法中以下步骤的程序代码:

获取计算条件,其中,在计算条件被满足的情况下,能够计算两两相似度的对象个数的最大值为k;根据计算条件从n个对象中筛选出i个对象,其中,i小于等于n,i小于等于k;对i个对象两两计算相似度。

可选的,上述计算机设备还可以执行如下步骤的程序代码:计算条件包括以下至少之一:用于计算相似度的资源、计算相似度的时间、计算相似度的规模。

可选的,上述计算机设备还可以执行如下步骤的程序代码:从n个对象中筛选出i个对象包括:根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象。

可选的,上述计算机设备还可以执行如下步骤的程序代码:根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象包括:将一个或多个属性的值落入到预定范围的对象从n个对象中筛选出来作为i个对象,其中,预定范围是根据i的值确定的。

可选的,上述计算机设备还可以执行如下步骤的程序代码:根据n个对象中每个对象分别对应的一个或多个属性值,从n个对象中筛选出i个对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子从n个对象中筛选出i个对象。

可选的,上述计算机设备还可以执行如下步骤的程序代码:根据聚类因子从n个对象中筛选出i个对象包括:按照每个对象分别对应的聚类因子的大小对每个对象进行排列;从排列好的n个对象中选择连续的i个对象。

可选的,上述计算机设备还可以执行如下步骤的程序代码:根据n个对象中每个对象分别对应的一个或多个属性值,从n个对象中筛选出i个对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子和一个或多个属性从n个对象中筛选出i个对象。

上述计算机设备可以执行应用程序的相似度处理方法中以下步骤的程序代码:

获取n个对象中每个对象分别对应的一个或多个属性的值;根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象。

可选的,上述计算机设备还可以执行如下步骤的程序代码:根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象包括:将一个或多个属性的值落入到预定范围的对象从n个对象中筛选出来作为i个对象,其中,预定范围是根据i的值确定的。

可选的,上述计算机设备还可以执行如下步骤的程序代码:根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子从n个对象中筛选出i个对象。

可选的,上述计算机设备还可以执行如下步骤的程序代码:根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子和一个或多个属性从n个对象中筛选出i个对象。

上述计算机设备可以执行应用程序的相似度处理方法中以下步骤的程序代码:

根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象;对i个对象两两计算相似度。

本领域普通技术人员可以理解,图15所示的结构仅为示意,计算机设备a也可以 是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图15其并不对上述电子装置的结构造成限定。例如,计算机设备a还可包括比图15中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图15所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

实施例4

本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的相似度处理方法所执行的程序代码。

可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机设备群中的任意一个计算机设备中。上述计算机设备可以是构成服务器的设备,也可以是构成服务器集群的设备,或者是构成云计算的设备。或者说,云服务器也可以认为是一群计算机设备,只不过对于用户来将不需要关心这些云计算服务器中的设备的具体硬件的构成。当然,随着终端计算能力的发展,有可能终端也会加入到云计算当中来,此时,上述存储介质也可以位于移动终端群中的任意一个移动终端中。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取计算条件,其中,在计算条件被满足的情况下,能够计算两两相似度的对象个数的最大值为k;根据计算条件从n个对象中筛选出i个对象,其中,i小于等于n,i小于等于k;对i个对象两两计算相似度。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算条件包括以下至少之一:用于计算相似度的资源、计算相似度的时间、计算相似度的规模

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象包括:将一个或多个属性的值落入到预定范围的对象从n个对象中筛选出来作为i个对象,其中,预定范围是根据i的值确定的。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据n个对象中每个对象分别对应的一个或多个属性值,从n个对象中筛选出i个对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子从n个对象中筛选出i个对象

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据聚类因子从n个对象中筛选出i个对象包括:按照每个对象分别对应的聚类因子的大小对每个对象进行排列;从排列好的n个对象中选择连续的i个对象。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据n个对象中每个对象分别对应的一个或多个属性值,从n个对象中筛选出i个对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子和一个或多个属性从n个对象中筛选出i个对象。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取n个对象中每个对象分别对应的一个或多个属性的值;根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象包括:将一个或多个属性的值落入到预定范围的对象从n个对象中筛选出来作为i个对象,其中,预定范围是根据i的值确定的。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子从n个对象中筛选出i个对象。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据每个对象的一个或多个属性的值从n个对象中筛选出i个相似的对象包括:根据每个对象对应的一个或多个相同属性的值计算得到每个对象分别对应的聚类因子;根据聚类因子和一个或多个属性从n个对象中筛选出i个对象。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据n个对象中每个对象分别对应的一个或多个属性的值,从n个对象中筛选出i个对象;对i个对象两两计算相似度。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元或模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元或模块可以是或者也可以不是物理上分开的,作为单元或模块显示的部件可以是或者也可以不是物理单元或模块,即可以位于一个地方,或者也可以分布到多个网络单元或模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元或模块可以集成在一个处理单元或模块中,也可以是各个单元或模块单独物理存在,也可以两个或两个以上单元或模块集成在一个单元或模块中。上述集成的单元或模块既可以采用硬件的形式实现,也可以采用软件功能单元或模块的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

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