首页> 中国专利> 一种基于隐含狄利克雷分配模型的并行数据处理方法

一种基于隐含狄利克雷分配模型的并行数据处理方法

摘要

本发明公开了一种基于隐含狄利克雷分配模型的并行数据处理方法,属于数据挖掘领域,该方法包含了多进程并行处理、多线程并行处理和复合多进程多线程处理三种方案,在这三种方案中都将要处理的数据DM分成长度为等长或不等长的数据片段,每个数据片段都有一个索引,每个计算进程/线程通过申请索引来处理对应的数据片段,进而获得每个数据项的主题信息并生成局部充分统计量;处理完整个DM后,通过归并局部充分统计量,得到全局充分统计量,即可估计得到当前模型Mi,直到该模型收敛。该方法能够充分利用单机上的多内核并行架构和多机上的机群大规模并行能力,进而实现对大规模文本集合的高速处理,并能有效降低并行处理过程中内存的使用量。

著录项

  • 公开/公告号CN101359333A

    专利类型发明专利

  • 公开/公告日2009-02-04

    原文格式PDF

  • 申请/专利权人 中国科学院软件研究所;

    申请/专利号CN200810126728.3

  • 发明设计人 李文波;孙乐;

    申请日2008-06-20

  • 分类号G06F17/30(20060101);

  • 代理机构北京君尚知识产权代理事务所;

  • 代理人余长江

  • 地址 100190 北京市海淀区中关村南四街4号

  • 入库时间 2023-12-17 21:23:40

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-10

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20100616 终止日期:20170620 申请日:20080620

    专利权的终止

  • 2010-06-16

    授权

    授权

  • 2009-04-01

    实质审查的生效

    实质审查的生效

  • 2009-02-04

    公开

    公开

说明书

技术领域

本发明涉及一种文本数据挖掘方法,尤其涉及一种基于隐含主题文本表示的高效数据处理方法,属于计算机数据挖掘领域。

背景技术

计算机数据挖掘

计算机数据挖掘是指利用计算机从大量数据中获取有效、有用、可理解的信息或知识的智能信息处理过程。早期的计算机数据挖掘主要集中在对数据库系统中规则的数值型数据进行挖掘,而随着互联网规模的持续扩展和应用的极大丰富,计算机数据挖掘也逐步转向互联网信息处理方面。互联网承载的数据的与数据库系统中的数据有很大不同:首先,互联网上的数据以自然语言书写的文本为主,而数据库系统中的数据以数值型为主;再者,互联网上的数据主要服务于信息传播和获取,而数据库系统中的数据以事务处理和管理决策为主要任务;第三,从数据量上比较,互联网上的数据量远大于一般的事务型数据库的数据量。所以,面向互联网的计算机信息挖掘,首先就要处理文本数据的表示问题;再者,数据挖掘的结果要服务于信息的传播和获取这一根本目标;第三,需要高效的数据处理方法处理互联网上的大规模文本数据。

文本数据表示方法、信息传播和获取

常见的文本数据表示方法可分为两种主要的类型,一种类型仅基词信息的文本数据表示方法,其代表是向量空间方法(Vector Space Model)(参考:Salton,G.The SMARTRetrieval System.Englewood Cliffs,Prentice-Hall,1971.),但是这类方法存在信息量损失大、数据稀疏度高等对文本信息处理不利的问题。所以人们提出另一种基于主题信息的文本数据表示方法,其代表是隐含狄利克雷分配方法(Latent Dirichilet Allocation)(参考:D.Blei,A.Ng,M.Jordan.Latent Dirichlet Allocation[J].Journal of Machine Learning Research,January 2003,3:993-1022.),该方法的主要功能是通过对一定数量的文本利用统计手段进行分析后,挖掘出该文本集合论述的若干主题,并且能对新文本中讨论的主题及其比重进行分析。这样文本信息处理就可以摆脱以往完全依赖于词汇的低级处理方式,可以在主题这个更高的层次上进行,另外,隐含狄利克雷分配方法还是同类的许多其他模型的基础。所以,隐含狄利克雷分配方法在计算机信息检索和过虑、文本的分类和组织等互联网信息传播和获取中有广泛的应用。

高效的数据处理方法

虽然隐含狄利克雷分配方法从功能上提供了一种高层次文本表示和数据挖掘的理想手段,但是其经典的串行计算实现方法存在严重的瓶颈,所以非常有必要研究并行处理方法,这方面的工作有:Newman等人Gibbs方法(参考:David Newman,Arthur Asuncion,PadhraicSmyth,Max Welling.Distributed Inference for Latent Dirichlet Allocation,NIPS2007)和Nallapati等人的变分方法(参考:Nallapati,R.,Cohen,W.,Lafferty,J..Parallelized VariationalEM for Latent Dirichlet Allocation:An experimental evaluation of speed and scalability,In:proceeding of Seventh IEEE International Conference on Data Mining Workshop on highperformance data mining,Omaha,NE,USA,2007,pp:349-354)。我们的发明是针对Nallapati等人的变分方法的改进。

当前高性能计算技术的最突出的趋势就是从以往单追求CPU的高时钟频率和单内核计算能力提升转到多内核系统(参考Wei-Wu Hu,Rui Hou,Jun-Hua Xiao,Long-Bin Zhang.High Performance General-Purpose Microprocessors:Past and Future.J.Comput.Sci.Technol.2006,21(5):631-640)。另外,从近几年的高性能计算机国际top500(www.top500.org)以及国内top100(www.samss.org.cn)的相关统计看,采用集群技术的系统占有主导地位,是许多高性能计算任务的平台。因此需要针对这两种使用最广泛的高性能计算环境,即单机上的多内核(包括多处理器)并行架构和多机上的机群并行架构设计出并行数据处理方法。

发明内容

本发明的目的是,针对隐含狄利克雷分配模型设计高效的并行计算方法,以充分挖掘高性能硬件设施的计算能力,最终提高该模型处理数据的时间效率和空间效率。

本发明提供了三种技术方案,概述如下:

一种基于隐含狄利克雷分配模型的并行数据处理方法,对于多进程并行处理,其步骤包括:

1)根据节点计算机的硬件并发能力自动生成具有相应数量计算进程;

2)输入要处理的数据集,随机给出初始模型M0

3)将数据集分成若干数据片段,每个数据片段包含若干文档,且有一个索引;

4)每个计算进程申请一个索引处理相应数据片段,并计算生成局部充分统计量;

5)归并局部充分统计量,得到全局充分统计量,进而估计得到当前模型Mi

6)判断模型Mi是否收敛,收敛则完成计算,否则从步骤3)开始循环。

一种基于隐含狄利克雷分配模型的并行数据处理方法,对于多线程并行处理,其步骤包括:

1)根据节点计算机的硬件并发能力自动生成具有相应数量计算线程;

2)输入要处理的数据集,随机给出初始模型M0

3)将数据集分成若干数据片段,每个数据片段包含若干文档,且有一个索引;

4)每个计算线程申请一个索引处理相应数据片段,并计算生成局部充分统计量;

5)归并局部充分统计量,得到全局充分统计量,进而估计得到当前模型Mi

6)判断模型Mi是否收敛,收敛则完成计算,否则从步骤3)开始循环。

一种基于隐含狄利克雷分配模型的并行数据处理方法,对于复合并行处理,其步骤包括:

1)根据节点计算机的硬件并发能力自动生成具有相应数量计算线程;

2)输入要处理的数据集,随机给出初始模型M0

3)将数据集分成若干数据片段,每个数据片段包含若干文档,且有一个索引;

4)计算进程申请一个索引处理相应数据片段;

5)将步骤4)中的数据片段再分为若干片段,且有一个索引,进程中的每个计算线程申请处理一个索引处理数据片段,并计算生成局部充分统计量;

6)归并局部充分统计量,得到全局充分统计量,进而估计得到当前模型Mi

7)判断模型Mi是否收敛,收敛则完成计算,否则从步骤3)开始循环。

第一种,多进程并行处理方案:核心要素是利用进程作为软件并行单元,通过将数据处理任务合理地分配在多个进程上从而获得数据处理效率的提高。这一方案的关键是数据在多个进程间的分配方法,通过控制每个计算进程每次只申请和处理少量数据保证所有的计算进程接近同时结束,这样的动态数据分配方法就实现了良好的进程间负载均衡。进程分配数据片段长度L的取值原则是要远小于文档数量M,即1≤L<<M。该方案的处理流程如下:

0.输入:

DM           文档矩阵

K            主题数

P            计算进程数

L            进程分配数据片段长度

1.随机初始化模型参数α,β;将全局充分统计量S清零。

2.循环直到收敛

2.1.对于每个计算进程p∈{1,…,P}

2.1.1.向控制进程申请一个长为L的数据片段DLp的索引

2.1.2.对DLp中的每个文档d∈{1,…,L}

2.1.2.1.基于当前模型参数α,β进行变分推断,得到文档d的主题信息;

2.1.2.2.利用推断结果计算文档d的局部充分统计量Spd

2.1.2.3.聚合局部充分统计量Sp=Sp+Spd

2.2.聚合全局充分统计量S=S+Sp

2.3.利用S估计新的模型参数α,β

3.输出:最终模型参数α,β及数据集DM每一篇文档的主题信息。

第二种,多线程并行方案:核心要素是利用线程作为软件并行单元,通过将数据处理任务合理地分配在多个线程上从而获得数据处理效率的提高。这一方案的关键是数据在多个线程间的分配方法,通过控制每条计算线程每次只申请和处理少量数据保证所有的计算线程接近同时结束,这样的动态数据分配方法就实现了良好的线程间负载均衡。线程分配数据片段长度l的取值原则是尽可能小,所以一般取l=1即可。该方案的处理流程如下:

0.输入:

DM           文档矩阵

K            主题数

T            计算线程数

l            线程分配数据片段长度

1.随机初始化模型参数α,β;将充分统计量S清零。

2.循环直到收敛

2.1.对于每条计算线程t∈{1,…,T}

2.1.1.从DM中申请一个长为l的数据片段Dlt的索引

2.1.2.对Dlt对应的每个文档d∈{1,…,l}

2.1.2.1.基于当前模型参数α,β进行变分推断,得到文档d的主题信息;

2.1.2.2.利用推断结果计算文档d的充分统计量Std

2.1.2.3.聚合充分统计量S=S+Std

2.2.利用S估计新的模型参数α,β

3.输出:最终模型参数α,β及数据集DM每一篇文档的主题信息。

第三种,复合并行方案:核心要素是将进程和线程这两种软件并行单元结合在一起,数据处理任务由多个计算节点上的进程协同完成,每个计算节点上采用(单进程)多线程并行的方式进行数据处理,所以该方案综合了多进程并行方案和多线程并行方案的优点,不仅能利用机群提供的大规模并行计算能力而且能最小化机群的每台计算机的内存使用和调度消耗。复合并行方案的关键之处在于采用2级动态负载均衡方法:第一级,通过控制每个计算进程每次只申请和处理少量数据保证所有的计算进程接近同时结束,这样的动态数据分配方法就实现了良好的进程间负载均衡;第二级,通过控制每条计算线程每次只申请和处理少量数据保证所有的计算线程接近同时结束,这样的动态数据分配方法就实现了良好的线程间负载均衡。并且这两级负载均衡方法是相互促进的。复合并行方案中,进程分配数据片段长度Lp的取值原则是要远小于文档数量M,即1≤Lp<<M;另外由于每个进程所在计算机的硬件并发规模(如CPU数量、内核数量)不同,所以应该让Lp的取值同该进程所在计算机的硬件并发规模成正比。线程分配数据片段长度l的取值原则是尽可能小,所以一般取l=1即可。该方案的处理流程如下:

0.输入:

DM           文档矩阵

K            主题数

P            计算进程数

Tp           进程p的计算线程数

Lp           进程p分配数据片段长度

l            线程分配数据片段长度

1.随机初始化模型参数α,β;将全局充分统计量S清零。

2.循环直到收敛

2.1.对于每个计算进程p∈{1,…,P}

2.1.1.向控制进程申请一个长为Lp的数据片段的索引

2.1.2.对于该进程的每条计算线程t∈{1,…,Tp}

2.1.2.1.从中申请一个为l的数据片段Dlpt的索引

2.1.2.2.对Dlpt对应的每个文档d∈{1,…,l}

2.1.2.2.1.基于当前模型参数α,β进行变分推断,得到文档d的主题信息;

2.1.2.2.2.利用推断结果计算文档d的充分统计量Std

2.1.2.2.3.聚合局部充分统计量Sp=Sp+Std

2.2.聚合全局充分统计量S=S+Sp

2.3.利用S估计新的模型参数α,β

3.输出:最终模型参数α,β及数据集DM每一篇文档的主题信息。

本发明涉及以下所述的关键要素:

一)适应不同计算环境的多粒度并行数据处理方案

本发明针对不同硬件计算环境(单机计算环境和多机计算环境)设计了三种粒度的并行数据处理方案,分别是多进程并行方案、多线程并行方案、复合并行方案,对应关系如下表所示:

1.多进程并行方案是最容易实现的方案。该方案中每个计算进程自身都是串行的,所以直接使用已有的串行算法即可,只需在控制进程中通过数据分配即可实现多个计算进程并行,该方案的可以较好适应于单机、多机两种计算环境。但是从最终的计算效率上不及其他两种方案,而且由于单个计算节点上需要运行多个程序而导致管理成本较高。

2.对于单机环境而言,最优方案是多线程并行方案,因为线程的调度消耗和资源消耗都比进程小,而且单一程序便于在运行时管理。

3.对于多机环境而言,最优方案是复合并行方案,因为首先可以通过多进程实现了跨越机器的并行计算,每个计算节点上只需一个计算进程,降低了运行时的管理成本;而且,计算节点上采用多线程并行,发挥了线程的调度消耗和资源消耗小的优势。所以复合并行方案能够同时利用单机上的多内核并行架构和多机上的机群大规模并行这两种计算能力。

二)基于动态分配数据片段的负载均衡的方法

本发明的动态分配的负载均衡算法是将数据集分成很小的片段(Segment)对每个并行计算单元(进程/线程)进行分配:

(1)多进程并行方案中:记片段的长度为L(L远小于数据集中包含的文档数M,可以将静态等分看成一种特例,此时L=M/P)。注意到当一个计算进程处理完一个片段后,立即申请下一个片段,而且每个进程都进行这样申请和计算,直到所有的文档被处理完毕。如果数据集中还有等于或超过L个文档存在,那么就不会有任何一条计算进程结束。也就是说所有计算进程至少可以一直运行到还有小于L个未处理的文档的时候。又由于L可以选择很小,所以可以说“几乎”全部计算资源都被并行计算过程利用,即便是在最极端的情形下,最多只会有L个文档的计算量不能被并发处理。通过给L不同的值,可以非常方便地实现对并发粒度的控制,一般要选择一个远小于文档数M的值。通过控制每个计算进程每次只申请和处理少量数据保证所有的计算进程接近同时结束,这样的动态数据分配方法就实现了良好的进程间负载均衡。

(2)多线程并行方案中:记片段的长度为l(l远小于数据集中包含的文档数M,可以将静态等分看成一种特例,此时l=M/P)。注意到当一个计算线程处理完一个片段后,立即申请下一个片段,而且每个线程都进行这样申请和计算,直到所有的文档被处理完毕。如果数据集中还有等于或超过l个文档存在,那么就不会有任何一条计算线程结束。也就是说所有计算线程至少可以一直运行到还有小于l个未处理的文档的时候。又由于L可以选择很小,所以可以说“几乎”全部计算资源都被并行计算过程利用,即便是在最极端的情形下,最多只会有l个文档的计算量不能被并发处理。一般要选择l=1实现最大的并发度。通过控制每条计算线程每次只申请和处理少量数据保证所有的计算线程接近同时结束,这样的动态数据分配方法就实现了良好的线程间负载均衡。

(3)复合并行方案中:存在2级动态负载均衡过程,首先通过要在进程之间动态份分配数据片段,然后将进程分得的数据片段在该进程的多个线程之间进一步动态分配。进程分配数据片段长度Lp的取值原则是要远小于文档数量M,即1≤Lp<<M;另外由于每个进程所在计算机的硬件并发规模(如CPU数量、内核数量)不同,所以应该让Lp的取值同该进程所在计算机的硬件并发规模成正比。线程分配数据片段长度l的取值原则是尽可能小,所以一般取l=1即可。第一级,通过控制每个计算进程每次只申请和处理少量数据保证所有的计算进程接近同时结束,这样的动态数据分配方法就实现了良好的进程间负载均衡;第二级,通过控制每条计算线程每次只申请和处理少量数据保证所有的计算线程接近同时结束,这样的动态数据分配方法就实现了良好的线程间负载均衡。并且这两级负载均衡方法是相互促进的。

本发明的基于动态分配数据片段的负载均衡的方法可以克服静态数据分配对并行计算的有负面影响的不利特性:

(1)首先看文档长度和变分算法复杂度这两个特性:文档长度不定会导致不同文档的计算量不等;进一步变分推断算法的计算量与文档长度的平方成正比加剧了不同文档计算量的差距。但是,动态分配算法并不以计算量为计算资源调度的判断依据,而是仅需看是否还有未处理的文档,如果有就分配线程上去。这就避免了将线程和某个数据集绑定而导致先行运算完毕的线程的计算资源的浪费。当然可以通过再分配的策略从未完成的线程中分出部分文档到已经完成的线程中,但是这会增大系统同步控制的复杂性,而且调度也会耗费一定的时间。

(2)再看线程调度的特性:由于操作系统对线程的调度并不是严格公平的,经过长时间的运行后不同线程被操作系统分配的总运行时间的差距拉大。但是,由于动态分配算法能保证了所有线程同时运行到最后,这样从硬件层面看,所有计算线程消耗的硬件计算资源的总和是一样的,不同的仅仅是每个线程获得的量。

(3)当在多机机群环境中,可能存在性能差异非常大的计算机,此时等分文档集的静态数据分配显然不合理;进一步由于多机机群上其他计算任务的存在会引起部分计算机计算资源随机变化,静态数据分配丧失了根据这种变化调整计算的机会,而本发明的动态负载均衡方法可以将计算量根据硬件性能和计算资源的实时情况进行调配。

三)并行计算单元内存使用的优化方法

本发明的两种方案对原来的方法中计算单元内存使用进行了优化:

(1)多线程并行方案中:仅使用了一个全局充分统计量矩阵(sufficient statisticsmatrix),供所有计算线程共享。

(2)复合并行方案中:也自然继承了多线程并行方案的优点,每个计算节点上只需一个计算进程,进程中所有线程共用一个局部充分统计量矩阵(sufficient statistics matrix)。

本发明避免了以往方法的问题:首先,以往方法为每个线程设计独立的充分统计量矩阵(sufficient statistics matrix),将对内存需求造成很大压力;另外,必须等所有线程运行完毕后才统一对充分统计量进行聚合,这样这部分运算就成了串行运算,降低了算法的并行程度。

四)基于索引请求的数据片段分配方法

本发明采用一种高效的基于索引请求的数据片段分配方法,即不需要将数据实体在计算单元(进程/线程)之间进行分配和传递,而仅需分配和传递索引,每个数据片段有其对应的索引,每篇文档有其对应的索引号,用整数表示即可,所占的空间远小于文档实体本身,计算单元可以根据获得的索引来定位和处理数据实体,因而分配和传递的速度提高和相应程序的复杂度下降。

五)基于数据复制的跨机器数据访问方法

本发明的两种方案对原来的方法中,在多机机群计算环境下的数据访问方法进行了优化:

(1)多进程并行方案中:在每个计算节点上复制且仅一份数据集DM,该计算节点上的所有计算进程共享这个数据集,计算进程从总控进程获得数据片段的索引后,依据索引访问并处理DM中相应的文档即可。

(2)复合并行方案中:在每个计算节点上复制且仅一份数据集DM供该计算节点上的计算进程访问。计算进程从总控进程获得数据片段的索引后,由计算线程进一步细分这些索引,最后各个计算线程依据索引访问并处理DM中相应的文档。

六)软件并行单元数量的自动确定方法

软件并行单元(即线程和进程)数量要和硬件并行单元(处理器、内核、超线程)数量一致才可以有效发挥硬件平台的并行计算能力:如果软件并行单元数量小于硬件的并行单元数量,则不能完全利用硬件平台的并行计算能力;反之,如果软件并行单元数量大于硬件的并行单元数量,则并行计算能力不再提高而且由于调度对资源的需求而降低有效计算能力。所以一般需要根据具体计算机的硬件并发规模手工配置软件并行单元的数量,但这样做不方便,特别是在多机机群环境下。

本发明通过获得每个节点计算机的处理器的数量和每个处理器所含的内核数量或支持的超线程数量来自动确定该节点的软件并行单元的适宜数量:在windows平台上利用汇编指令直接获得硬件系统的处理器信息,在linux平台上通过对硬件抽象层HAL的功能调用获得硬件系统的处理器信息。这样在采用集群分布式计算的环境下避免了手工配置每个节点的软件并行单元数量的繁琐。对于多进程并行方案,利用该方法可以自动确定每个参与的计算节点所需的进程数量;对于多线程并行方案,利用该方法可以自动确定所在计算机的计算线程的数量;对于混合方案,利用该方法可以自动确定每个参与的计算节点所需的线程数量(由于每个计算节点只需一个进程,所以不需考虑进程数量问题)。

另外,软件并行单元数量确定方法不会排斥手工调整软件并行单元数量,这使得在某些需要控制软件并行单元使用的情形下也是可行的。

七)计算进程数据片段长度的自适应确定方法

复合并行方案需要两级数据动态分配,即首先通过要在进程之间动态分配数据片段,然后将进程分得的数据片段在该进程的多个线程之间进一步动态分配。线程分配数据片段的长度一般取l=1即可获得线程级别的最大并行度;而对于多机机群计算环境下进程之间的数据片段动态分配,所有计算节点不宜使用相同的数据片段长度L,每个计算进程需要根据自身所在节点的并行度分别决定Lp。由于程序可以自动确定自身所在节点的并行度(即CPU数量、内核数量、超线程数量等),进而就可以确定该进程的数据片段长度Lp,即应符合——计算进程p的数据片段长度Lp>计算进程p所在节点的并行度这一原则,这样每次进程分配的数据片段可以让所有计算线程都运行发挥了计算节点的最大计算效率。

八)计算进程数据片段预取方法

在多进程并行方案和复合并行方案中,计算进程向总控进程申请数据片段并进一步处理。为了避免两次申请之间的时间间隙造成的计算资源浪费,采用提前预取数据片段的方法,即在处理前一个数据片段的时候就同时再预取一个数据片段,这样当上一个数据片段被计算进程/计算线程取完之后可以立刻处理新的片段,从而保证了数据处理过程的连续性,让计算节点上的整个数据处理过程发挥了最大计算效率。

与现有技术相比,本发明的方法一方面能够充分利用单机上的多内核并行架构和多机上的机群大规模并行能力,进而实现对大规模文本集合的高速处理;另一方面,该方法能有效降低并行处理过程中内存的使用量。本发明将隐含狄利克雷分配模型文本数据挖掘方法推向实用化。

附图说明

图1为本发明的多进程并行方案多机环境示意图;

图2为本发明的多进程并行方案单机环境示意图;

图3为本发明的多线程并行方案(单机环境)示意图;

图4为本发明的复合并行方案多机环境示意图;

图5为本发明的复合并行方案单机环境示意图;

图6为多机机群计算环境示意图;

其中,K即每个方案中的“主题数”,V是指词表的大小。K和V则确定了矩阵的大小。

具体实施方式

本发明设计的三种并行数据处理方案针对两种使用最广范的高性能计算环境,即,第一种是单机上的多核(包括多处理器)并行架构和多机上的机群并行架构。多内核设计和实现已经在当前的各种类型的计算机中被普遍采用,可以将本发明直接用在这类机器上;本发明对多机机群的使用如网络拓扑结构如图6所示,它由2个基本的组成部分构成的,分别是:一个主控节点和若干个计算节点。主控节点只需一个,主要负责界面交互、数据分发、结果汇总等功能。计算节点有多个(原则上没有数量限制)而且可以选用不同类型的计算机,计算节点承担求解任务的主要计算工作负荷。主控节点和计算节点通过网络连接起来。

本发明根据计算环境和并行数据处理方案的不同而有不同的具体实施方式,现分别说明如下:

第一种计算环境——单机上的多核并行架构

在单机上的多核并行架构上,三种并行数据处理方案都可以实施。

方案一、多进程并行方案的具体实施方式,如图2所示:

1.准备阶段

1.1.启动一个总控进程,准备要处理的数据DM,随机给出初始模型M0

1.2.启动多个计算进程(计算进程的数量可以由程序自动确定);

2.计算阶段(循环)

2.1.随机初始化模型参数α,β,将全局充分统计量S清零,对于每个计算进程p∈{1,…,P},P为计算进程数;

2.1.1每个计算进程循环向总控进程申请长为L的数据片段DLp的索引,如此一直到DLp中所有数据处理完毕;

2.1.2对DLp中的每个文档d∈{1,…,L},L为进程分配的数据片段长度;

2.1.2.1.基于当前模型参数α,β进行变分推断,得到文档d的主题信息;

2.1.2.2.利用推断结果计算文档d的局部充分统计量Spd

2.1.2.3.聚合局部充分统计量Sp=Sp+Spd

2.2.总控进程归并局部充分统计量得到全局充分统计量S=S+Sp,进而估计新的模型参数α,β得到当前阶段的模型Mi及数据集DM每一篇文档的主题信息;

2.3.总控进程判断模型Mi是否收敛,收敛则完成计算,否则再进行下一轮循环。

方案二、多线程并行方案的具体实施方式,如图3所示:

1.1.启动程序,程序自动确定计算线程的数量,准备要处理的数据DM,随机给出初始模型M0

2.计算阶段(循环)

2.1随机初始化模型参数α,β;将全局充分统计量S清零,对于每条计算线程t∈{1,…,T},T为计算线程数;

2.1.1.从DM中申请一个长为l的数据片段Dlt的索引;

2.1.2.对Dlt对应的每个文档d∈{1,…,l},l为线程分配的数据长度;

2.1.2.1.基于当前模型参数α,β进行变分推断,得到文档d的主题信息;

2.1.2.2.利用推断结果计算文档d的局部充分统计量Std

2.1.2.3.聚合全局充分统计量S=S+Std

2.2.用全局充分统计量S估计新的模型参数α,β得到当前阶段的模型Mi及数据集DM每一篇文档的主题信息;

2.3.判断模型Mi是否收敛,收敛则完成计算,否则再进行下一轮循环。

方案三、复合并行方案的具体实施方式,如图5所示:

1.准备阶段

1.1.启动一个总控进程,准备要处理的数据DM,随机给出初始模型M0

1.2.启动一个计算进程(计算进程的线程数量Tp由程序自动确定);

2.计算阶段(循环)

2.1.随机初始化模型参数α,β;将全局充分统计量S清零,对于计算进程p;

2.1.1.向控制进程申请一个长为Lp的数据片段的索引,LP为进程P分配的数据片段长度;

2.1.2.对于该进程的每条计算线程t∈{1,…,Tp},Tp为进程P的计算线程数;

2.1.2.1从中申请一个为l的数据片段Dlpt的索引;

2.1.2.2对Dlpt对应的每个文档d∈{1,…,l}

2.1.2.2.1基于当前模型参数α,β进行变分推断,得到文档d的主题信息

2.1.2.2.2利用推断结果计算文档d的充分统计量Std

2.1.2.2.3聚合局部充分统计量Sp=Sp+Std

2.2.总控进程归并局部充分统计量得到全局充分统计量S=S+Sp,进而估计新的模型参数得到当前阶段的模型Mi及数据集DM每一篇文档的主题信息;

2.3.总控进程判断模型Mi是否收敛,收敛则完成计算,否则进行下一轮循环。

第二种计算环境——多机上的机群并行架构

在多机上的机群并行架构上,可以实施两种并行数据处理方案,即多进程并行方案和复合并行方案,由于单一进程不能跨越计算机所以运行在单一进程空间中的多线程并行方案不能在多机上的机群并行架构上实施。

方案一、多进程并行方案的具体实施方式,如图1所示:

1.准备阶段

1.1.在主控节点的计算机上启动一个总控进程,准备要处理的数据DM,随机给出初始模型M0

1.2.在每个计算节点的计算机上启动多个计算进程(计算进程的数量由程序自动确定);

1.3.在每个计算节点的计算机上复制一份要处理的数据DM

2.计算阶段(循环)

2.1.随机初始化模型参数α,β,将全局充分统计量S清零,对于每个计算进程p∈{1,…,P},P为计算进程数;

2.1.1每个计算进程循环向总控进程申请长为L的数据片段DLp的索引,如此一直到DM中所有数据处理完毕;

2.1.2对DLp中的每个文档d∈{1,…,L},L为进程分配的数据片段长度;

2.1.2.1.基于当前模型参数α,β进行变分推断,得到文档d的主题信息;

2.1.2.2.利用推断结果计算文档d的局部充分统计量Spd

2.1.2.3.聚合局部充分统计量Sp=Sp+Spd

2.2.总控进程归并局部充分统计量得到全局充分统计量S=S+Sp,进而估计新的模型参数α,β得到当前阶段的模型Mi及数据集DM每一篇文档的主题信息;

2.3.总控进程判断模型Mi是否收敛,收敛则完成计算,否则再进行下一轮循环。

方案二、复合并行方案的具体实施方式,如图4所示:

1.准备阶段

1.1.在主控节点的计算机上启动一个总控进程,准备要处理的数据DM,随机给出初始模型M0

1.2.在每个计算节点的计算机上启动一个计算进程(计算进程的线程数量由程序自动确定);

1.3.在每个计算节点的计算机上复制一份要处理的数据DM

2.计算阶段(循环)

2.1.随机初始化模型参数α,β;将全局充分统计量S清零,对于每个计算进程p∈{1,…,P},P为计算进程数;

2.1.1.向控制进程申请一个长为Lp的数据片段的索引,LP为进程P分配的数据片段长度;

2.1.2.对于该进程的每条计算线程t∈{1,…,Tp},Tp为进程P的计算线程数;

2.1.2.1从中申请一个为l的数据片段Dlpt的索引;

2.1.2.2对Dlpt对应的每个文档d∈{1,…,l}

2.1.2.2.1基于当前模型参数α,β进行变分推断,得到文档d的主题信息

2.1.2.2.2利用推断结果计算文档d的充分统计量Std

2.1.2.2.3聚合局部充分统计量Sp=Sp+Std

2.2.总控进程归并局部充分统计量得到全局充分统计量S=S+Sp,进而估计新的模型参数得到当前阶段的模型Mi及数据集DM每一篇文档的主题信息;

2.3.总控进程判断模型Mi是否收敛,收敛则完成计算,否则进行下一轮循环。

下面结合文档聚类这一具体的应用,对本发明在多机机群(如图6所示)这一具有最大伸缩性计算环境下使用复合并行方案的组合的应用情景进行描述(关于其他的计算环境和并行方案的组合的描述略去):

文档聚类是指将文档集合中的文档进行分组,使得在同一个组中的文档内容具有较高的相似度,而不同组中的文档内容差别较大。经过这样的处理后,由于文档集合具有合理分组的结构,使得文档集合更便于管理;更重要的是通过将大的文档集合细分可以极大地减轻用户查找特定文档的工作量,提高了文档使用效率。在信息检索中文档聚类技术具有重要用途,最典型的就是对检索结果依据主题进行分组,这样用户就可以集中在自己关心的主题方面的网页,也就是自动过滤掉了大量无关的查询结果,所以文档聚类可以进一步提高通用搜索引擎的可用性。

相同的技术还可以应用在商品推荐中,基本方法是将商品购买记录当作“文档”、所购商品当作“词”,通过文档聚类可以实现购买兴趣相近的客户的发现和分组,进而可以根据新客户的购买行为向其推荐商品。

用本发明在多机机群计算环境下做文档聚类的具体实施方式是:

一)将搜索引擎的检索结果组织成文档集合(词向量形式),其中每个文档就对应一条搜索结果的标题和摘要的内容。

二)用本发明(高效的隐含狄利克雷分配数据处理方法)对该文档全集进行处理,以获得到每个文本所属的主题,具体过程如下:

1.任务初始化

1.1.在每个计算节点上

1.1.1.根据该节点的硬件并发能力自动生成具有相应数量计算线程的计算服务;

1.1.2.为该节点复制一份需要处理的文档集合;

1.2.在主控节点上

1.2.1.利用随机过程给出初始模型M0

1.2.2.并将M0复制到所有的计算节点上;

2.任务的迭代执行(记本轮迭代次数为第i次迭代)

2.1.在每个计算节点上

2.1.1.计算进程p向控制节点上的总控进程(循环地)动态申请一个长度为Lp的数据段的索引(供步骤2.1.2.进一步处理);

2.1.2.计算进程p的每条计算线程t

2.1.2.1.从中(循环地)动态申请一个为l的数据片段Dlpt的索引(供步骤2.1.2.2.和步骤2.1.2.3.进一步处理);

2.1.2.2.计算获得数据片段Dlpt中每篇文档的充分统计量;

2.1.2.3.更新计算进程p的局部充分统计量;

2.1.3.将该计算节点的局部充分统计量传送到主控节点;

2.2.在主控节点上

2.2.1.聚合所有计算节点的局部充分统计量得到全局充分充分统计量;

2.2.2.利用全局充分充分统计量估计本次迭代的模型Mi

2.2.3.判断模型是否收敛:如果没有收敛,则将Mi复制到所有的计算节点上进行下一轮计算和模型迭代;否则终止数据处理过程,得到最终版本的模型Mlast及数据集DM每一篇文档的主题信息;

三)从每篇文档的主题分布中可以得到该文档包含的最大主题(也即该文档最集中论述的主题),进而就将该篇文档分配到相应主题的那个组去,这样就得到了搜索引擎的检索结果的依据主题的分组。当然,也可以根据所有文档的主题分布采用K-Means等通用的文档聚类方法进行分组。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号