CN110874385A - 数据处理方法、装置和系统 - Google Patents
数据处理方法、装置和系统 Download PDFInfo
- Publication number
- CN110874385A CN110874385A CN201810911756.XA CN201810911756A CN110874385A CN 110874385 A CN110874385 A CN 110874385A CN 201810911756 A CN201810911756 A CN 201810911756A CN 110874385 A CN110874385 A CN 110874385A
- Authority
- CN
- China
- Prior art keywords
- vector
- query
- vectors
- clustering
- center point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title abstract description 37
- 239000013598 vector Substances 0.000 claims abstract description 1264
- 238000012545 processing Methods 0.000 claims abstract description 122
- 238000000034 method Methods 0.000 claims abstract description 92
- 238000005070 sampling Methods 0.000 claims abstract description 88
- 230000015654 memory Effects 0.000 claims description 28
- 238000012163 sequencing technique Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 42
- 238000004364 calculation method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012216 screening Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
Images
Abstract
本申请公开了一种数据处理方法、装置和系统。其中,该方法包括:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。本申请解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
Description
技术领域
本申请涉及数据处理领域,具体而言,涉及一种数据处理方法、装置和系统。
背景技术
由于数据爆炸式增长,为了对数据进行压缩存储,同时加速计算,可以对数据进行二值化处理,也即将数据转换为0或1。因此,对数据的检索实际属于对二值化处理后的数据的检索。在现有技术中,一般采用类似哈希Hash表的方式,对数据进行分桶存储。当用户输入查询向量时,进入到对应桶进行查询,最后进行汇总排序,从而得到最终的检索结果。
但是,采用类似Hash表的方式要求查询向量和查询结果的海明半径很短,导致无法适用于多种场景,尤其在图片搜索的领域更是如此。
针对现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据处理方法、装置和系统,以至少解决现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
根据本申请实施例的一个方面,提供了一种数据处理方法,包括:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
根据本申请实施例的另一方面,还提供了一种数据处理方法,包括:显示用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;显示查询结果,其中,查询结果是基于查询向量和与查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,第一向量集合是基于聚类中心点和查询向量之间的第一海明距离得到的,聚类中心点是对向量库中采样向量进行聚类得到的。
根据本申请实施例的另一方面,还提供了一种数据处理装置,包括:获取模块,用于获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;第一处理模块,用于基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;第二处理模块,用于基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
根据本申请实施例的另一方面,还提供了一种数据处理装置,包括:第一显示模块,用于显示用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;第二显示模块,用于显示查询结果,其中,查询结果是基于查询向量和与查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,第一向量集合是基于聚类中心点和查询向量之间的第一海明距离得到的,聚类中心点是对向量库中采样向量进行聚类得到的。
根据本申请实施例的另一方面,还提供了一种数据处理系统,包括:输入装置,用于输入查询向量,其中,查询向量为经过二值化所处理得到的向量;处理器,与输入装置连接,用于基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果,其中,聚类中心点是对向量库中采样向量进行聚类得到的。
根据本申请实施例的另一方面,还提供了一种数据处理系统,包括:输入装置,用于输入查询向量,其中,查询向量为经过二值化所处理得到的向量;显示器,与输入装置连接,用于显示查询结果,其中,查询结果是基于查询向量和与查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,第一向量集合是基于聚类中心点和查询向量之间的第一海明距离得到的,聚类中心点是对向量库中采样向量进行聚类得到的。
根据本申请实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行如下步骤:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
根据本申请实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行如下步骤:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
根据本申请实施例的另一方面,还提供了一种数据处理系统,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
在本申请实施例中,在向量查询过程中,首先获取用户输入的查询向量,并结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量之间的第二海明聚类,得到最终的查询结果,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请实施例的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种用于实现数据处理方法的计算机终端(或移动设备)的硬件结构框图;
图2是根据本申请实施例1的一种数据处理方法的流程图;
图3是根据本申请实施例的一种可选的数据处理方法的流程图;
图4是根据本申请实施例2的一种数据处理方法的流程图;
图5是根据本申请实施例3的一种数据处理装置的示意图;
图6是根据本申请实施例4的一种数据处理装置的示意图;
图7是根据本申请实施例5的一种数据处理系统的示意图;
图8是根据本申请实施例6的一种数据处理系统的示意图;以及
图9是根据本申请实施例的一种计算机终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将集合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
向量检索:输入一个查询向量,在固定的一个向量库中,查找与这个向量距离最近的若干个向量,得到检索结果。
二值特征:向量全是由0和1组成。
海明距离:可以是指两个码字的对应比特取值不同的比特数。具体地,n位的向量可以用n维空间的超立方体的一个顶点来表示,海明距离可以是指超立方体两个顶点之间的一条边,是这两顶点之间的最短距离。
实施例1
根据本申请实施例,提供了一种数据处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现数据处理方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的集合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的处理器,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据处理方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据处理方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的集合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
在上述运行环境下,本申请提供了如图2所示的数据处理方法。图2是根据本申请实施例1的一种数据处理方法的流程图。如图2所示,该方法包括如下步骤:
步骤S22,获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量。
具体地,上述的查询向量可以是用户输入的一个给定向量,由于数据被二值化后存储在数据库中,用户输入的查询向量也可以是二值化后的向量,也即,查询向量是由1或0构成的。
可选地,查询向量可以为图像的向量。
具体地,在本申请实施例中,以图像搜索场景为例进行说明,查询向量和向量库中的向量均为对图像的向量。
步骤S24,基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的。
具体地,为了方便用户进行向量查询,可以预先对向量库中存储的采样向量进行聚类,得到多个聚类中心点,每个聚类中心点也是一个二值化后的向量。并将所有向量划分至不同的聚类中心点,相当于将向量库中的所有向量划分为多个集合,每个集合中的向量相似度较高。由于向量均为二值化后的向量,为了简化计算过程,降低计算复杂度,提高处理效率,可以计算查询向量和每个聚类中心点之间的第一海明距离,并按照从小到大的顺序,筛选出满足粗粒度查询要求的至少一个第一向量集合。第一向量集合中的向量可以认为是与查询向量相似度较高的向量。
步骤S26,基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
具体地,为了筛选出满足细粒度查询要求的查询结果,也即筛选出用户需要的搜索向量,在通过粗粒度查询到至少一个第一向量集合之后,可以计算查询向量与至少一个第一向量集合中每个向量之间的第二海明距离,并按照从小到大的顺序筛序出用户实际查询需要的搜索向量,得到最终的查询结果,返回给用户进行查看。
需要说明的是,在默认情况下,返回给用户的查询结果中包含60个搜索向量,也即,用户也可以根据实际查询需求对查询数量进行设定。
例如,以存储有100w个向量的向量库为例进行说明,向量查询流程主要可以分成两个部分,第一部分为离线计算好引擎文件,为向量查询可以首先通过离线方式对向量库建立查询基础;第二部分为将引擎文件加载至设备内存,并实时响应用户的请求,得到最终的查询结果。整个向量查询方法的流程如图3所示:由于向量库中存储的向量较多,为了提高处理效率,可以采用离线的方式对向量库中的向量进行局部降采样以及中心点初始化,之后利用得到的初始中心点对降采样向量进行二值聚类,得到1000个最终的聚类中心点,并基于1000个聚类中心点对所有向量进行打标,确定每个向量所属的聚类中心点,进一步构建倒排链,倒排链存储有1000个聚类中心点,以及每个聚类中心点对应的向量的标识ID。上述步骤执行完毕之后可以确定第一部分执行完毕,开始执行第二部分,结合1000个聚类中心点和倒排链,对向量进行粗召回,得到20w个向量,进一步对粗召回的向量计算海明距离,得到最终的60个查询向量,返回给用户进行查看。
本申请上述实施例1所提供的方法,在向量查询过程中,首先获取用户输入的查询向量,并结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量的第二海明聚类,得到最终的查询结果,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请提供的上述实施例1的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
本申请上述实施例中,该方法还包括:
步骤S28,对向量库中所有向量进行降采样处理和中心点初始化处理,得到采样向量和初始中心点。
具体地,上述的降采样处理可以是随机降采样处理,上述的中心点初始化处理可以是随机初始化处理,本申请对此不作具体限定。可以采用离线方式对向量库中所有向量进行降采样处理和中心点初始化处理,从而得到采样向量和初始中心点,并且降低处理过程对向量查询的实时性的影响。
步骤S210,基于初始中心点对采样向量进行聚类,得到聚类中心点。
具体地,可以基于初始中心点对采样向量进行二值聚类,从而得到聚类中心点,该聚类中心点也可以是一个二值化后的向量,以方便后续海明距离的计算。
本申请上述实施例中,步骤S210,基于初始中心点对采样向量进行聚类,得到聚类中心点,包括:
步骤S2102,获取采样向量中每个向量与初始中心点之间的第三海明距离。
步骤S2104,基于第三海明距离,确定初始中心点对应的第二向量集合。
在一种可选的方案中,为了确定采样向量中每个向量所属的初始中心点,可以计算每个向量与初始中心点之间的第三海明距离,并确定第三海明距离最小时对应的初始中心点,从而可以确定该向量属于该初始中心点。通过上述方案,可以得到每个初始中心点对应的第二向量集合,也即,将采样向量划分为多个集合。
步骤S2106,将第二向量集合中所有向量按照维度进行比较,得到新的中心点。
具体地,上述的维度可以是向量中的每一位,例如,一个向量中包含8位的0或1,则可以确定该向量包含8个维度。
现有技术中可以通过求取第二向量集合中所有向量的平均值,得到该第二向量集合对应的新的中心点,但是,由于每个第二向量集合中包含的向量的数量不同,每个向量在每个维度上的取值不同,求取平均值后得到的新的中心点中的每一位不一定是0或1,也即,得到的新的中心点不一定是二值化后的向量,无法继续进行二值聚类,得到最终的聚类中心点。例如,第二向量集合中包含10个向量,10个向量在每一位上的取值之和如果小于10,则相应的平均值小于1,得到的新的中心点不是二值化后的向量,无法继续进行二值聚类。
为了解决上述问题,可以通过对第二向量集合中所有向量按照维度进行比较,也即将第二向量集合中所有向量在每一位上的取值进行比较,获取数量最多的取值作为新的中心点在该位上的取值。例如,第二向量集合中包含10个向量,将10个向量按照维度比较,如果某一维度上取值为0的向量有6个,而取值为1的向量有4个,则确定新的中心点在该维度上的取值为0。
步骤S2108,将新的中心点作为初始中心点,并返回执行获取采样向量中每个向量与初始中心点之间的第三海明距离的步骤,直至当前迭代次数到达预设迭代次数,确定新的中心点为聚类中心点。
具体地,上述的预设迭代次数可以根据需要进行设定,本申请对此不作具体限定,例如,在实际处理过程中,当某一次迭代得到的新的中心点不再发生变化时,可以确定该次迭代的迭代次数为预设迭代次数。
在一种可选的方案中,在通过上述方案得到新的中心点之后,此次迭代过程完成,由于新的中心点仍然属于二值化后的向量,因此可以继续二值聚类,并开始下一次迭代过程,也即可以将新的中心点作为初始中心点,重新对采样向量中每个向量进行划分,再次根据划分后的向量集合得到新的中心点,完成下一次迭代过程,并继续进行二值聚类,直至整个迭代过程完成,从而可以将最后一次得到的中心点作为最终的聚类中心点。
本申请上述实施例中,步骤S2106,将第二向量集合中所有向量按照维度进行比较,得到新的中心点,包括:
步骤S21062,获取第二向量集合中每个向量在每个维度上的向量值,其中,向量值为0或1。
具体地,获取每个向量在每个维度上的向量值可以是获取每个向量每一位的取值,由于每个向量都是二值化后的向量,因此,每一位的取值不是0就是1。
步骤S21064,获取每个维度上数量最多的向量值,得到新的中心点在每个维度上的向量值。
具体地,可以通过统计每个维度上不同向量值的向量的数量,得到该向量值的数量。
在一种可选的方案中,为了实现根据划分后的第二向量集合得到新的中心点,可以将同一个向量集合中每个向量的每一位的取值进行比较,如果取值为0的向量的数量较多,则可以确定在该位上数量最多的取值为0,从而确定新的中心点对应位的取值为0;如果取值为1的向量的数量较多,则可以确定在该位上数量最多的取值为1,从而确定新的中心点对应位的取值为1,将新的中心点每一位的取值进行组合,可以得到新的中心点,也即得到一个由0或1构成的向量。
需要说明的是,通过上述方案,可以完成整个检索过程的第一部分,得到用于用户查询的引擎文件,可以开始进行向量检索,实时响应用户的检索请求,具体检索过程如下所述:
本申请上述实施例中,步骤S24,基于聚类中心点和查询向量的第一海明距离,得到与查询向量对应的第一向量集合,包括:
步骤S242,获取聚类中心点和查询向量之间的第一海明距离。
步骤S244,按照第一海明距离对聚类中心点进行排序,得到排序后的聚类中心点。
步骤S246,基于排序后的聚类中心点和倒排列表,得到满足第一预设条件的聚类中心点,其中,倒排列表包括:聚类中心点和聚类中心点对应的向量的标识信息。
具体地,向量库中仅仅存储了所有向量,为了能够根据聚类中心点确定对应的向量集合,可以在二值聚类完成后,预先建立一个倒排链,也即预先建立一个倒排列表,倒排列表中存储有每个聚类中心点,以及每个聚类中心点对应的向量集合,进一步地,为了简化检索过程,降低简化复杂度,可以在倒排列表中仅仅存储每个向量的标识信息,例如,可以是为每个向量唯一设置的ID,或者是向量库中存储的每个向量对应的序号,而不是存储每个向量。满足第一预设条件的聚类中心点可以是指所有聚类中心点对应的向量的总数量满足粗粒度检索需求,例如,满足第一预设条件的聚类中心点对应的向量的总数量超过20w。
步骤S248,基于满足第一预设条件的聚类中心点、倒排列表和向量表,得到第一向量集合,其中,向量表包括:向量库中所有向量和对应的标识信息。
具体地,上述的向量表可以是存储在向量库中的向量表,包含有每个向量和对应的标识信息,在确定满足第一预设条件的聚类中心之后,通过查找倒排列表可以得到相应的多个向量集合中每个向量的标识信息,进一步通过查找向量表可以获取到相应的每个向量,从而可以通过计算每个向量和查询向量之间的第二海明距离,得到最终的查询结果。
本申请上述实施例中,步骤S246,基于排序后的聚类中心点和倒排列表,得到满足第一预设条件的聚类中心点,包括:
步骤S2462,从倒排列表中获取排序后的聚类中心点中前n个聚类中心点对应的向量的数量,其中,n为自然数。
步骤S2464,对前n个聚类中心点对应的向量的数量进行统计,得到总数量。
步骤S2466,在总数量满足预设数量的情况下,确定前n个聚类中心点为满足第一预设条件的聚类中心点。
具体地,上述的预设数量可以是预先设置好的数量,默认情况下可以是20w,为了提升查询精度,可以具体根据用户设置的查询数量进行设定。
步骤S2468,在总数量不满足预设数量的情况下,返回执行获取前n+1个聚类中心点对应的向量的数量的步骤,直至第n+1个聚类中心点为排序后的聚类中心点中最后一个聚类中心点。
在一种可选的方案中,在对所有聚类中心按照第一海明距离从小到大的顺序进行排序之后,可以首先从倒排列表中获取第一个聚类中心点对应的向量的总数量,并判断总数量是否超过预设数量,如果未超过,则继续累加第二个聚类中心点对应的向量的总数量,并判断总数量是否超过预设数量,如果超过,则确定前两个聚类中心点为满足第一条件的聚类中心点;如果未超过,则继续累加第三个聚类中心点对应的向量的总数量,直至总数量超过预设数量,或者最后一个聚类中心点对应的向量的总数量累加完毕。
本申请上述实施例中,该方法还包括:
步骤S212,利用聚类中心点对向量库中所有向量进行打标,得到打标后的向量。
具体地,为了确定向量库中每个向量对应的聚类中心点,可以利用聚类中心点对每个向量进行打标,也即,获取每个向量与聚类中心点之间的海明距离,并根据最小海明距离确定每个向量对应的聚类中心点,从而得到打标后的向量,也即,将所有向量划分为多个集合。例如,在得到1000个聚类中心点之后,可以对向量库中100w个向量进行打标,将100w个向量划分在1000个聚类中心点对应的向量集合中。
步骤S214,基于聚类中心点和打标后的向量的标识信息,得到倒排列表。
具体地,可以将每个聚类中心点和对应的向量集合中每个向量的标识信息进行对应存储,从而构建得到倒排链。
步骤S216,基于打标后的向量和对应的标识信息,得到向量表。
需要说明的是,在倒排链中的向量对应的标识信息为该向量在向量库中的序号的情况下,无需重新生成向量表,可以直接使用向量库中的向量表。
本申请上述实施例中,步骤S216,基于打标后的向量和对应的标识信息,得到向量表,包括:
步骤S2162,按照聚类中心点对打标后的向量进行排序,得到排序后的向量。
步骤S2164,基于排序后的向量和对应的标识信息,得到向量表。
具体地,由于计算机设备在读取当前ID对应的向量时,通常会同时读取当前ID之后存储的部分向量,并进行缓存,为了提高检索效率,可以利用计算机设备的特性,预先按照倒排列表中聚类中心点的顺序,对向量库中所有的向量进行排序,确保同一个聚类中心点对应的向量集合中的所有向量相邻存储,而不同聚类中心点对应的向量集合按照顺序依次存储。
本申请上述实施例中,步骤S26,基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果,包括:
步骤S262,获取查询向量和第一向量集合中每个向量之间的第二海明距离。
步骤S264,按照第二海明距离对第一向量集合中所有向量进行排序,得到第三向量集合。
步骤S266,获取第三向量集合中排序最高的N个向量,得到查询结果,其中,N为自然数。
具体地,上述的N可以是用户在查询请求中设置的查询数量,也可以是默认查询数量60。
在一种可选的方案中,为了能够从粗粒度筛选出的向量中按照细粒度筛选得到最终的查询结果,可以计算查询向量和每个向量之间的第二海明距离,并按照第二海明距离从小到大的顺序,筛选出满足查询数量的向量作为最终查询结果中的搜索向量,搜索向量的排序可以按照第二海明距离从小到大排序。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
实施例2
根据本申请实施例,还提供了一种数据处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本申请实施例2的一种数据处理方法的流程图。如图4所示,该方法包括如下步骤:
步骤S42,显示用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量。
具体地,上述的查询向量可以是用户输入的一个给定向量,由于数据被二值化后存储在数据库中,用户输入的查询向量也可以是二值化后的向量,也即,查询向量是由1或0构成的。
可选地,查询向量可以为图像的向量。
具体地,在本申请实施例中,以图像搜索场景为例进行说明,查询向量和向量库中的向量均为对图像的向量。
步骤S44,显示查询结果,其中,查询结果是基于查询向量和与查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,第一向量集合是基于聚类中心点和查询向量之间的第一海明距离得到的,聚类中心点是对向量库中采样向量进行聚类得到的。
具体地,为了方便用户进行向量查询,可以预先对向量库中存储的采样向量进行聚类,得到多个聚类中心点,每个聚类中心点也是一个二值化后的向量。并将所有向量划分至不同的聚类中心点,相当于将向量库中的所有向量划分为多个集合,每个集合中的向量相似度较高。由于向量均为二值化后的向量,为了简化计算过程,降低计算复杂度,提高处理效率,可以计算查询向量和每个聚类中心点之间的第一海明距离,并按照从小到大的顺序,筛选出满足粗粒度查询要求的至少一个第一向量集合。第一向量集合中的向量可以认为是与查询向量相似度较高的向量。进一步地,为了筛选出满足细粒度查询要求的查询结果,也即筛选出用户需要的搜索向量,在通过粗粒度查询到至少一个第一向量集合之后,可以计算查询向量与至少一个第一向量集合中每个向量之间的第二海明距离,并按照从小到大的顺序筛序出用户实际查询需要的搜索向量,得到最终的查询结果,返回给用户进行查看。
需要说明的是,在默认情况下,返回给用户的查询结果中包含60个搜索向量,也即,用户也可以根据实际查询需求对查询数量进行设定。
本申请上述实施例2所提供的方法,在向量查询过程中,首先获取用户输入的查询向量并进行显示,进一步结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量的第二海明聚类,得到最终的查询结果并进行显示,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请提供的上述实施例2的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
本申请上述实施例中,在步骤S44,显示查询结果之前,该方法还包括:
步骤S46,显示采样向量和初始中心点,其中,采样向量和初始中心点是对向量库中所有向量进行降采样处理和中心点初始化处理得到的。
具体地,上述的降采样处理可以是随机降采样处理,上述的中心点初始化处理可以是随机初始化处理,本申请对此不作具体限定。可以采用离线方式对向量库中所有向量进行降采样处理和中心点初始化处理,从而得到采样向量和初始中心点,并且降低处理过程对向量查询的实时性的影响。
步骤S48,显示聚类中心点,其中,聚类中心点是基于初始中心点对采样向量进行聚类得到的。
具体地,可以基于初始中心点对部分向量进行二值聚类,从而得到聚类中心点,该聚类中心点也可以是一个二值化后的向量,以方便后续海明距离的计算。
本申请上述实施例中,在步骤S48,显示聚类中心点之前,该方法还包括:
步骤S410,显示初始中心点对应的第二向量集合,其中,第二向量集合是基于采样向量中每个向量与初始中心点之间的第三海明距离得到的。
在一种可选的方案中,为了确定采样向量中每个向量所属的初始中心点,可以计算每个向量与初始中心点之间的第三海明距离,并确定第三海明距离最小时对应的初始中心点,从而可以确定该向量属于该初始中心点。通过上述方案,可以得到每个初始中心点对应的第二向量集合,也即,将采样向量划分为多个集合。
步骤S412,显示将第二向量集合中所有向量按照维度进行比较得到的新的中心点。
具体地,上述的维度可以是向量中的每一位,例如,一个向量中包含8位的0或1,则可以确定该向量包含8个维度。
现有技术中可以通过求取第二向量集合中所有向量的平均值,得到该第二向量集合对应的新的中心点,但是,由于每个第二向量集合中包含的向量的数量不同,每个向量在每个维度上的取值不同,求取平均值后得到的新的中心点中的每一位不一定是0或1,也即,得到的新的中心点不一定是二值化后的向量,无法继续进行二值聚类,得到最终的聚类中心点。例如,第二向量集合中包含10个向量,10个向量在每一位上的取值之和如果小于10,则相应的平均值小于1,得到的新的中心点不是二值化后的向量,无法继续进行二值聚类。
为了解决上述问题,可以通过对第二向量集合中所有向量按照维度进行比较,也即将第二向量集合中所有向量在每一位上的取值进行比较,获取数量最多的取值作为新的中心点在该位上的取值。例如,第二向量集合中包含10个向量,将10个向量按照维度比较,如果某一维度上取值为0的向量有6个,而取值为1的向量有4个,则确定新的中心点在该维度上的取值为0。
步骤S414,显示聚类中心点,其中,聚类中心点是当前迭代次数到达预设迭代次数时得到的新的中心点。
具体地,上述的预设迭代次数可以根据需要进行设定,本申请对此不作具体限定,例如,在实际处理过程中,当某一次迭代得到的新的中心点不再发生变化时,可以确定该次迭代的迭代次数为预设迭代次数。
在一种可选的方案中,在通过上述方案得到新的中心点之后,此次迭代过程完成,由于新的中心点仍然属于二值化后的向量,因此可以继续二值聚类,并开始下一次迭代过程,也即可以将新的中心点作为初始中心点,重新对采样向量中每个向量进行划分,再次根据划分后的向量集合得到新的中心点,完成下一次迭代过程,并继续进行二值聚类,直至整个迭代过程完成,从而可以将最后一次得到的中心点作为最终的聚类中心点。
本申请上述实施例中,新的中心点在每个维度上的向量值是基于第二向量集合中每个向量在每个维度上数量最多的向量值得到的,其中,向量值为0或1。
具体地,获取每个向量在每个维度上的向量值可以是获取每个向量每一位的取值,由于每个向量都是二值化后的向量,因此,每一位的取值不是0就是1。可以通过统计每个维度上不同向量值的向量的数量,得到该向量值的数量。
在一种可选的方案中,为了实现根据划分后的第二向量集合得到新的中心点,可以将同一个向量集合中每个向量的每一位的取值进行比较,如果取值为0的向量的数量较多,则可以确定在该位上数量最多的取值为0,从而确定新的中心点对应位的取值为0;如果取值为1的向量的数量较多,则可以确定在该位上数量最多的取值为1,从而确定新的中心点对应位的取值为1,将新的中心点每一位的取值进行组合,可以得到新的中心点,也即得到一个由0或1构成的向量。
本申请上述实施例中,在步骤S44,显示查询结果之前,该方法还包括:
步骤S416,显示排序后的聚类中心点,其中,排序后的聚类中心点是按照聚类中心点和查询向量之间的第一海明距离,对聚类中心点进行排序得到的。
步骤S418,显示第一向量集合,其中,第一向量集合是基于排序后的聚类中心点和倒排列表得到的满足第一预设条件的聚类中心点、倒排列表和向量表得到的,其中,倒排列表包括:聚类中心点和聚类中心点对应的向量的标识信息,向量表包括:向量库中所有向量和对应的标识信息。
具体地,向量库中仅仅存储了所有向量,为了能够根据聚类中心点确定对应的向量集合,可以在二值聚类完成后,预先建立一个倒排链,也即预先建立一个倒排列表,倒排列表中存储有每个聚类中心点,以及每个聚类中心点对应的向量集合,进一步地,为了简化检索过程,降低简化复杂度,可以在倒排列表中仅仅存储每个向量的标识信息,例如,可以是为每个向量唯一设置的ID,或者是向量库中存储的每个向量对应的序号,而不是存储每个向量。满足第一预设条件的聚类中心点可以是指所有聚类中心点对应的向量的总数量满足粗粒度检索需求,例如,满足第一预设条件的聚类中心点对应的向量的总数量超过20w。
上述的向量表可以是存储在向量库中的向量表,包含有每个向量和对应的标识信息,在确定满足第一预设条件的聚类中心之后,通过查找倒排列表可以得到相应的多个向量集合中每个向量的标识信息,进一步通过查找向量表可以获取到相应的每个向量,从而可以通过计算每个向量和查询向量之间的第二海明距离,得到最终的查询结果。
本申请上述实施例中,在步骤S418,显示第一向量集合之前,该方法还包括:
步骤S420,显示打标后的向量,其中,打标后的向量是利用聚类中心点对向量库中所有向量进行打标得到的。
具体地,为了确定向量库中每个向量对应的聚类中心点,可以利用聚类中心点对每个向量进行打标,也即,获取每个向量与聚类中心点之间的海明距离,并根据最小海明距离确定每个向量对应的聚类中心点,从而得到打标后的向量,也即,将所有向量划分为多个集合。例如,在得到1000个聚类中心点之后,可以对向量库中100w个向量进行打标,将100w个向量划分在1000个聚类中心点对应的向量集合中。
步骤S422,显示基于聚类中心点和打标后的向量的标识信息得到的倒排列表。
具体地,可以将每个聚类中心点和对应的向量集合中每个向量的标识信息进行对应存储,从而构建得到倒排链。
步骤S424,显示基于打标后的向量和对应的标识信息得到的向量表。
需要说明的是,在倒排链中的向量对应的标识信息为该向量在向量库中的序号的情况下,无需重新生成向量表,可以直接使用向量库中的向量表。
本申请上述实施例中,向量表是基于按照聚类中心点对打标后的向量进行排序得到的排序后的向量和对应的标识信息得到的。
具体地,由于计算机设备在读取当前ID对应的向量时,通常会同时读取当前ID之后存储的部分向量,并进行缓存,为了提高检索效率,可以利用计算机设备的特性,预先按照倒排列表中聚类中心点的顺序,对向量库中所有的向量进行排序,确保同一个聚类中心点对应的向量集合中的所有向量相邻存储,而不同聚类中心点对应的向量集合按照顺序依次存储。
实施例3
根据本申请实施例,还提供了一种用于实施上述数据处理方法的数据处理装置,如图5所示,该装置500包括:获取模块52、第一处理模块54和第二处理模块56。
其中,获取模块52,用于获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量。
具体地,上述的查询向量可以是用户输入的一个给定向量,由于数据被二值化后存储在数据库中,用户输入的查询向量也可以是二值化后的向量,也即,查询向量是由1或0构成的。
可选地,查询向量可以为图像的向量。
具体地,在本申请实施例中,以图像搜索场景为例进行说明,查询向量和向量库中的向量均为对图像的向量。
第一处理模块54,用于基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的。
具体地,为了方便用户进行向量查询,可以预先对向量库中存储的采样向量进行聚类,得到多个聚类中心点,每个聚类中心点也是一个二值化后的向量。并将所有向量划分至不同的聚类中心点,相当于将向量库中的所有向量划分为多个集合,每个集合中的向量相似度较高。由于向量均为二值化后的向量,为了简化计算过程,降低计算复杂度,提高处理效率,可以计算查询向量和每个聚类中心点之间的第一海明距离,并按照从小到大的顺序,筛选出满足粗粒度查询要求的至少一个第一向量集合。第一向量集合中的向量可以认为是与查询向量相似度较高的向量。
第二处理模块56,用于基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
具体地,为了筛选出满足细粒度查询要求的查询结果,也即筛选出用户需要的搜索向量,在通过粗粒度查询到至少一个第一向量集合之后,可以计算查询向量与至少一个第一向量集合中每个向量之间的第二海明距离,并按照从小到大的顺序筛序出用户实际查询需要的搜索向量,得到最终的查询结果,返回给用户进行查看。
此处需要说明的是,上述获取模块52、第一处理模块54和第二处理模块56对应于实施例1中的步骤S22至步骤S26,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例3所提供的方法,在向量查询过程中,首先获取用户输入的查询向量,并结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量的第二海明聚类,得到最终的查询结果,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请提供的上述实施例3的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
本申请上述实施例中,该装置还包括:第三处理模块,用于对向量库中所有向量进行降采样处理和中心点初始化处理,得到采样向量和初始中心点;聚类模块,用于基于初始中心点对采样向量进行聚类,得到聚类中心点。
此处需要说明的是,上述第三处理模块和聚类模块对应于实施例1中的步骤S28至步骤S210,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,聚类模块包括:第一获取子模块,用于获取采样向量中每个向量与初始中心点之间的第三海明距离;确定子模块,用于基于第三海明距离,确定初始中心点对应的第二向量集合;比较子模块,用于将第二向量集合中所有向量按照维度进行比较,得到新的中心点;执行子模块,用于将新的中心点作为初始中心点,并返回执行获取采样向量中每个向量与初始中心点之间的第三海明距离的步骤,直至当前迭代次数到达预设迭代次数,确定新的中心点为聚类中心点。
此处需要说明的是,上述获取子模块、确定子模块、比较子模块和执行子模块对应于实施例1中的步骤S2102至步骤S2108,四个子模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,比较子模块包括:第一获取单元,用于取第二向量集合中每个向量在每个维度上的向量值,其中,向量值为0或1;第二获取单元,用于获取每个维度上数量最多的向量值,得到新的中心点在每个维度上的向量值。
此处需要说明的是,上述第一获取单元和第二获取单元对应于实施例1中的步骤S21062至步骤S21064,两个单元与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,第一处理模块包括:第二获取子模块,用于获取聚类中心点和查询向量之间的第一海明距离;第一排序子模块,用于按照第一海明距离对聚类中心点进行排序,得到排序后的聚类中心点;第一处理子模块,用于基于排序后的聚类中心点和倒排列表,得到满足第一预设条件的聚类中心点,其中,倒排列表包括:聚类中心点和聚类中心点对应的向量的标识信息;第二处理子模块,用于基于满足第一预设条件的聚类中心点、倒排列表和向量表,得到第一向量集合,其中,向量表包括:向量库中所有向量和对应的标识信息。
此处需要说明的是,上述第二获取子模块、第一排序子模块、第一处理子模块和第二处理子模块对应于实施例1中的步骤S242至步骤S248,四个子模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,第一处理子模块包括:第三获取单元,用于从倒排列表中获取排序后的聚类中心点中前n个聚类中心点对应的向量的数量,其中,n为自然数;统计单元,用于对前n个聚类中心点对应的向量的数量进行统计,得到总数量;确定单元,用于在总数量满足预设数量的情况下,确定前n个聚类中心点为满足第一预设条件的聚类中心点;执行单元,用于在总数量不满足预设数量的情况下,返回执行获取前n+1个聚类中心点对应的向量的数量的步骤,直至第n+1个聚类中心点为排序后的聚类中心点中最后一个聚类中心点。
此处需要说明的是,上述第三获取单元、统计单元、确定单元和执行单元对应于实施例1中的步骤S2462至步骤S2468,四个单元与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,该装置还包括:打标模块,用于利用聚类中心点对向量库中所有向量进行打标,得到打标后的向量;第一建立模块,用于基于聚类中心点和打标后的向量的标识信息,得到倒排列表;第二建立模块,用于基于打标后的向量和对应的标识信息,得到向量表。
此处需要说明的是,上述打标模块、第一建立模块和第二建立模块对应于实施例1中的步骤S212至步骤S216,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,第二建立模块包括:第二排序子模块,用于按照聚类中心点对打标后的向量进行排序,得到排序后的向量;建立子模块,用于基于排序后的向量和对应的标识信息,得到向量表。
此处需要说明的是,上述第二排序子模块和建立子模块对应于实施例1中的步骤S2162至步骤S2164,两个子模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,第二处理模块包括:第三获取子模块,用于获取查询向量和第一向量集合中每个向量之间的第二海明距离;第三排序子模块,用于按照第二海明距离对第一向量集合中所有向量进行排序,得到第三向量集合;第四获取子模块,用于获取第三向量集合中排序最高的N个向量,得到查询结果,其中,N为自然数。
此处需要说明的是,上述第三获取子模块、第三排序子模块和第四获取子模块对应于实施例1中的步骤S262至步骤S266,三个子模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
实施例4
根据本申请实施例,还提供了一种用于实施上述数据处理方法的数据处理装置,如图6所示,该装置600包括:第一显示模块62和第二显示模块64。
其中,第一显示模块,用于显示用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量。
具体地,上述的查询向量可以是用户输入的一个给定向量,由于数据被二值化后存储在数据库中,用户输入的查询向量也可以是二值化后的向量,也即,查询向量是由1或0构成的。
可选地,查询向量可以为图像的向量。
具体地,在本申请实施例中,以图像搜索场景为例进行说明,查询向量和向量库中的向量均为对图像的向量。
第二显示模块64,用于显示查询结果,其中,查询结果是基于查询向量和与查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,第一向量集合是基于聚类中心点和查询向量之间的第一海明距离得到的,聚类中心点是对向量库中采样向量进行聚类得到的。
具体地,为了方便用户进行向量查询,可以预先对向量库中存储的采样向量进行聚类,得到多个聚类中心点,每个聚类中心点也是一个二值化后的向量。并将所有向量划分至不同的聚类中心点,相当于将向量库中的所有向量划分为多个集合,每个集合中的向量相似度较高。由于向量均为二值化后的向量,为了简化计算过程,降低计算复杂度,提高处理效率,可以计算查询向量和每个聚类中心点之间的第一海明距离,并按照从小到大的顺序,筛选出满足粗粒度查询要求的至少一个第一向量集合。第一向量集合中的向量可以认为是与查询向量相似度较高的向量。为了筛选出满足细粒度查询要求的查询结果,也即筛选出用户需要的搜索向量,在通过粗粒度查询到至少一个第一向量集合之后,可以计算查询向量与至少一个第一向量集合中每个向量之间的第二海明距离,并按照从小到大的顺序筛序出用户实际查询需要的搜索向量,得到最终的查询结果,返回给用户进行查看。
此处需要说明的是,上述第一显示模块62和第二显示模块64对应于实施例2中的步骤S42至步骤S44,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例4所提供的方法,在向量查询过程中,首先获取用户输入的查询向量并进行显示,进一步结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量的第二海明聚类,得到最终的查询结果并进行显示,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请提供的上述实施例4的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
本申请上述实施例中,该装置还包括:第三显示模块,用于显示采样向量和初始中心点,其中,采样向量和初始中心点是对向量库中所有向量进行降采样处理和中心点初始化处理得到的;第四显示模块,用于显示聚类中心点,其中,聚类中心点是基于初始中心点对采样向量进行聚类得到的。
此处需要说明的是,上述第三显示模块和第四显示模块对应于实施例2中的步骤S46至步骤S48,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,该装置还包括:第五显示模块,用于显示初始中心点对应的第二向量集合,其中,第二向量集合是基于采样向量中每个向量与初始中心点之间的第三海明距离得到的;第六显示模块,用于显示将第二向量集合中所有向量按照维度进行比较得到的新的中心点;第七显示模块,用于显示聚类中心点,其中,聚类中心点是当前迭代次数到达预设迭代次数时得到的新的中心点。
此处需要说明的是,上述第五显示模块、第六显示模块和第七显示模块对应于实施例2中的步骤S410至步骤S414,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,新的中心点在每个维度上的向量值是基于第二向量集合中每个向量在每个维度上数量最多的向量值得到的,其中,向量值为0或1。
本申请上述实施例中,该装置还包括:第八显示模块,用于显示排序后的聚类中心点,其中,排序后的聚类中心点是按照聚类中心点和查询向量之间的第一海明距离,对聚类中心点进行排序得到的;第九显示模块,用于显示第一向量集合,其中,第一向量集合是基于排序后的聚类中心点和倒排列表得到的满足第一预设条件的聚类中心点、倒排列表和向量表得到的,其中,倒排列表包括:聚类中心点和聚类中心点对应的向量的标识信息,向量表包括:向量库中所有向量和对应的标识信息。
此处需要说明的是,上述第八显示模块和第九显示模块对应于实施例2中的步骤S416至步骤S418,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,该装置还包括:第十显示模块,用于显示打标后的向量,其中,打标后的向量是利用聚类中心点对向量库中所有向量进行打标得到的;第十一显示模块,用于显示基于聚类中心点和打标后的向量的标识信息得到的倒排列表;第十二显示模块,用于显示基于打标后的向量和对应的标识信息得到的向量表。
此处需要说明的是,上述第十显示模块、第十一显示模块和第十二显示模块对应于实施例2中的步骤S420至步骤S424,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例2所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
本申请上述实施例中,向量表是基于按照聚类中心点对打标后的向量进行排序得到的排序后的向量和对应的标识信息得到的。
实施例5
根据本申请实施例,还提供了一种数据处理系统。
图7是根据本申请实施例5的一种数据处理系统的示意图。如图7所示,该系统包括:输入装置72和处理器74。
其中,输入装置72用于输入查询向量,其中,查询向量为经过二值化所处理得到的向量;处理器74与输入装置连接,用于基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果,其中,聚类中心点是对向量库中采样向量进行聚类得到的。
具体地,上述的查询向量可以是用户输入的一个给定向量,由于数据被二值化后存储在数据库中,用户输入的查询向量也可以是二值化后的向量,也即,查询向量是由1或0构成的。
可选地,查询向量可以为图像的向量。
具体地,在本申请实施例中,以图像搜索场景为例进行说明,查询向量和向量库中的向量均为对图像的向量。
为了方便用户进行向量查询,可以预先对向量库中存储的采样向量进行聚类,得到多个聚类中心点,每个聚类中心点也是一个二值化后的向量。并将所有向量划分至不同的聚类中心点,相当于将向量库中的所有向量划分为多个集合,每个集合中的向量相似度较高。由于向量均为二值化后的向量,为了简化计算过程,降低计算复杂度,提高处理效率,可以计算查询向量和每个聚类中心点之间的第一海明距离,并按照从小到大的顺序,筛选出满足粗粒度查询要求的至少一个第一向量集合。第一向量集合中的向量可以认为是与查询向量相似度较高的向量。
为了筛选出满足细粒度查询要求的查询结果,也即筛选出用户需要的搜索向量,在通过粗粒度查询到至少一个第一向量集合之后,可以计算查询向量与至少一个第一向量集合中每个向量之间的第二海明距离,并按照从小到大的顺序筛序出用户实际查询需要的搜索向量,得到最终的查询结果,返回给用户进行查看。
需要说明的是,在默认情况下,返回给用户的查询结果中包含60个搜索向量,也即,用户也可以根据实际查询需求对查询数量进行设定。
本申请上述实施例5所提供的方法,在向量查询过程中,用户可以通过输入装置输入查询向量,处理器结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量的第二海明聚类,得到最终的查询结果,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请提供的上述实施例5的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
本申请上述实施例中,处理器还用于对向量库中所有向量进行降采样处理和中心点初始化处理,得到采样向量和初始中心点,基于初始中心点对采样向量进行聚类,得到聚类中心点。
本申请上述实施例中,处理器还用于获取采样向量中每个向量与初始中心点之间的第三海明距离,基于第三海明距离,确定初始中心点对应的第二向量集合,将第二向量集合中所有向量按照维度进行比较,得到新的中心点,将新的中心点作为初始中心点,并返回执行获取采样向量中每个向量与初始中心点之间的第三海明距离的步骤,直至当前迭代次数到达预设迭代次数,确定新的中心点为聚类中心点。
本申请上述实施例中,处理器还用于获取第二向量集合中每个向量在每个维度上的向量值,获取每个维度上数量最多的向量值,得到新的中心点在每个维度上的向量值,其中,向量值为0或1。
本申请上述实施例中,处理器还用于获取聚类中心点和查询向量之间的第一海明距离,按照第一海明距离对聚类中心点进行排序,得到排序后的聚类中心点,基于排序后的聚类中心点和倒排列表,得到满足第一预设条件的聚类中心点,基于满足第一预设条件的聚类中心点、倒排列表和向量表,得到第一向量集合,其中,倒排列表包括:聚类中心点和聚类中心点对应的向量的标识信息,向量表包括:向量库中所有向量和对应的标识信息。
本申请上述实施例中,处理器还用于从倒排列表中获取排序后的聚类中心点中前n个聚类中心点对应的向量的数量,对前n个聚类中心点对应的向量的数量进行统计,得到总数量,在总数量满足预设数量的情况下,确定前n个聚类中心点为满足第一预设条件的聚类中心点,在总数量不满足预设数量的情况下,返回执行获取前n+1个聚类中心点对应的向量的数量的步骤,直至第n+1个聚类中心点为排序后的聚类中心点中最后一个聚类中心点,其中,n为自然数。
本申请上述实施例中,处理器还用于利用聚类中心点对向量库中所有向量进行打标,得到打标后的向量,基于聚类中心点和打标后的向量的标识信息,得到倒排列表,基于打标后的向量和对应的标识信息,得到向量表。
本申请上述实施例中,处理器还用于按照聚类中心点对打标后的向量进行排序,得到排序后的向量,基于排序后的向量和对应的标识信息,得到向量表。
本申请上述实施例中,处理器还用于获取查询向量和第一向量集合中每个向量之间的第二海明距离,按照第二海明距离对第一向量集合中所有向量进行排序,得到第三向量集合,获取第三向量集合中排序最高的N个向量,得到查询结果,其中,N为自然数。
实施例6
根据本申请实施例,还提供了一种数据处理系统。
图8是根据本申请实施例6的一种数据处理系统的示意图。如图8所示,该系统包括:输入装置72和显示器82。
其中,输入装置72用于输入查询向量,其中,查询向量为经过二值化所处理得到的向量;显示器82与输入装置连接,用于显示查询结果,其中,查询结果是基于查询向量和与查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,第一向量集合是基于聚类中心点和查询向量之间的第一海明距离得到的,聚类中心点是对向量库中采样向量进行聚类得到的。
具体地,上述的查询向量可以是用户输入的一个给定向量,由于数据被二值化后存储在数据库中,用户输入的查询向量也可以是二值化后的向量,也即,查询向量是由1或0构成的。
可选地,查询向量可以为图像的向量。
具体地,在本申请实施例中,以图像搜索场景为例进行说明,查询向量和向量库中的向量均为对图像的向量。
为了方便用户进行向量查询,可以预先对向量库中存储的采样向量进行聚类,得到多个聚类中心点,每个聚类中心点也是一个二值化后的向量。并将所有向量划分至不同的聚类中心点,相当于将向量库中的所有向量划分为多个集合,每个集合中的向量相似度较高。由于向量均为二值化后的向量,为了简化计算过程,降低计算复杂度,提高处理效率,可以计算查询向量和每个聚类中心点之间的第一海明距离,并按照从小到大的顺序,筛选出满足粗粒度查询要求的至少一个第一向量集合。第一向量集合中的向量可以认为是与查询向量相似度较高的向量。进一步地,为了筛选出满足细粒度查询要求的查询结果,也即筛选出用户需要的搜索向量,在通过粗粒度查询到至少一个第一向量集合之后,可以计算查询向量与至少一个第一向量集合中每个向量之间的第二海明距离,并按照从小到大的顺序筛序出用户实际查询需要的搜索向量,得到最终的查询结果,返回给用户进行查看。
需要说明的是,在默认情况下,返回给用户的查询结果中包含60个搜索向量,也即,用户也可以根据实际查询需求对查询数量进行设定。
本申请上述实施例6所提供的方法,在向量查询过程中,首先获取用户输入的查询向量并进行显示,进一步结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量的第二海明聚类,得到最终的查询结果并进行显示,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请提供的上述实施例6的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
本申请实施例中提供的数据处理系统还可以包括处理器,该处理器可以执行实施例5中处理器执行的功能,本申请在此不作详细描述。
实施例7
根据本申请实施例,还提供了一种数据处理系统,包括:
处理器;以及
存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
本申请上述实施例7所提供的方法,在向量查询过程中,首先获取用户输入的查询向量,并结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量的第二海明聚类,得到最终的查询结果,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请提供的上述实施例7的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
实施例8
本申请的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行数据处理方法中以下步骤的程序代码:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
可选地,图9是根据本申请实施例的一种计算机终端的结构框图。如图9所示,该计算机终端A可以包括:一个或多个(图中仅示出一个)处理器902、以及存储器904。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的数据处理方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据处理方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
可选的,上述处理器还可以执行如下步骤的程序代码:对向量库中所有向量进行降采样处理和中心点初始化处理,得到采样向量和初始中心点;基于初始中心点对采样向量进行聚类,得到聚类中心点。
可选的,上述处理器还可以执行如下步骤的程序代码:获取采样向量中每个向量与初始中心点之间的第三海明距离;基于第三海明距离,确定初始中心点对应的第二向量集合;将第二向量集合中所有向量按照维度进行比较,得到新的中心点;将新的中心点作为初始中心点,并返回执行获取采样向量中每个向量与初始中心点之间的第三海明距离的步骤,直至当前迭代次数到达预设迭代次数,确定新的中心点为聚类中心点。
可选的,上述处理器还可以执行如下步骤的程序代码:获取第二向量集合中每个向量在每个维度上的向量值,其中,向量值为0或1;获取每个维度上数量最多的向量值,得到新的中心点在每个维度上的向量值。
可选的,上述处理器还可以执行如下步骤的程序代码:获取聚类中心点和查询向量之间的第一海明距离;按照第一海明距离对聚类中心点进行排序,得到排序后的聚类中心点;基于排序后的聚类中心点和倒排列表,得到满足第一预设条件的聚类中心点,其中,倒排列表包括:聚类中心点和聚类中心点对应的向量的标识信息;基于满足第一预设条件的聚类中心点、倒排列表和向量表,得到第一向量集合,其中,向量表包括:向量库中所有向量和对应的标识信息。
可选的,上述处理器还可以执行如下步骤的程序代码:从倒排列表中获取排序后的聚类中心点中前n个聚类中心点对应的向量的数量,其中,n为自然数;对前n个聚类中心点对应的向量的数量进行统计,得到总数量;在总数量满足预设数量的情况下,确定前n个聚类中心点为满足第一预设条件的聚类中心点;在总数量不满足预设数量的情况下,返回执行获取前n+1个聚类中心点对应的向量的数量的步骤,直至第n+1个聚类中心点为排序后的聚类中心点中最后一个聚类中心点。
可选的,上述处理器还可以执行如下步骤的程序代码:利用聚类中心点对向量库中所有向量进行打标,得到打标后的向量;基于聚类中心点和打标后的向量的标识信息,得到倒排列表;基于打标后的向量和对应的标识信息,得到向量表。
可选的,上述处理器还可以执行如下步骤的程序代码:按照聚类中心点对打标后的向量进行排序,得到排序后的向量;基于排序后的向量和对应的标识信息,得到向量表。
可选的,上述处理器还可以执行如下步骤的程序代码:获取查询向量和第一向量集合中每个向量之间的第二海明距离;按照第二海明距离对第一向量集合中所有向量进行排序,得到第三向量集合;获取第三向量集合中排序最高的N个向量,得到查询结果,其中,N为自然数。
可选的,上述处理器还可以执行如下步骤的程序代码:查询向量为图像的向量。
采用本申请实施例,在向量查询过程中,首先获取用户输入的查询向量,并结合预先对向量库中采样向量进行聚类得到的聚类中心点,基于聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,进一步基于查询向量和第一向量集合中每个向量的第二海明聚类,得到最终的查询结果,从而实现向量查询的目的。
容易注意到的,可以通过聚类中心点和查询向量之间的第一海明距离,得到第一向量集合,并通过查询向量和第一向量集合中每个向量之间的第二海明距离,得到最终的查询结果,与现有技术相比,无需利用Hash表,不用限制查询向量和向量库中向量的海明半径,可以筛选出海明半径超过100个文档,达到了减少对查询向量和向量库向量的海明半径的限制,扩大适用范围的技术效果。
由此,本申请提供的方案解决了现有技术中数据处理方法要求查询向量和查询结果的海明距离较短,适用性较差的技术问题。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:显示用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;显示查询结果,其中,查询结果是基于查询向量和与查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,第一向量集合是基于聚类中心点和查询向量之间的第一海明距离得到的,聚类中心点是对向量库中采样向量进行聚类得到的。
本领域普通技术人员可以理解,图9所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图9其并不对上述电子装置的结构造成限定。例如,计算机终端A还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例9
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的数据处理方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;基于聚类中心点和查询向量之间的第一海明距离,得到与查询向量对应的第一向量集合,其中,聚类中心点是对向量库中采样向量进行聚类得到的;基于查询向量和第一向量集合中每个向量之间的第二海明距离,得到查询结果。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:显示用户输入的查询向量,其中,查询向量为经过二值化所处理得到的向量;显示查询结果,其中,查询结果是基于查询向量和与查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,第一向量集合是基于聚类中心点和查询向量之间的第一海明距离得到的,聚类中心点是对向量库中采样向量进行聚类得到的。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以集合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (24)
1.一种数据处理方法,包括:
获取用户输入的查询向量,其中,所述查询向量为经过二值化所处理得到的向量;
基于聚类中心点和所述查询向量之间的第一海明距离,得到与所述查询向量对应的第一向量集合,其中,所述聚类中心点是对向量库中采样向量进行聚类得到的;
基于所述查询向量和所述第一向量集合中每个向量之间的第二海明距离,得到查询结果。
2.根据权利要求1所述的方法,还包括:
对所述向量库中所有向量进行降采样处理和中心点初始化处理,得到所述采样向量和初始中心点;
基于所述初始中心点对所述采样向量进行聚类,得到所述聚类中心点。
3.根据权利要求2所述的方法,其中,基于所述初始中心点对所述采样向量进行聚类,得到所述聚类中心点,包括:
获取所述采样向量中每个向量与所述初始中心点之间的第三海明距离;
基于所述第三海明距离,确定所述初始中心点对应的第二向量集合;
将所述第二向量集合中所有向量按照维度进行比较,得到新的中心点;
将所述新的中心点作为所述初始中心点,并返回执行获取所述采样向量中每个向量与所述初始中心点之间的第三海明距离的步骤,直至当前迭代次数到达预设迭代次数,确定所述新的中心点为所述聚类中心点。
4.根据权利要求3所述的方法,其中,将所述第二向量集合中所有向量按照维度进行比较,得到新的中心点,包括:
获取所述第二向量集合中每个向量在每个维度上的向量值,其中,所述向量值为0或1;
获取所述每个维度上数量最多的向量值,得到所述新的中心点在所述每个维度上的向量值。
5.根据权利要求1所述的方法,其中,基于聚类中心点和所述查询向量之间的第一海明距离,得到与所述查询向量对应的第一向量集合,包括:
获取所述聚类中心点和所述查询向量之间的第一海明距离;
按照所述第一海明距离对所述聚类中心点进行排序,得到排序后的聚类中心点;
基于所述排序后的聚类中心点和倒排列表,得到满足第一预设条件的聚类中心点,其中,所述倒排列表包括:所述聚类中心点和所述聚类中心点对应的向量的标识信息;
基于所述满足第一预设条件的聚类中心点、所述倒排列表和向量表,得到所述第一向量集合,其中,所述向量表包括:所述向量库中所有向量和对应的标识信息。
6.根据权利要求5所述的方法,其中,基于所述排序后的聚类中心点和倒排列表,得到满足第一预设条件的聚类中心点,包括:
从所述倒排列表中获取所述排序后的聚类中心点中前n个聚类中心点对应的向量的数量,其中,所述n为自然数;
对所述前n个聚类中心点对应的向量的数量进行统计,得到总数量;
在所述总数量满足预设数量的情况下,确定所述前n个聚类中心点为所述满足第一预设条件的聚类中心点;
在所述总数量不满足所述预设数量的情况下,返回执行获取前n+1个聚类中心点对应的向量的数量的步骤,直至第n+1个聚类中心点为所述排序后的聚类中心点中最后一个聚类中心点。
7.根据权利要求5所述的方法,其中,所述方法还包括:
利用所述聚类中心点对所述向量库中所有向量进行打标,得到打标后的向量;
基于所述聚类中心点和所述打标后的向量的标识信息,得到所述倒排列表;
基于所述打标后的向量和对应的标识信息,得到所述向量表。
8.根据权利要求7所述的方法,其中,基于所述打标后的向量和对应的标识信息,得到所述向量表,包括:
按照所述聚类中心点对所述打标后的向量进行排序,得到排序后的向量;
基于所述排序后的向量和对应的标识信息,得到所述向量表。
9.根据权利要求1所述的方法,其中,基于所述查询向量和所述第一向量集合中每个向量之间的第二海明距离,得到查询结果,包括:
获取所述查询向量和所述第一向量集合中每个向量之间的第二海明距离;
按照所述第二海明距离对所述第一向量集合中所有向量进行排序,得到第三向量集合;
获取所述第三向量集合中排序最高的N个向量,得到所述查询结果,其中,所述N为自然数。
10.根据权利要求1所述的方法,其中,所述查询向量为图像的向量。
11.一种数据处理方法,包括:
显示用户输入的查询向量,其中,所述查询向量为经过二值化所处理得到的向量;
显示查询结果,其中,所述查询结果是基于所述查询向量和与所述查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,所述第一向量集合是基于聚类中心点和所述查询向量之间的第一海明距离得到的,所述聚类中心点是对向量库中采样向量进行聚类得到的。
12.根据权利要求11所述的方法,其中,在显示查询结果之前,所述方法还包括:
显示所述采样向量和初始中心点,其中,所述采样向量和所述初始中心点是对所述向量库中所有向量进行降采样处理和中心点初始化处理得到的;
显示所述聚类中心点,其中,所述聚类中心点是基于所述初始中心点对所述采样向量进行聚类得到的。
13.根据权利要求12所述的方法,其中,在显示所述聚类中心点之前,所述方法还包括:
显示所述初始中心点对应的第二向量集合,其中,所述第二向量集合是基于所述采样向量中每个向量与所述初始中心点之间的第三海明距离得到的;
显示将所述第二向量集合中所有向量按照维度进行比较得到的新的中心点;
显示所述聚类中心点,其中,所述聚类中心点是当前迭代次数到达预设迭代次数时得到的所述新的中心点。
14.根据权利要求13所述的方法,其中,所述新的中心点在每个维度上的向量值是基于所述第二向量集合中每个向量在所述每个维度上数量最多的向量值得到的,其中,所述向量值为0或1。
15.根据权利要求11所述的方法,其中,在显示查询结果之前,所述方法还包括:
显示排序后的聚类中心点,其中,所述排序后的聚类中心点是按照所述聚类中心点和所述查询向量之间的第一海明距离,对所述聚类中心点进行排序得到的;
显示所述第一向量集合,其中,所述第一向量集合是基于所述排序后的聚类中心点和倒排列表得到的满足第一预设条件的聚类中心点、所述倒排列表和向量表得到的,其中,所述倒排列表包括:所述聚类中心点和所述聚类中心点对应的向量的标识信息,所述向量表包括:所述向量库中所有向量和对应的标识信息。
16.根据权利要求15所述的方法,其中,在显示所述第一向量集合之前,所述方法还包括:
显示打标后的向量,其中,所述打标后的向量是利用所述聚类中心点对所述向量库中所有向量进行打标得到的;
显示基于所述聚类中心点和所述打标后的向量的标识信息得到的所述倒排列表;
显示基于所述打标后的向量和对应的标识信息得到的所述向量表。
17.根据权利要求16所述的方法,其中,所述向量表是基于按照所述聚类中心点对所述打标后的向量进行排序得到的排序后的向量和对应的标识信息得到的。
18.一种数据处理装置,包括:
获取模块,用于获取用户输入的查询向量,其中,所述查询向量为经过二值化所处理得到的向量;
第一处理模块,用于基于聚类中心点和所述查询向量之间的第一海明距离,得到与所述查询向量对应的第一向量集合,其中,所述聚类中心点是对向量库中采样向量进行聚类得到的;
第二处理模块,用于基于所述查询向量和所述第一向量集合中每个向量之间的第二海明距离,得到查询结果。
19.一种数据处理装置,包括:
第一显示模块,用于显示用户输入的查询向量,其中,所述查询向量为经过二值化所处理得到的向量;
第二显示模块,用于显示查询结果,其中,所述查询结果是基于所述查询向量和与所述查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,所述第一向量集合是基于聚类中心点和所述查询向量之间的第一海明距离得到的,所述聚类中心点是对向量库中采样向量进行聚类得到的。
20.一种数据处理系统,包括:
输入装置,用于输入查询向量,其中,所述查询向量为经过二值化所处理得到的向量;
处理器,与输入装置连接,用于基于聚类中心点和所述查询向量之间的第一海明距离,得到与所述查询向量对应的第一向量集合,基于所述查询向量和所述第一向量集合中每个向量之间的第二海明距离,得到查询结果,其中,所述聚类中心点是对向量库中采样向量进行聚类得到的。
21.一种数据处理系统,包括:
输入装置,用于输入查询向量,其中,所述查询向量为经过二值化所处理得到的向量;
显示器,与输入装置连接,用于显示查询结果,其中,所述查询结果是基于所述查询向量和与所述查询向量对应的第一向量集合中每个向量之间的第二海明距离得到的,所述第一向量集合是基于聚类中心点和所述查询向量之间的第一海明距离得到的,所述聚类中心点是对向量库中采样向量进行聚类得到的。
22.一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如下步骤:获取用户输入的查询向量,其中,所述查询向量为经过二值化所处理得到的向量;基于聚类中心点和所述查询向量之间的第一海明距离,得到与所述查询向量对应的第一向量集合,其中,所述聚类中心点是对向量库中采样向量进行聚类得到的;基于所述查询向量和所述第一向量集合中每个向量之间的第二海明距离,得到查询结果。
23.一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行如下步骤:获取用户输入的查询向量,其中,所述查询向量为经过二值化所处理得到的向量;基于聚类中心点和所述查询向量之间的第一海明距离,得到与所述查询向量对应的第一向量集合,其中,所述聚类中心点是对向量库中采样向量进行聚类得到的;基于所述查询向量和所述第一向量集合中每个向量之间的第二海明距离,得到查询结果。
24.一种数据处理系统,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:获取用户输入的查询向量,其中,所述查询向量为经过二值化所处理得到的向量;基于聚类中心点和所述查询向量之间的第一海明距离,得到与所述查询向量对应的第一向量集合,其中,所述聚类中心点是对向量库中采样向量进行聚类得到的;基于所述查询向量和所述第一向量集合中每个向量之间的第二海明距离,得到查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810911756.XA CN110874385B (zh) | 2018-08-10 | 2018-08-10 | 数据处理方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810911756.XA CN110874385B (zh) | 2018-08-10 | 2018-08-10 | 数据处理方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110874385A true CN110874385A (zh) | 2020-03-10 |
CN110874385B CN110874385B (zh) | 2023-11-14 |
Family
ID=69714197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810911756.XA Active CN110874385B (zh) | 2018-08-10 | 2018-08-10 | 数据处理方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110874385B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023108995A1 (zh) * | 2021-12-15 | 2023-06-22 | 平安科技(深圳)有限公司 | 向量相似度计算方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100987394B1 (ko) * | 2009-12-17 | 2010-10-12 | 동국대학교 산학협력단 | 센서 노드의 클러스터링 방법 및 장치 |
CN104765768A (zh) * | 2015-03-09 | 2015-07-08 | 深圳云天励飞技术有限公司 | 海量人脸库的快速准确检索方法 |
CN106503648A (zh) * | 2016-10-20 | 2017-03-15 | 北京邮电大学 | 基于稀疏投影二值编码的人脸识别方法及装置 |
CN107944046A (zh) * | 2017-12-15 | 2018-04-20 | 清华大学 | 大规模高维数据快速检索方法及系统 |
US20180137137A1 (en) * | 2016-11-16 | 2018-05-17 | International Business Machines Corporation | Specialist keywords recommendations in semantic space |
WO2018133648A1 (zh) * | 2017-01-20 | 2018-07-26 | 北京三快在线科技有限公司 | 搜索方法、装置及非临时性计算机可读存储介质 |
-
2018
- 2018-08-10 CN CN201810911756.XA patent/CN110874385B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100987394B1 (ko) * | 2009-12-17 | 2010-10-12 | 동국대학교 산학협력단 | 센서 노드의 클러스터링 방법 및 장치 |
CN104765768A (zh) * | 2015-03-09 | 2015-07-08 | 深圳云天励飞技术有限公司 | 海量人脸库的快速准确检索方法 |
CN106503648A (zh) * | 2016-10-20 | 2017-03-15 | 北京邮电大学 | 基于稀疏投影二值编码的人脸识别方法及装置 |
US20180137137A1 (en) * | 2016-11-16 | 2018-05-17 | International Business Machines Corporation | Specialist keywords recommendations in semantic space |
WO2018133648A1 (zh) * | 2017-01-20 | 2018-07-26 | 北京三快在线科技有限公司 | 搜索方法、装置及非临时性计算机可读存储介质 |
CN107944046A (zh) * | 2017-12-15 | 2018-04-20 | 清华大学 | 大规模高维数据快速检索方法及系统 |
Non-Patent Citations (1)
Title |
---|
田雪;朱晓杰;申培松;陈驰;邹洪;: "基于相似查询树的快速密文检索方法", 软件学报, no. 06, pages 1566 - 1576 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023108995A1 (zh) * | 2021-12-15 | 2023-06-22 | 平安科技(深圳)有限公司 | 向量相似度计算方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110874385B (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2505856C2 (ru) | Способ и устройство для представления и идентификации дескрипторов признаков с использованием сжатой гистограммы градиентов | |
CN104426841A (zh) | 设置背景图像的方法及相关的服务器和系统 | |
CN107179930B (zh) | 一种应用卸载推荐方法及装置 | |
CN103353881A (zh) | 一种应用程序搜索方法及装置 | |
CN111080407A (zh) | 房屋信息推荐方法、装置、电子设备及可读存储介质 | |
CN112784155A (zh) | 匹配服务方的方法、装置以及存储介质 | |
CN104657481A (zh) | 一种存储、查询数据的方法及装置 | |
CN114722091A (zh) | 数据处理方法、装置、存储介质以及处理器 | |
WO2017095439A1 (en) | Incremental clustering of a data stream via an orthogonal transform based indexing | |
WO2017095413A1 (en) | Incremental automatic update of ranked neighbor lists based on k-th nearest neighbors | |
CN110874385B (zh) | 数据处理方法、装置和系统 | |
US11361195B2 (en) | Incremental update of a neighbor graph via an orthogonal transform based indexing | |
CN111309946B (zh) | 一种已建立档案优化方法及装置 | |
CN113157962A (zh) | 图像检索方法、电子装置和存储介质 | |
CN113986931B (zh) | 报表分页的方法、装置、存储介质及计算设备 | |
CN112784025A (zh) | 一种目标事件的确定方法和装置 | |
CN104766080A (zh) | 一种基于电子商务的图像多类特征识别及推送的方法 | |
CN110826582A (zh) | 图像特征训练方法、装置和系统 | |
CN105991400B (zh) | 一种群组搜索方法及其设备 | |
US20170270390A1 (en) | Computerized correspondence estimation using distinctively matched patches | |
CN112749169A (zh) | 地址树构建方法、地址规划规范方法、装置和电子设备 | |
CN113487250B (zh) | 项目需求拆分方法、装置以及存储介质 | |
CN112561376A (zh) | 对项目进行拆分的方法、装置以及存储介质 | |
CN112639761A (zh) | 一种为数据建立索引的方法以及装置 | |
CN110728138A (zh) | 新闻文本识别的方法、装置以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |