发明名称 一种面向互联网微内容的分布式聚类方法
摘要 本发明公开了一种面向互联网微内容的分布式聚类方法。本发明采用多机分布式聚类的方法,主控机器把要处理的微内容切分成多个小文件,并把这些小文件分配给多台聚类机器进行聚类操作。单台聚类机器对分配到的各个小文件循环进行元聚类,接着合并这些元聚类结果文件,得到相应的单机聚类合并文件,然后把它发送给主控机器。主控机器在接收到各个聚类机器发送过来的单机聚类合并文件后,从各个单机聚类合并文件中抽取微内容代表点,对这些微内容代表点进行再次元聚类,生成新的聚类项,并将对应的类别合并,得到最后的聚类结果。本发明能够准确、快速地对海量级的互联网微内容进行聚类,是一种既高效又实用的分布式聚类方法。
申请公布号 CN101178720B 申请公布日期 2010.12.15
申请号 CN200710156189.3 申请日期 2007.10.23
申请人 浙江大学 发明人 陈珂;陈刚;汪源;胡天磊;寿黎但
分类号 G06F17/30(2006.01)I;H04L29/06(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 林怀禹
主权项 一种面向互联网微内容的分布式聚类方法,其特征在于该方法的步骤如下:1)主控机器首先对微内容数据文件进行切分操作,得到适合元聚类操作的多个微内容数据文件,对输入的微内容数据文件,按照每个文件固定的记录条数写到多个小文件中,在小文件中一行一条微内容;2)多台聚类机器对微内容数据文件进行聚类操作:2.1、对于由主控机器切分操作生成的适合元聚类操作的各个微内容数据文件,用脚本拷贝到相应的聚类机器上;2.2、多台聚类机器并行进行聚类操作,每台聚类机器都执行以下两个步骤:a)对分配到的各个微内容数据文件循环进行元聚类操作,生成相应的各个元聚类结果文件;b)对上面生成的元聚类结果文件进行合并操作,生成单机聚类合并文件,其中合并操作的过程如下:(1)读取各个元聚类结果文件,从各个聚类项中抽取聚类项代表点,把代表点对应的微内容写到一个临时微内容数据文件中;(2)对生成的临时微内容数据文件再次进行元聚类,然后把聚类结果中归为同一个类的各个代表点对应的类别合并,生成新的聚类项,得到最后的单机聚类合并文件;2.3、每台聚类机器生成完单机聚类合并文件后,通知主控机器,并把单机聚类合并文件发送给主控机器,主控机器在接收到各台聚类机器发送来的单机聚类合并文件后,再次对这些文件进行合并操作,生成系统总的聚类结果文件,其中合并操作的过程如下:a)读取各个单机聚类合并文件,从各个聚类项中抽取聚类项代表点,把代表点对应的微内容写到一个临时微内容数据文件中;b)对生成的临时微内容数据文件再次进行元聚类,然后把聚类结果中归为同一个类的各个代表点对应的类别合并,生成新的聚类项,得到系统总的聚类结果文件;3)在上述2)中的对微内容数据文件进行聚类操作的步骤如下:3.1、从微内容数据文件中把各行微内容读出,然后放入队列中,队列中的每个元素为一条微内容,将队列中个各条微内容读出,对它们进行中文分词,去掉停用词,生成相应的关键词序列;3.2、对各个关键词序列,创建按连续两个关键词组合在一起的关键词为键,以包含该两个词组合的微内容编号为值的倒排索引;3.3、等倒排索引建完,扫描倒排索引,创建以微内容编号作为矩阵行列,微内容两两之间相同单元的数目为值的相关矩阵,在扫描每行倒排项时,将两两微内容编号对应的矩阵元素的值加1;3.4、等相关矩阵建完,扫描相关矩阵,计算微内容之间的相似度,设两条微内容A<key1,...,keyi,...,keyn>、B<key1,...,keyi,...,keym>,其中keyi为微内容包含的关键词,则定义A、B之间的相似度sim(A,B)为sim(A,B)=(A^B)/(A+B),其中^表示集合交集,+表示集合并集,(A^B)的值也就是A和B在第3.2步生成的倒排索引中共同出现的次数,从相关矩阵中取得,A+B为A、B在第3.2步生成的倒排索引中各自出现次数之和减去A、B在第3.2步生成的倒排索引中共同出现的次数,A、B各自出现的次数在扫描倒排索引时获得,在计算完A、B之间的相似度sim(A,B)后,把在第3.3步生成的相关矩阵中A、B对应的值由(A^B)更新为sim(A,B);3.5、扫描更新完的相关矩阵,根据微内容之间的相似度对微内容进行聚类,由于相关矩阵是以JAVA中的HashMap为存储结构,且相关矩阵自身的稀疏特性,所以按照HashMap的自然存放顺序来进行聚类分析,取得HashMap的第i个元素,得到微内容k和l的相似度,如果小于设定的阈值,则忽略该元素并继续处理下个元素,否则进行聚类处理:如果k还没有被聚类,并且l也没有被聚类,则创建以k为中心的聚类,并将l标记为k为中心;否则,如果l被聚类,并且k没有被聚类,但是l是该类的中心,则将l类别与k合并,并标记l的中心为k;否则,找到l的中心,如果该中心微内容编号比k大,则将k归为该类,并标记中心为此中心;否则将该类别与k合并,并修改中心为k;如果k已经被聚类,l没有被聚类,则l归类为k的类别,并标记中心;如果两者都聚类,则找到两者的中心,将中心编号大的合并至另一个,并修改中心;然后迭代取得下一个元素,直到取完HashMap中的所有元素。
地址 310027 浙江省杭州市西湖区浙大路38号