发明名称 一种基于自动阈值鱼群算法的文本聚类方法
摘要 本发明公开了一种基于自动阈值鱼群算法的文本聚类方法,通过计算文本特征向量的相似度矩阵,采用相似度矩阵的每行元素获得每个文本的初始等价划分阈值,从而对文本进行初始等价划分,进而确定初始聚类数目和初始聚类中心;结合采用人工鱼群算法,根据全局最优和局部最优信息更新每条人工鱼的状态,以寻找全局最优聚类中心,对初始聚类结果再聚类。由于采用自动获取阈值的方法得到初始聚类数目和初始聚类中心,并通过人工鱼群算法寻找全局最优聚类中心,本发明克服了传统聚类方法对初值敏感、仅依靠局部数据特性等弊端,可提高文本聚类的准确度与智能性。
申请公布号 CN103136355A 申请公布日期 2013.06.05
申请号 CN201310068725.X 申请日期 2013.03.05
申请人 电子科技大学 发明人 孙健;梁雪芬;徐杰;隆克平;艾丽丽;周云龙;唐明;王晓丽
分类号 G06F17/30(2006.01)I;G06F17/27(2006.01)I;G06N3/00(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 成都行之专利代理事务所(普通合伙) 51220 代理人 温利平
主权项 1.一种基于自动阈值鱼群算法的文本聚类方法,其特征在于包括以下步骤:(1)、对N个文本对象进行预处理,包括中文分词、去停用词、词频统计、特征项提取、文本向量化,得到文本对象的特征向量:<maths num="0001"><![CDATA[<math><mrow><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>r</mi><mo>=</mo><mn>1</mn></mrow><mi>R</mi></munderover><msub><mi>l</mi><mrow><mi>r</mi><mo>,</mo><mi>i</mi></mrow></msub><msub><mi>a</mi><mi>r</mi></msub><mo>;</mo></mrow></math>]]></maths>(2)、根据N个文本对象的特征向量计算每个文本对象的初始等价划分阈值Th<sub>i</sub>,确定初始聚类数目和初始聚类中心:2.1)、计算文本对象的相似度矩阵S:<img file="FDA00002883332300012.GIF" wi="1276" he="386" />其中,sim(x<sub>i</sub>,x<sub>j</sub>),1≤i≤N,1≤j≤N表示文本对象x<sub>i</sub>、x<sub>j</sub>之间的相似度;2.2)、将相似度矩阵S的每行元素按相似度从大到小排序,得到排序后的相似度矩阵S′:<img file="FDA00002883332300013.GIF" wi="1274" he="386" />其中,sim(x<sub>i</sub>,x<sub>j′</sub>),1≤j′≤N表示经排序后文本对象x<sub>i</sub>与x<sub>j′</sub>之间的相似度;初始等价划分阈值Th<sub>i</sub>的计算公式为:<maths num="0002"><![CDATA[<math><mrow><msub><mi>Th</mi><mi>i</mi></msub><mo>=</mo><mo>{</mo><mi>sim</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>x</mi><mrow><mi>j</mi><mo>&prime;</mo></mrow></msub><mo>)</mo></mrow><mo>|</mo><munder><mi>Max</mi><mrow><mi>j</mi><mo>&prime;</mo></mrow></munder><mo>[</mo><mi>sim</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>x</mi><mrow><mi>j</mi><mo>&prime;</mo></mrow></msub><mo>)</mo></mrow><mo>-</mo><mi>sim</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>x</mi><mrow><mi>j</mi><mo>&prime;</mo><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>]</mo><mo>}</mo><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>&Element;</mo><mo>{</mo><mn>1,2</mn><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>}</mo></mrow></math>]]></maths>2.3)、根据相似度矩阵S和初始等价划分阈值Th<sub>i</sub>计算每个文本的初始等价划分R<sub>i</sub>:R<sub>i</sub>={{P<sub>i</sub>},{U-P<sub>i</sub>}}其中,P<sub>i</sub>={x<sub>j</sub>sim(x<sub>i</sub>,x<sub>j</sub>)≥Th<sub>i</sub>},U={x<sub>1</sub>,x<sub>2</sub>,…,x<sub>i</sub>,…,x<sub>N</sub>};2.4)、根据每个文本的初始等价划分R<sub>i</sub>进行初始聚类,得到初始聚类结果CR:CR=R<sub>1</sub>∩R<sub>2</sub>∩…∩R<sub>i</sub>∩…∩R<sub>N</sub>={c<sub>1</sub>,c<sub>2</sub>,…,c<sub>K</sub>}其中,c<sub>k</sub>,1≤k≤K表示初始聚类结果中的一个类,K为初始聚类数目,将c<sub>k</sub>中所有文本对象特征向量的平均值作为初始第k类的聚类中心x<sub>ck</sub>,初始聚类中心x<sub>ck</sub>的计算公式为:<maths num="0003"><![CDATA[<math><mrow><msub><mi>x</mi><mi>ck</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>r</mi><mo>=</mo><mn>1</mn></mrow><mi>R</mi></munderover><mover><msub><mi>l</mi><mrow><mi>r</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>&OverBar;</mo></mover><msub><mi>a</mi><mi>r</mi></msub></mrow></math>]]></maths>其中<img file="FDA00002883332300022.GIF" wi="322" he="251" />p表示c<sub>k</sub>类中文本对象的个数,l<sub>r,s</sub>表示c<sub>k</sub>类中第s,1≤s≤p<sub>k</sub>个文本对象特征向量中第r个特征项的权值,<img file="FDA00002883332300023.GIF" wi="152" he="160" />是c<sub>k</sub>类中的所有文本对象特征向量中第r个特征项的权值之和;(3)、采用人工鱼群算法对步骤(2)得到的初始聚类结果进行再聚类:3.1)、设置人工鱼条数Total与各人工鱼的初始状态,第m条人工鱼的状态Q<sub>m</sub>,m=1,2,…,Total为数据空间中的向量,其形式与文本对象的特征向量一致;设置最大重复尝试次数TryNumber、最大迭代次数IT、将K个初始聚类中心作为初始全局最优人工鱼状态Q<sub>best_af,k</sub>,1≤k≤K;3.2)、对人工鱼状态进行迭代更新:在第t,1≤t≤IT次迭代更新时,依次对每条人工鱼状态进行更新,第m条人工鱼的状态为<img file="FDA00002883332300024.GIF" wi="109" he="80" />计算其适应度值<img file="FDA00002883332300025.GIF" wi="95" he="80" /><maths num="0004"><![CDATA[<math><mrow><msubsup><mi>Y</mi><mi>m</mi><mi>t</mi></msubsup><mo>=</mo><mfrac><mrow><mi>num</mi><mrow><mo>(</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow></mrow><mrow><mi>&pi;</mi><mo>*</mo><msup><mi>Visual</mi><mn>2</mn></msup></mrow></mfrac></mrow></math>]]></maths>其中,<img file="FDA00002883332300027.GIF" wi="73" he="82" />表示迭代次数为t时第m条人工鱼的适应度值,<img file="FDA00002883332300028.GIF" wi="240" he="103" />表示迭代次数为t时第m条人工鱼视野范围内的文本对象个数;此时前m-1条人工鱼已完成状态更新,即当前时刻其状态为<img file="FDA00002883332300029.GIF" wi="490" he="94" />当前时刻全局最优人工鱼状态记为<img file="FDA000028833323000210.GIF" wi="283" he="94" />其中离人工鱼<img file="FDA00002883332300031.GIF" wi="78" he="84" />距离最近的全局最优人工鱼状态记为<img file="FDA00002883332300032.GIF" wi="186" he="88" />第m条人工鱼分别模拟执行以下三种行为:a.觅食行为:在第m条人工鱼视野范围内随机选择一个状态<img file="FDA00002883332300033.GIF" wi="97" he="80" />若<img file="FDA00002883332300034.GIF" wi="216" he="88" />则第m条人工鱼向<img file="FDA00002883332300035.GIF" wi="72" he="80" />和<img file="FDA00002883332300036.GIF" wi="156" he="89" />的向量方向前进一步:<maths num="0005"><![CDATA[<math><mrow><msubsup><mi>Q</mi><mi>m</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>+</mo><mrow><mo>(</mo><mfrac><mrow><mrow><mo>(</mo><msubsup><mi>Q</mi><mi>n</mi><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>near</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow></mrow><mrow><mo>|</mo><mo>|</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mi>n</mi><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>near</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>|</mo><mo>|</mo></mrow></mfrac><mo>)</mo></mrow><mo>&CenterDot;</mo><mi>Step</mi><mo>&CenterDot;</mo><mi>Rand</mi><mo>(</mo><mo>)</mo></mrow></math>]]></maths>其中,Rand()是一个介于0和1之间的随机数;反之,则更新随机选择状态<img file="FDA00002883332300038.GIF" wi="100" he="85" />判断是否满足前进条件;如果重复尝试次数达到TryNumber次后仍不满足条件,则第m条人工鱼随机移动一步:<maths num="0006"><![CDATA[<math><mrow><msubsup><mi>Q</mi><mi>m</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>+</mo><mi>Visual</mi><mo>&CenterDot;</mo><mi>Rand</mi><mo>(</mo><mo>)</mo></mrow></math>]]></maths>b.聚群行为在当前时刻的所有人工鱼状态中,计算第m条人工鱼视野范围内的人工鱼同伴数目<img file="FDA000028833323000310.GIF" wi="151" he="88" />同伴中心<img file="FDA000028833323000311.GIF" wi="104" he="88" />为<img file="FDA000028833323000312.GIF" wi="84" he="86" />及其视野范围内同伴的状态的平均值,同伴中心<img file="FDA000028833323000313.GIF" wi="111" he="88" />的适应度值为<img file="FDA000028833323000314.GIF" wi="120" he="88" />若<img file="FDA000028833323000315.GIF" wi="468" he="94" />则第m条人工鱼向<img file="FDA000028833323000316.GIF" wi="102" he="88" />和<img file="FDA000028833323000317.GIF" wi="161" he="91" />的向量方向前进一步:<maths num="0007"><![CDATA[<math><mrow><mrow><msubsup><mi>Q</mi><mi>m</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>+</mo><mrow><mo>(</mo><mfrac><mrow><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>c</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>near</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow></mrow><mrow><mo>|</mo><mo>|</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>c</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>near</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>|</mo><mo>|</mo></mrow></mfrac><mo>)</mo></mrow><mo>&CenterDot;</mo><mi>Step</mi><mo>&CenterDot;</mo><mi>Rand</mi><mo>(</mo><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>否则第m条人工鱼再重新执行一次觅食聚群行为;c.追尾行为:在当前时刻的所有人工鱼状态中,比较第m条人工鱼视野范围内各人工鱼同伴的适应度值,找到适应度最大值<img file="FDA000028833323000319.GIF" wi="142" he="86" />及其对应的同伴状态<img file="FDA000028833323000320.GIF" wi="184" he="86" />若<img file="FDA000028833323000321.GIF" wi="509" he="95" />则第m条人工鱼向<img file="FDA000028833323000322.GIF" wi="150" he="88" />和<img file="FDA000028833323000323.GIF" wi="160" he="89" />的向量方向前进一步:<maths num="0008"><![CDATA[<math><mrow><msubsup><mi>Q</mi><mi>m</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>+</mo><mrow><mo>(</mo><mfrac><mrow><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>max</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>mear</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow></mrow><mrow><mo>|</mo><mo>|</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>max</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><msubsup><mi>Q</mi><mrow><mi>mear</mi><mo>,</mo><mi>m</mi></mrow><mi>t</mi></msubsup><mo>-</mo><msubsup><mi>Q</mi><mi>m</mi><mi>t</mi></msubsup><mo>)</mo></mrow><mo>|</mo><mo>|</mo></mrow></mfrac><mo>)</mo></mrow><mo>&CenterDot;</mo><mi>Step</mi><mo>&CenterDot;</mo><mi>Rand</mi><mo>(</mo><mo>)</mo></mrow></math>]]></maths>否则第m条人工鱼再重新执行一次觅食行为;第m条人工鱼在模拟执行三种行为后得到三个备选更新状态三个备选更新状态,比较三个备选更新状态的适应度值,如果其中最大的适应度值高于当前适应度值<img file="FDA00002883332300041.GIF" wi="68" he="82" />且只对应一个备选更新状态,则将第m条人工鱼更新为最大适应度值所对应的备选更新状态;如果其中最大适应度值高于当前适应度值<img file="FDA00002883332300042.GIF" wi="66" he="84" />且对应一个以上备选更新状态,则任意选择一个备选更新状态进行更新;如果其中最大的适应度值不高于当前适应度值<img file="FDA00002883332300043.GIF" wi="92" he="82" />则第m条人工鱼状态保持不变;本次更新中第m条人工鱼的最终更新结果记为<img file="FDA00002883332300044.GIF" wi="137" he="87" />如果此时人工鱼状态<img file="FDA00002883332300045.GIF" wi="109" he="87" />的适应度值<img file="FDA00002883332300046.GIF" wi="96" he="85" />高于距离最近的最优人工鱼<img file="FDA00002883332300047.GIF" wi="154" he="88" />的适应度值<img file="FDA00002883332300048.GIF" wi="170" he="89" />则用<img file="FDA00002883332300049.GIF" wi="111" he="86" />代替<img file="FDA000028833323000410.GIF" wi="154" he="88" />所对应的全局最优人工鱼<img file="FDA000028833323000411.GIF" wi="282" he="89" />否则全局最优人工鱼状态保持不变;当迭代次数达到最大迭代次数IT时,人工鱼状态迭代更新结束,得到最终全局最优人工鱼状态<maths num="0009"><![CDATA[<math><mrow><msubsup><mi>Q</mi><mrow><mi>best</mi><mo>_</mo><mi>af</mi><mo>,</mo><mi>k</mi></mrow><mi>IT</mi></msubsup><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>k</mi><mo>&le;</mo><mi>K</mi><mo>;</mo></mrow></math>]]></maths>3.3)、根据人工鱼状态计算最终聚类中心:对于最终全局最优人工鱼,设定全局最优人工鱼聚类阈值,计算第一条最终全局最优人工鱼与其他最终全局最优人工鱼之间的距离,将距离小于聚类阈值的最终全局最优人工鱼与第一条最终全局最优人工鱼归于一类;在剩下的最终全局最优人工鱼中按顺序选择第一条,计算其与剩下的其它最终全局最优人工鱼的距离,将距离小于聚类阈值的最终全局最优人工鱼与该最终全局最优人工鱼归于一类;依此类推,直到将所有最终全局最优人工鱼归类;最终得到的人工鱼类的个数为最终聚类数目H,将每个人工鱼类中所有最终全局最优人工鱼成员状态的均值作为该类的最终聚类中心X<sub>ch</sub>,1≤h≤H;3.4)、计算每个文本对象与H个最终聚类中心的距离,将文本对象归入与其距离最近的最终聚类中心所对应的类中,得到文本对象的最终聚类结果C<sub>h</sub>,1≤h≤H。
地址 611731 四川省成都市高新区(西区)西源大道2006号