用于文本挖掘的角K-均值的制作方法

文档序号:17130796发布日期:2019-03-16 01:11阅读:219来源:国知局
用于文本挖掘的角K-均值的制作方法

各实施例一般涉及数据集处理。更具体地,各实施例涉及用于文本挖掘的角k-均值技术。



背景技术:

在数据挖掘领域中,k-均值技术可指用于将数据分组至k个聚类的过程。标准k-均值技术可基于数据点之间的欧几里德距离来对数据分组。球面k-均值技术可基于数据点之间的余弦相似度来对数据分组。

附图说明

通过阅读以下说明书和所附权利要求并通过参考以下附图,各实施例的各种优点对于本领域技术人员将变得显而易见,其中:

图1是根据实施例的电子处理系统的示例的框图;

图2是根据实施例的半导体封装装置的示例的框图;

图3a至3c是根据实施例的对数据对象分组的方法的示例的流程图;

图4是根据实施例的数据分组器的示例的框图;

图5是根据实施例的三点之间三角不等式原理的示例的示例性示图;

图6是根据实施例的角k-均值技术的方法的示例的流程图;

图7和8是根据实施例的数据分组器装置的示例的框图;

图9是根据实施例的处理器的示例的框图;以及

图10是根据实施例的系统的示例的框图。

具体实施方式

现转向图1,电子处理系统10的实施例可包括:处理器11;存储器12,该存储器12通信地耦合至处理器11;以及逻辑13,该逻辑13通信地耦合至处理器11以确定数据对象与数据对象组之间的角距离,并且基于所确定角距离来将数据对象指派给数据对象组。例如,逻辑13可基于三角不等式确定数据对象组的上界和下界中的一个或多个。在一些实施例中,逻辑13可进一步被配置成确定数据对象是否位于数据对象组的上界与下界内,以及响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离。逻辑13还可维持相应数据对象组之间的距离的k乘k矩阵,其中k对应于数据对象组的目标数量。在一些实施例中,逻辑13还可维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象的相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,并且其中k对应于数据对象组的目标数量。在本文实施例中的任一个中,数据集可包括文本文档集。

上述处理器11、存储器12、逻辑13中每一个的实施例以及其他系统组件能以硬件、软件或其任何合适组合来实现。例如,硬件实现可包括诸如例如可编程逻辑阵列(pla)、场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)之类的可配置逻辑,或使用诸如例如专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术之类的电路技术的固定功能逻辑硬件,或者其任何组合。

替代地或附加地,这些组件的全部或部分可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如,随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等)中将由处理器或计算设备执行的逻辑指令集。例如,用于实现组件操作的计算机程序代码能以一种或多种操作系统(os)适用/适当的编程语言的任何组合来进行编写,包括诸如python、perl、java、smalltalk、c++、c#之类的面向对象编程语言,以及诸如“c”编程语言或类似编程语言之类的常规过程式编程语言。例如,存储器12、持久存储介质或其他系统存储器可存储指令集,该指令集在由处理器11执行时,使系统10实现系统10的一个或多个组件、特征或方面(例如,逻辑13,该逻辑13确定数据对象与数据对象组之间的角距离、基于所确定角距离将数据对象指派给数据对象组等)。

现转向图2,半导体封装装置20的实施例可包括衬底21以及耦合至衬底21的逻辑22,其中逻辑22至少部分地以可配置逻辑和固定功能硬件逻辑中的一个或多个来实现。耦合至衬底的逻辑22可被配置成确定数据对象与数据对象组之间的角距离,以及基于所确定角距离来将数据对象指派给数据对象组。例如,逻辑22可基于三角不等式确定数据对象组的上界和下界中的一个或多个。在一些实施例中,逻辑22进一步被配置成确定数据对象是否位于数据对象组的上界与下界内,以及响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离。逻辑22还可维持相应数据对象组之间距离的k乘k矩阵,其中k对应于数据对象组的目标数量。在一些实施例中,逻辑22还可维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量。在本文实施例中的任一个中,数据集可包括文本文档集。

逻辑22、以及装置20的其他组件的实施例能以硬件、软件或其任何组合(至少包括部分硬件实现)来实现。例如,硬件实现可包括诸如例如pla、fpga、cpld之类的可配置逻辑,或使用诸如例如asic、cmos或ttl技术之类的电路技术的固定功能逻辑硬件,或者其任何组合。此外,这些组件的部分可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如,ram、rom、prom、固件、闪存等)中将由处理器或计算设备执行的逻辑指令集。例如,用于实现组件操作的计算机程序代码能以一种或多种os适用/适当的编程语言的任何组合来进行编写,包括诸如python、perl、java、smalltalk、c++、c#之类的面向对象编程语言,以及诸如“c”编程语言或类似编程语言之类的常规过程式编程语言。

现转向图3a至3c,对数据对象分组的方法30的实施例可包括在框31处确定数据对象与数据对象组之间的角距离,以及在框32处基于所确定角距离来将数据对象指派给数据对象组。例如,方法30可包括在框33处基于三角不等式确定数据对象组的上界和下界中的一个或多个。一些实施例可包括在框34处确定数据对象是否位于数据对象组的上界与下界内,以及在框35处响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离。方法30还可包括:在框36处维持相应数据对象组之间距离的k乘k矩阵,其中k对应于数据对象组的目标数量;在框37处维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量;和/或在框38处维持每个数据对象相应上界的大小为n的数组。例如,在框39处,数据集可包括文本文档集。

方法30的实施例可在系统、装置、计算机、设备等(例如诸如,本文所描述的那些)中被实现。更具体地,方法30的硬件实现可包括诸如例如pla、fpga、cpld之类的可配置逻辑,或使用诸如例如asic、cmos或ttl技术之类的电路技术的固定功能逻辑硬件,或者其任何组合。替代地或附加地,方法30可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如,ram、rom、prom、固件、闪存等)中将由处理器或计算设备执行的逻辑指令集。例如,用于实现组件操作的计算机程序代码能以一种或多种os适用/适当的编程语言的任何组合来进行编写,包括诸如python、perl、java、smalltalk、c++、c#之类的面向对象编程语言,以及诸如“c”编程语言或类似编程语言之类的常规过程式编程语言。

例如,方法30可在结合下文示例19至24来描述的计算机可读介质上被实现。方法30的实施例或部分可在运行在操作系统(os)上的应用(例如,通过应用编程接口(api))或驱动软件中被实现。

现转向图4,一些实施例中可在逻辑上或物理上被布置成一个或多个模块。例如,数据分组器40的实施例可包括:界限检查器41,该界限检查器41被通信地耦合至角距离计算器42;以及组选择器43。角距离计算器42可被配置成计算数据对象与数据对象组之间的角距离。界限检查器41可被配置成基于三角不等式确定数据对象组的上界和下界中的一个或多个。界限检查器41还可被配置成确定数据对象是否位于数据对象组的上界与下界内,以及有利地避免多余或不必要的计算(例如,角距离计算器42可响应于数据对象被界限检查器41确定为位于数据对象组的上界与下界内来计算数据对象与数据对象组之间的角距离)。组选择器43可基于所确定角距离来将数据对象指派给适当的数据对象组。数据分组器40还可维持相应数据对象组之间距离的k乘k矩阵,其中k对应于数据对象组的目标数量。在一些实施例中,数据分组器40还可维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,并且其中k对应于数据对象组的目标数量。例如,数据集可包括文本文档集,并且数据对象可以是个体文本文档。

界限检查器41、角距离计算器42、组选择器43、以及数据分组器40的其他组件的实施例能以硬件、软件或其任何组合(至少包括部分硬件形式的实现)来实现。例如,硬件实现可包括诸如例如pla、fpga、cpld之类的可配置逻辑、或使用诸如例如asic、cmos或ttl技术之类的电路技术的固定功能逻辑硬件、或者其任何组合。此外,这些组件的部分可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如,ram、rom、prom、固件、闪存等)中将由处理器或计算设备执行的逻辑指令集。例如,用于实现组件操作的计算机程序代码能以一种或多种os适用/适当的编程语言的任何组合来进行编写,包括诸如python、perl、java、smalltalk、c++、c#之类的面向对象编程语言,以及诸如“c编程语言或类似编程语言之类的常规过程式编程语言。”

有利地,一些实施例可提供用于文本挖掘的角k-均值技术,该技术具有提升收敛改进或优化。一些实施例对聚类分析、聚类化、数据挖掘、搜索引擎、文本挖掘和/或无监督学习特别有用。一些实施例可在各种产品中被使用,这些产品包括代码库、针对专用硬件的挖掘实现、或者瞄准文本识别和/或文本分析(例如,用于系统确认的对测试执行日志的分析)的任何大数据应用。

对于无监督学习和/或聚类化的领域中的数据挖掘,各种k-均值技术可以是有用的。球面k-均值是标准k-均值算法的变体,其使用余弦相似度而不是欧几里德距离来作为聚类对象之间的距离函数。球面k-均值变体在对文本文档(例如,文本挖掘)聚类化方面可提供优良的结果。然而,球面k-均值在文本挖掘方面的问题是:其可能比例如简单地对3d欧几里德空间的对象分组需要多得多的计算功率和时间。在不限于操作理论的情况下,文档可由n维空间中的大稀疏向量来表示,其中n是对所有聚类文档中不同单词/术语的计数(例如,其可能是数以万计的)。向量越大,对两个文档之间距离(余弦相似度)的计算越长。

一些实施例可在n维单位球面上有利地使用三角不等式以便显著地减少本文中被称作角k-均值技术中的距离计算的数量。角k-均值技术可基于角距离(例如,与球面k-均值技术的余弦相似度相反)来对数据点分组。一些实施例还可利用中间数据结构,使得三角不等式可创建一传递关系,使用该传递关系以便减少或避免多余或不必要的距离计算。有利地,一些实施例可比球面k-均值技术快数个数量级地收敛,同时提供类似或同样的聚类化结果。在一些实施例中,较快收敛可使角k-均值技术对大规模、分布式文本挖掘特别有用。当两种技术被完全相同地初始化时(例如,使用同一随机生成器种子),角k-均值技术的一些实施例与球面k-均值技术相比可总是提供同样的聚类化结果。有利地,角k-均值技术的一些实施例可使用三角不等式来提供较快结果而不牺牲任何精度。

在不限于操作理论的情况下,一些实施例可通过参看图5而被较好地理解。对于文本挖掘应用,文本文档可被表示为n维单元球面上的点,其中两个点的角距离可充当距离函数。图5示出定义三角形的三个此类点μ1、μ2和x,其中μ1可对应于第一质心,其中μ2可对应于第二质心,而x对应于文本文档。三角不等式指示:两点a与b之间的距离小于或等于点a与第三点c之间的距离加上点b与c之间距离的和(例如,d(a,b)≤d(a,c)+d(c,b))。因此,如果点x与质心点μ1之间的距离d(x,μ1)小于(或等于)两个质心点μ1与μ2之间距离d(μ1,μ2)的一半(1/2),则与质心点μ2相比,点x更靠近质心点μ1(或至少一样近)。角距离函数的上界可基于两个质心点之间距离的一半来确定。

类似地,角距离函数的下限可基于三角不等式。距离d(x,μ2)一定大于或等于零以及距离d(x,μ1)与距离d(x,μ2)之间的差中较大的一个(例如,d(x,μ2)≥max{0,d(x,μ1)-d(x,μ2))。例如,三角不等式指示:d(x,μ1)≤d(x,μ2)+d(μ1,μ2),这可被变换成:d(x,μ1)-d(μ1,μ2)≤d(x,μ2),其中d(x,μ2)≥0。

前述内容可被利用来构建中间结构,以存储每个质心的下界值和上界值。使用计算的下界和上界,一些实施例可有利地避免许多或大多数多余或不必要的计算,并且极快地收敛(例如,与其他k-均值技术相比)。

现转向图6,角k-均值技术的方法60可包括:在框62处初始化k-均值(例如,使用任何合适的k-均值初始化技术,诸如随机的、基于概率的等),以及在框63处初始化中间结构(例如,下界、上界等)。在框64处,针对数据集中的每个点,方法60可包括:计算该点至每个质心的距离(例如,利用中间结构来避免冗余或不必要的计算),以及将该点指派给一聚类。方法60随后可包括:在框65处计算每个质心的新位置,以及在框66处计算新的下界和上界(例如,更新中间结构)。方法60随后可在框67处确定是否存在任何改变位置的质心。如果是,则方法可返回至框64。如果不是,则角k-均值已收敛且完成。

在不限于特定实现的情况下,一些实施例可通过参考示例伪代码例程而被较好地理解。用于将数据集分组至聚类中的整体伪代码例程可被称为angular-kmeans(角-k均值):

其中x对应于正被聚类的、大小为n的数据集;c对应于包含聚类质心位置的、大小为k的向量(数组);d对应于包含每个质心之间距离的、大小为k×k的对称矩阵(2d数组);l对应于包含数据集x中每个点以及c中每个质心的下界的、大小为n×k的矩阵(2d数组);u对应于包含数据集x中每个点的上界的、大小为n的向量(数组);s对应于包含c中每个质心与最靠近其他质心的距离的、大小为k的向量(数组);以及upd对应于包含针对每个质心的指示质心自算法的上一迭代以来是否已改变其位置的布尔标记的、大小为k的向量(数组)。

矩阵l可同点与质心之间距离以及三角不等式相关。例如,矩阵l可对应于数据集点至每个质心的近似距离或最坏情形距离。矩阵u也可同点与质心之间距离以及三角不等式相关。根据一些实施例,矩阵l、矩阵u、矩阵d、向量s、以及向量upd可被视为改进或优化角k-均值技术的中间结构。d(x,y)函数可对应于计算点x与y之间距离的函数。

在一些初始化步骤之后,angular-kmeans程序可迭代地计算每一数据集点到所有质心的距离,并且将点指派给其最靠近质心。循环可重复直到满足收敛准则(例如,只要标记/函数确定“结果已收敛”为“假”,循环就可运行)。例如,收敛可在没有点被指派给与先前迭代不同的聚类时完成。质心可对应于整个聚类的中心或平均点。

在不限于特定实现的情况下,初始化伪代码例程可被称为initialize(初始化):

procedureinitialize(x,c,d,l,u,s,upd)

initialize-centroids(初始化-质心)(x,c)

compute-centroids(计算-质心)(x,c)

assign-clusters(指派-初始-聚类)(x,c,d,l,u,s)

update(更新)(x,c,l,u,upd)

initialize程序可包括质心初始化以及角k-均值技术(例如,计算-指派-更新周期)的“零”次迭代。例如,一些实施例可利用初始随机指派,或者初始的基于概率/基于密度的指派。

在不限于特定实现的情况下,用于更新中间结构中的一些的伪代码例程可被称为compute-centroid-distances(计算-质心-距离):

跟随在对compute-centroid-distances程序的执行之后,矩阵d(例如,所有质心之间的距离)和向量s(例如,每个质心与最靠近相邻质心的距离)被更新。

第一循环(fori←1,kdo)可用质心之间的距离更新矩阵。有利地,当在迭代之间质心未移动时,upd向量可减少计算数量。此改进/优化在角k-均值技术接近于收敛且极少数质心改变其坐标(例如,在技术的开始许多质心可移动,但在接近结束时较少的质心可在每次迭代时移动)时是特别有益的。第二循环(forallc2∈c,c2≠c1do)可针对每个质心执行搜索最靠近质心。向量s可存储最靠近距离的一半以在其他计算中使用。

在不限于特定实现的情况下,用于将点指派给其初始聚类的伪代码例程可被称为assign-init-clusters(指派-初始-聚类):

在一些实施例中,用于点对其聚类的第一指派的assign-init-clusters程序可包括对一些中间结构的初始化,诸如存储在l和u中的下界和上界。

第一条件语句(ifc(x)=null∨1/2d(c,c(x))<d(x,c(x))then)可基于两个质心之间的距离以及至点x的当前质心的距离(例如,基于三角不等式)来过滤冗余/不必要的计算,从而有利地提供显著的性能增益。如果条件成立,则针对给定点x与质心c的下界可被更新(l(x,c)←d(x,c))。随后,针对给定点x的上界可被更新(u(x)←min)。assign-init-clusters程序可计算数据集中所有点与所有质心之间的距离。这些值可被存储在l矩阵中。同时,assign-init-clusters程序可针对数据集中每个点来寻找到质心距离的最小值,并且这些值可被存储在u矩阵中。

在不限于特定实现的情况下,用于将点指派给其后续/最终聚类的伪代码例程可被称为assign-clusters(指派-聚类):

assign-clusters程序可使用3-步过滤器来处理x中的每个点x以便避免冗余/不必要距离计算(例如,基于三角不等式)。例如,第一条件语句(ifu(x)>s(c(x))then)、第二条件语句(ifu(x)>l(x,c)∧u(x)>1/2d(c,c(x))then)、以及第四条件语句(ifu(x)>l(x,c)∨u(x)>1/2d(c,c(x))then)可各自基于三角不等式来过滤冗余/不必要计算。

布尔变量r可被利用来指示下界l/上界u中的近似值可能不是最新的。在此情形中,assign-clusters程序可计算最新距离值并存储它们。有利地,仅当质心在上一迭代中已改变其位置时,或者当某些新质心已移动至与第四条件语句成立的给定点足够近时,触发距离计算。

在某些其他k-均值技术中,将点指派给聚类可执行x中每个点x与c中每个质心之间的距离计算,并寻找最靠近聚类。然而,这些计算中的许多计算是冗余和/或不必要的。如果点x当前被指派给质心c,则直观地,不需要检查到某些远处质心c’的距离。有利地,中间结构l和u可通过提供适当的下界和上界来帮助定义何时质心c’可能在远处。在文本文档或其他高维空间中,例如,距离计算可对k-均值技术的整体性能具有最显著的影响。有利地,通过减少或避免冗余/不必要的距离计算,一些实施例可通过显著因子来加速。

在不限于特定实现的情况下,用于更新质心位置以及某些中间结构的伪代码例程可被称为update(更新):

第一循环(forallc∈cdo)可计算每个质心的新位置(例如,计算给定聚类中所有点的平均)。在那之后,upd向量可被更新(例如,如果质心在迭代中已移动,则信息可被存储在向量upd中)。第二循环(forallx∈xdo)可包括对存储在l和u中的下界/上界的更新。update程序可利用被命名为mov的质心的相对移动的向量。在第三循环(forallc∈cdo)中,可利用三角不等式来对x中每个点与c中质心的新下界求近似值(l(x,c)←max{0,l(x,c)-mov(c)})。此近似值可维持不变直到确切结果可代替该近似值(例如,通过assign-clusters程序)。

一些实施例可通过利用角距离作为距离函数来增强和/或优化各种文本聚类化应用。在一些实施例中,角距离可多少与余弦相似度相关。一些实施例可包括点x与y之间的角距离,该角距离可被描述为点x和y与顶点0(例如,空间中的零向量)之间的角。例如,xa与xb之间关于sc的角距离da为余弦相似度:

da(xa,xb)=arccos(sc(xa,xb))=arccos((xa·xb)/(||xa||2×||xb||2))

=arccos(cos(θ))=θ

其中sc对应于余弦相似度,而其中点字符对应于欧几里德点积(例如,而×字符可被视为量值、范数、或欧几里德范数/长度)。因此,对于经计算的余弦相似度,角距离可通过将arccos函数应用于余弦相似度函数来确定。有利地,可在一些实施例中计算角距离的方法可提供伪度量(例如,伪度量空间可以是其中两个不同点之间的距离可为零的一般化度量空间)。因此,角距离函数对于本文所描述的涉及三角不等式的捷径可能是特别有用的,因为与不展示伪度量特性的余弦相似度相比,该计算适用于此函数(例如,基于子可加性/三角不等式)。

文本聚类化可能是数据挖掘的重要范围。文本聚类化可被视为反映人们在阅读文档、书籍、网络文章或者甚至广告内容时如何思考、分组和分类。文本聚类化的另一应用可包括创建在某些大数据环境中必须被高度优化的搜索和评分引擎。某些实施例可利用如本文所描述的角k-均值技术来对文本文档有利地聚类。使用单元球面,可应用角距离来测量文档之间的距离,并且某些实施例可采用本文所描述的各种中间结构中的一个或多个或者全部来实现角k-均值技术的快速版本。某些实施例对以下各项是特别有用的:数据挖掘库、开源或闭源应用、商业产品(诸如,spark、mlib、intelatk、inteltap)、或专注于文本挖掘、文本分类、标签系统、推荐系统、日志监视、搜索引擎、生物医学文本挖掘、新闻分析(包括贸易系统)、情感分析、测试案例执行日志等的其他应用。

与其他k-均值技术相比,本文描述的一些实施例可包括好得多的距离计算性能以及实时时钟时间性能两者。在针对美国人口普查数据1990数据集、reuters(路透社)r52数据集、以及usenet(世界性新闻组网络)20新闻组数据集的性能比较中,某些实施例在聚类化方面示出同样的结果(例如,所有文本文档被分组至同一聚类集中),同时角k-均值技术的实施例在距离计算加速和实时时间时钟加速方面示出显著较好的性能。

图7示出可实现本文所描述的方法30(图3a至3c)、方法60(图6)、和/或各种伪代码例程的一个或多个方面的数据分组器装置130(132a-132c)。数据分组器装置132(其可包括逻辑指令、可配置逻辑、固定功能硬件逻辑)可易于取代早已讨论过的逻辑13(图1)、逻辑22(图2)或数据分组器40(图4)。角距离计算器132b可被配置成计算数据对象与数据对象组之间的角距离。界限检查器132a可被配置成基于三角不等式确定数据对象组的上界和下界中的一个或多个。界限检查器132a还可被配置成确定数据对象是否位于数据对象组的上界与下界内,以及有利地避免冗余或不必要的计算(例如,角距离计算器132b可响应于数据对象被界限检查器132a确定为位于数据对象组的上界与下界内来计算数据对象与数据对象组之间的角距离)。组选择器132c可基于所确定角距离来将数据对象指派给适当的数据对象组。

数据分组器装置132还可维持相应数据对象组之间距离的k乘k矩阵,其中k对应于数据对象组的目标数量。在一些实施例中,数据分组器装置132还可维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量。例如,数据集可包括文本文档集,并且数据对象可以是个体文本文档。

现转向图8,数据分组器134(134a、134b)被示出,其中逻辑134b(例如,晶体管阵列和其他集成电路/ic组件)被耦合至衬底134a(例如,硅、蓝宝石、砷化镓)。逻辑134b一般可实现本文所描述的方法30(图3a至3c)、方法60(图6)、和/或各种伪代码例程的一个或多个方面。因此,逻辑134b可被配置成确定数据对象与数据对象组之间的角距离,以及基于所确定角距离来将数据对象指派给数据对象组。例如,逻辑134b可基于三角不等式确定数据对象组的上界和下界中的一个或多个。在一些实施例中,逻辑134b可进一步被配置成确定数据对象是否位于数据对象组的上界与下界内,以及响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离。逻辑134b还可维持相应数据对象组之间距离的k乘k矩阵,其中k对应于数据对象组的目标数量。在一些实施例中,逻辑134b还可维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量。在本文实施例中的任一个中,数据集可包括文本文档集。在一个示例中,装置134是半导体管芯、芯片和/或封装。

图9例示了根据一个实施例的处理器核200。处理器核200可以是任何类型的处理器的核,诸如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、或用于执行代码的其他设备。尽管图9中仅例示了一个处理器核200,但处理元件可替换地包括一个以上图9中所例示的处理器核200。处理器核200可以是单线程核,或对于至少一个实施例,处理器核200可以是多线程的,因为处理器核200可包括每个核一个以上硬件线程上下文(或“逻辑处理器”)。

图9还例示了耦合到处理器核200的存储器270。存储器270可以是本领域技术人员已知的或以其他方式对本领域技术人员可用的各种各样的存储器(包括存储器层级的各个层)中的任何一种。存储器270可包括要由处理器核200执行的一个或多个代码213指令,其中代码213可实现已讨论的方法30(图3a至3c)、方法60(图6)和/或本文所描述的各种伪代码例程的一个或多个方面。处理器核200遵循由代码213指示的指令的程序序列。每条指令可进入前端部分210并由一个或多个解码器220处理。解码器220可生成微操作(诸如,按预定义格式的固定宽度的微操作)作为其输出,或者可生成反映原始代码指令的其他指令、微指令或控制信号。所例示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,这些逻辑一般分配资源并将与转换指令相对应的操作进行排队以供执行。

处理器核200被示为包括具有一组执行单元255-1到255-n的执行逻辑250。一些实施例可以包括专用于特定功能或功能集的多个执行单元。其他实施例可包括仅一个执行单元或可执行特定的功能的仅一个执行单元。所例示的执行逻辑250执行由代码指令指定的操作。

在完成执行由代码指令指定的操作之后,后端逻辑260引退代码213的指令。在一个实施例中,处理器核200允许乱序执行,但是要求指令的有序引退。引退逻辑265可采取如本领域技术人员已知的各种形式(例如,重排序缓冲器等等)。以此方式,至少在由解码器生成的输出、由寄存器重命名逻辑225利用的硬件寄存器和表、以及由执行逻辑250修改的任何寄存器(未示出)方面,处理器核200在代码213的执行期间被转换。

尽管在图9中未例示,但处理元件可包括与处理器核200一起在芯片上的其他元件。例如,处理元件可包括与处理器核200一起的存储器控制逻辑。处理元件可包括i/o控制逻辑和/或可包括与存储器控制逻辑集成的i/o控制逻辑。处理元件也可以包括一个或多个高速缓存。

现在参考图10,所示为根据实施例的系统1000实施例的框图。图10中所示出的是多处理器系统1000,该多处理器系统包括第一处理元件1070和第二处理元件1080。尽管示出了两个处理元件1070和1080,但是要理解,系统1000的实施例还可包括仅一个此类处理元件。

系统1000被例示为点对点互连系统,其中第一处理元件1070和第二处理元件1080经由点对点互连1050相耦合。应当理解,图10中所例示的互连中的任何或全部可被实现为多分支总线而不是点对点互连。

如图10中所示,处理元件1070和1080中的每一者可以是包括第一和第二处理器核(即,处理器核1074a和1074b以及处理器核1084a和1084b)的多核处理器。此类核1074a、1074b、1084a、1084b可被配置成以与上面结合图9所讨论的方式类似的方式来执行指令代码。

每个处理元件1070、1080可包括至少一个共享高速缓存1896a、1896b(例如,静态随机访问存储器/sram)。共享高速缓存1896a、1896b可存储分别由处理器的一个或多个组件(诸如,核1074a、1074b以及1084a、1084b)利用的数据(例如,对象、指令)。例如,共享高速缓存1896a、1896b可本地地高速缓存存储器1032、1034中所存储的数据以供处理器的各组件的更快速访问。在一个或多个实施例中,共享高速缓存1896a、1896b可包括一个或多个中级高速缓存(诸如,2级(l2)、3级(l3)、4级(l4)、或其他级的高速缓存)、末级高速缓存(llc)和/或其组合。

虽然被示出为仅具有两个处理元件1070、1080,但要理解,各实施例的范围并不受限于此。在其他实施例中,在给定的处理器中可存在一个或多个附加处理元件。替换地,处理元件1070、1080中的一者或多者可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。例如,(诸)附加处理元件可包括与第一处理器1070相同的(诸)附加处理器、与第一处理器1070异构或不对称的(诸)附加处理器、加速器(诸如举例而言,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列、或任何其他处理元件。在包括架构、微架构、热、功耗特性等一系列品质度量方面,处理元件1070、1080之间可存在各种差异。这些差异自身可有效地表现为处理元件1070、1080之中的不对称性和异构性。对于至少一个实施例,各种处理元件1070、1080可驻留在相同的管芯封装中。

第一处理元件1070可进一步包括存储器控制器逻辑(mc)1072以及点对点(p-p)接口1076和1078。类似地,第二处理元件1080可包括mc1082以及p-p接口1086和1088。如图10中所示,mc1072和1082将处理器耦合到相应的存储器,即存储器1032和存储器1034,这些存储器可以是本地附连到相应处理器的主存储器的部分。虽然mc1072和1082被例示为集成到处理元件1070、1080中,但对于替换实施例,mc逻辑可以是处理元件1070、1080外部的分立逻辑,而不是被集成于其中。

第一处理元件1070和第二处理元件1080可分别经由p-p互连1076、1086耦合至i/o子系统1090。如图10中所示,i/o子系统1090包括tee1097(例如,安全控制器)以及p-p接口1094和1098。此外,i/o子系统1090包括将i/o子系统1090与高性能图形引擎1038耦合的接口1092。在一个实施例中,可使用总线1049将图形引擎1038耦合到i/o子系统1090。替换地,点对点互连可耦合这些组件。

进而,i/o子系统1090可经由接口1096耦合至第一总线1016。在一个实施例中,第一总线1016可以是外设组件互连(pci)总线,或诸如高速pci总线或另一第三代i/o互连总线之类的总线,尽管各实施例的范围并不受限于此。

如图10中所示,各种i/o设备1014(例如,相机、传感器)可与总线桥1018一起耦合到第一总线1016,该总线桥1018可将第一总线1016耦合至第二总线1020。在一个实施例中,第二总线1020可以是低引脚计数(lpc)总线。各种设备可以被耦合至第二总线1020,在一个实施例中,这些设备包括例如键盘/鼠标1012、网络控制器/(诸)通信设备1026(其进而可以与计算机网络通信),以及可包括代码1030的例如盘驱动器或者其他大容量存储设备的数据存储单元1019。代码1030可包括用于执行上述一种或多种方法的诸个实施例的指令。因此,所例示代码1030可实现已讨论的方法30(图3a至3c)、方法60(图6)、和/或本文所描述的各种伪代码例程的一个或多个方面,并且可与已讨论的代码213(图9)类似。此外,音频i/o1024可被耦合至第二总线1020。

注意,构想了其他实施例。例如,系统可实现多分支总线或者另一此类通信拓扑,而不是图10的点对点架构。

附加注解与示例:

示例1可包括电子处理系统,包括处理器;通信地耦合至处理器的存储器;以及通信地耦合至处理器的逻辑,用于确定数据对象与数据对象组之间的角距离,以及基于所确定角距离来将数据对象指派给数据对象组。

示例2可包括示例1的系统,其中逻辑进一步用于基于三角不等式确定数据对象组的上界和下界中的一个或多个。

示例3可包括示例2的系统,其中逻辑进一步用于确定数据对象是否位于数据对象组的上界与下界内,以及响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离。

示例4可包括示例3的系统,其中逻辑进一步用于维持相应数据对象组之间的距离的k乘k矩阵,其中k对应于数据对象组的目标数量。

示例2可包括示例3至4中任一项的系统,其中逻辑进一步用于维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量。

示例6可包括示例5的系统,其中数据集包括文本文档集。

示例7可包括半导体封装装置,包括衬底;耦合至衬底的逻辑,其中逻辑以可配置逻辑或固定功能硬件逻辑中的一个或多个来实现,耦合至衬底的逻辑用于:确定数据对象与数据对象组之间的角距离,以及基于所确定角距离将数据对象指派给数据对象组。

示例8可包括示例7的装置,其中逻辑可基于三角不等式确定数据对象组的上界和下界中的一个或多个。

示例9可包括示例8的装置,其中逻辑进一步用于确定数据对象是否位于数据对象组的上界与下界内,以及响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离。

示例10可包括示例9的装置,其中逻辑进一步用于维持相应数据对象组之间的距离的k乘k矩阵,其中k对应于数据对象组的目标数量。

示例11可包括示例9至10中任一项的装置,其中逻辑进一步用于维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量。

示例12可包括示例11的装置,其中数据集包括文本文档集。

示例13可包括对数据对象分组的方法,包括确定数据对象与数据对象组之间的角距离,以及基于所确定角距离来将数据对象指派给数据对象组。

示例14可包括示例13的方法,进一步包括基于三角不等式确定数据对象组的上界和下界中的一个或多个。

示例15可包括示例14的方法,进一步包括确定数据对象是否位于数据对象组的上界与下界内,以及响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离。

示例16可包括示例15的方法,进一步包括维持相应数据对象组之间的距离的k乘k矩阵,其中k对应于数据对象组的目标数量。

示例17可包括示例15至16中任一项的方法,进一步包括维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量。

示例18可包括示例17的方法,其中数据集包括文本文档集。

示例19可包括至少一种计算机可读介质,包括指令集,该指令集在由计算设备执行时,使计算设备:确定数据对象与数据对象组之间的角距离,以及基于所确定角距离将数据对象指派给数据对象组。

示例20可包括示例19的至少一种计算机可读介质,包括进一步的指令集,该指令集在由计算设备执行时,使计算设备基于三角不等式确定数据对象组的上界和下界中的一个或多个。

示例21可包括示例20的至少一种计算机可读介质,包括进一步的指令集,该指令集在由计算设备执行时,使计算设备确定数据对象是否位于数据对象组的上界与下界内,以及响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离。

示例22可包括示例21的至少一种计算机可读介质,包括进一步的指令集,该指令集在由计算设备执行时,使计算设备维持相应数据对象组之间的距离的k乘k矩阵,其中k对应于数据对象组的目标数量。

示例23可包括示例21至22中任一项的至少一种计算机可读介质,包括进一步的指令集,该指令集在由计算设备执行时,使计算设备维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵,以及维持每个数据对象相应上界的大小为n的数组,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量。

示例24可包括示例23的至少一种计算机可读介质,其中数据集包括文本文档集。

示例25可包括数据分组器设备,包括用于确定数据对象与数据对象组之间的角距离的装置,以及用于基于所确定角距离来将数据对象指派给数据对象组的装置。

示例26可包括示例25的设备,进一步包括用于基于三角不等式确定数据对象组的上界和下界中的一个或多个的装置。

示例27可包括示例26的设备,进一步包括用于确定数据对象是否位于数据对象组的上界与下界内的装置,以及用于响应于数据对象被确定为位于数据对象组的上界与下界内来确定数据对象与数据对象组之间的角距离的装置。

示例28可包括示例27的设备,进一步包括用于维持相应数据对象组之间的距离的k乘k矩阵的装置,其中k对应于数据对象组的目标数量。

示例29可包括示例27至28中任一项的设备,进一步包括用于维持每个数据对象与每个数据对象组的相应下界的n乘k矩阵的装置,以及用于维持每个数据对象相应上界的大小为n的数组的装置,其中n对应于数据集中数据对象的总数量,而其中k对应于数据对象组的目标数量。

示例30可包括示例29的设备,其中数据集包括文本文档集。

各实施例适用于与各种类型的半导体集成电路(“ic”)芯片一起使用。这些ic芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(pla)、存储器芯片、网络芯片、芯片上系统(soc)、ssd/nand控制器asic等等。另外,在一些附图中,信号导线是用线表示的。某些线可以是不同的,以表示更具构成性的信号路径,具有数字标号以表示构成性信号路径的数目,和/或在一端或多端具有箭头以表示主要信息流向。但是,这不应以限制性方式来解释。相反,这种增加的细节可与一个或多个示例性实施例结合使用于便更容易地理解电路。任何所表示的信号线,不管是否具有附加信息,实际上都可包括一个或多个信号,这一个或多个信号可在多个方向上行进,并且可用任何适合类型的信号方案来实现,例如,利用差分对来实现的数字或模拟线路、光纤线路,和/或单端线路。

示例尺寸/模型/值/范围可能已经被给出,但是各实施例不限于此。随着制造技术(例如,光刻法)随时间的成熟,可望能制造出更小尺寸的设备。另外,为了例示和说明的简单,与ic芯片公知的功率/接地连接和其它组件可在附图中示出也可不示出,并且这样做也是为了不使所述实施例的某些方面变得晦涩。此外,各种配置可以方框图形式示出以避免使各实施例变得晦涩,并鉴于相对于这些方框图配置的实现的具体细节很大程度地依赖于所述实施例实现的平台这一事实,即这些具体细节应当落在本领域内技术人员的眼界内。在阐述具体细节(例如电路)以描述示例性实施例的情形下,显然本领域内技术人员能不经过这些具体细节或对这些具体细节作出变化地实现各实施例。说明书因此被视为是示例性的而不是限制性的。

术语“耦合”在本文中被用于表示所讨论的组件之间的任何类型的直接或间接关系,且可应用于电气的、机械的、流体的、光学的、电磁的、机电的或其他连接。另外,术语“第一”、“第二”等等本文只用于便于讨论,没有特定时间的或按时间顺序的意义,除非另有陈述。

如在本申请和权利要求书中所使用的,由术语“一个或多个”联接的项列表可以意味着列举的项的任何组合。例如,短语“a、b和c中的一个或多个”以及短语“a、b或c中的一个或多个”两者可意指a;b;c;a和b;a和c;b和c;或a、b和c。

本领域内技术人员从前面的描述将可以理解,所述实施例的广泛技术可以用多种形式来实现。因此,尽管已结合其特定示例描述了所述实施例,然而所述实施例的真实范围不受此限,因为本领域内技术人员在研究附图、说明书和下面的权利要求书之后很容易理解其它的修正形式。

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