目录1 概念及应用背景 (1)1.1概念 (1)1.2应用背景 (1)2 系统设计框架 (2)2.1总体框架 (2)2.2文本聚类的具体过程 (3)3应用程序具体实现及说明 (4)3.1获取文档的输入 (4)3.2提取文档的TF/IDF权重 (5)3.3 k-means进行数据聚类 (6)4 实验结果及分析 (7)4.1实验结果 (7)4.2结果分析 (10)5结论 (10)5.1实验结论 (10)5.2个人感受 (11)附录:项目框架和主程序代码 (12)1 概念及应用背景1.1概念文本聚类(Text clustering)是在没有学习的条件下对文本集合进行组织或划分的过程,其主要依据著名的聚类假设:同类的文档相似度较大,而不同类的文档相似度较小。
作为一种无监督的机器学习方法,聚类由于不需要训练过程,以及不需要预先对文档手工标注类别,因此具有一定的灵活性和较高的自动化处理能力,已经成为对文本信息进行有效地组织、摘要和导航的重要手段,为越来越多的研究人员所关注。
(代码下载:/source/3277899)1.2应用背景文本聚类是搜索引擎和语义Web的基本技术,Internet 已经发展为当今世界上最大的信息库和全球范围内传播信息最主要的渠道。
随着Internet 的大规模普及和企业信息化程度的提高,各种资源呈爆炸式增长。
在中国互联网络信息中心(CNNIC)2011年1月最新公布的中国互联网络发展状况统计报告中显示,自2003年开始,中国的网页规模基本保持翻番增长,2010年网页数量达到600亿个,年增长率78.6%,其中仍有62.3% 的网络信息均以文本形式体现。
对于这种半结构或无结构化数据,如何从中获取特定内容的信息和知识成为摆在人们面前的一道难题。
近年来,文本挖掘、信息过滤和信息检索等方面的研究出现了前所未有的高潮。
作为一种无监督的机器学习方法,聚类技术可以将大量文本信息组成少数有意义的簇,并提供导航或浏览机制。
文本聚类的主要应用点包括:(1) 文本聚类可以作为多文档自动文摘等自然语言处理应用的预处理步骤。
(2) 对搜索引擎返回的结果进行聚类,使用户迅速定位到所需要的信息。
(3) 对用户感兴趣的文档(如用户浏览器cache中的网页)聚类,从而发现用户的兴趣模式并用于信息过滤和信息主动推荐等服务。
(4) 改善文本分类的结果。
(5) 数字图书馆服务。
通过SOM神经网络等方法,可以将高维空间的文档拓扑保序地映射到二维空间,使得聚类结果可视化和便于理解。
(6) 文档集合的自动整理。
如Scatter/Gather,它是一个基于聚类的文档浏览系统。
2 系统设计框架2.1总体框架聚类(Clustering) 就是将数据对象分组成为多个类或者簇(Cluster),它的目标是:在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。
其实聚类是一个人们日常生活的常见行为,即所谓―物以类聚,人以群分‖,核心的思想也就是聚类。
作为聚类算法的主要应用场景——文本聚类是在没有学习的条件下对文本集合进行组织或划分的过程,方法主要包括等级聚类法和动态聚类法(即层次凝聚法和平面划分法),其中动态聚类法的基本思想如图2-1所示:图2-1 动态聚类法基本思想具体步骤如下:1) 确定聚类个数k,从文档集合中选择k个文档作为凝聚点(聚类中心),每个凝聚点文档自成一类2) 按照距离最近原则,将剩余n-k个文档逐个并入最近凝聚点所代表的类。
每并入一篇文档,立即重新计算该类的中心,并用此中心替代原来的凝聚点3) 以最后形成的每个凝聚点代表一类,将全部n篇文档重新聚类。
文档集合被重新聚类以后,如果与原来的聚类结果不同,就重复步骤3);否则,聚类处理结束文本聚类的具体过程如图2-2所示:图2-2 文本聚类具体过程2.2文本聚类的具体过程1 文本信息的预处理文本聚类的首要问题是如何将文本内容表示成为数学上可分析处理的形式,即建立文本特征,以一定的特征项(如词条或描述)来代表目标文本信息。
要建立文本信息的文本特征,常用的方法是:对文本信息进行预处理(词性标注、语义标注),构建统计词典,对文本进行词条切分,完成文本信息的分词过程。
对于中文的处理,Lucene中文分词组件je-analysis.jar是个不错的包,其分词方法主要有以下两种:MMAnalyzer analyzer = new MMAnalyzer();//采用正向最大匹配的中文分词算法,相当于分词粒度等于0MMAnalyzer analyzer = new MMAnalyzer(int wordLength);//参数为分词粒度:当字数等于或超过该参数,且能成词时,该词就被切分出来2 文本信息特征的建立文本信息的特征表示模型有多种,常用的有布尔逻辑型、向量空间型、概率型以及混合型等。
其中,向量空间模型(Vector Space Model,VSM) 是近几年来应用较多且效果较好的方法之一。
1969 年,Gerard Salton 提出了向量空间模型VSM ,它是文档表示的一个统计模型。
该模型的主要思想是:将每一文档都映射为由一组规范化正交词条矢量张成的向量空间中的一个点。
对于所有的文档类和未知文档,都可以用此空间中的词条向量(T1 ,W 1 ,T 2 ,W2 ,…, Tn , Wn )来表示( 其中,Ti 为特征向量词条;Wi 为Ti 的权重)。
一般需要构造一个评价函数来表示词条权重,其计算的唯一准则就是要最大限度地区别不同文档。
这种向量空间模型的表示方法最大的优点在于将非结构化和半结构化的文本表示为向量形式,使得各种数学处理成为可能。
3 文本信息特征集的缩减VSM 将文本内容表示成数学上可分析处理的形式,但是存在的一个问题是文档特征向量具有惊人的维数。
因此,在对文本进行聚类处理之前,应对文本信息特征集进行缩减。
通常的方法是针对每个特征词条的权重排序,选取预定数目的最佳特征作为结果的特征子集。
选取的数目以及采用的评价函数都要针对具体问题来分析决定。
4 文本聚类在将文本内容表示成数学上可分析处理的形式后,接下来的工作就是在此数学形式的基础上,对文本进行聚类处理。
文本聚类主要有 2 种方法:基于概率[6] 和基于距离。
基于概率的方法以贝叶斯概率理论为基础,用概率的分布方式描述聚类结果。
基于距离的方法,就是以特征向量表示文档,将文档看成向量空间中的一个点,通过计算点之间的距离进行聚类。
目前,基于距离的文本聚类比较成熟的方法大致可以分为 2 种类型:层次凝聚法和平面划分法。
对于给定的文件集合D={d1, d2,…,di ,…, dn},层次凝聚法具体过程如下:(1) 将D中的每个文件di 看成一个具有单个成员的簇ci ={di}这些簇构成了D的一个聚类C={c1 ,c2 ,…,ci ,…,cn};(2) 计算C中每对簇(ci ,cj)之间的相似度sim{ci ,cj};(3) 选取具有最大相似度的簇对(ci ,cj)将ci和cj合并为一个新的簇ck =sim ci∪cj,从而构成了D的一个新的聚类C =(c1, c2,…,cn-1);(4) 重复上述步骤,直至C中剩下一个簇为止。
该过程构造出一棵生成树,其中包含了簇的层次信息以及所有簇内和簇间的相似度。
对于给定的文件集D={d1 , d2 ,…,di ,…, dn},平面划分法的具体过程如下:(1) 确定要生成簇的数目k;(2) 按照某种原则生成k个聚类中心作为聚类的种子S=(s1,s2,…,si,…,sk);(3) 对D中的每个文件di,依次计算它与各个种子sj的相似度sim (di,sj);(4) 选取具有最大相似度的种子,将di归入以sj为聚类中心的簇cj,从而得到D的一个聚类C={ci ,cj};(5) 重复此步骤若干次,以得到较为稳定的聚类结果。
这2种类型各有优缺点。
层次凝聚法能够生成层次化的嵌套簇,准确度较高。
但在每次合并时,需要全局地比较所有簇之间的相似度,并选出最佳的2个簇,因此执行速度较慢,不适合大量文件的集合。
而平面划分法相对来说速度较快,但是必须事先确定k 的取值,且种子选取的好坏对群集结果有较大影响。
3应用程序具体实现及说明计算两篇文档的相似度,最简单的做法就是用提取文档的TF/IDF权重,然后用余弦定理计算两个多维向量的距离。
能计算两个文本间的距离后,用标准的k-means算法就可以实现文本聚类了。
这里会用到TF/IDF权重,用余弦夹角计算文本相似度,用方差计算两个数据间欧式距离,用k-means进行数据聚类。
其具体实现过程为:图3-1 文本聚类具体实现过程3.1获取文档的输入首先获得文档所在位置(即所需聚类文档集所在的文件夹路径),根据该文件夹路径获得所有文档文件的路径信息(ReadDir),保存在一个String类型List 中,用然后将文档中的内容依次读入一个字符串中(ReadFile),形成一个String 数组作为文档的输入。
3个函数定义如图3-2所示:图3-2 获得文档输入的3个函数3.2提取文档的TF/IDF权重TF-IDF(term frequency–inverse document frequency)的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
TFIDF实际上是:TF*IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。
TF表示词条t在文档d中出现的频率。
IDF的主要思想是:如果包含词条t的文档越少,IDF越大,则说明词条t具有很好的类别区分能力。
假如document1和document2的term的TF/IDF分别是t11,t12,t13,...t1n和t21,t22,t23,...,t2n.他们之间的相似性可以用余弦定理来表示。
则:cos(d1,d2) = d1和d2的内积/(d1的长度*d2的长度) = (t11*t21 + t12*t22 + t13*t23 + ... + t1n*t2n)/(|d1|*|d2|);d1 = sqrt(t11*t11 + t12*t12 + t13*t13 + ... + t1n*t1n)。
夹角越大,相似性越大;为1则表示d1和d2一致。
例如一篇文档文件的总词语数是100个,而词语―母牛‖出现了3次,那么―母牛‖一词在该文件中的词频就是0.03 (3/100)。
一个计算文件频率(DF) 的方法是测定有多少份文件出现过―母牛‖一词,然后除以文件集里包含的文件总数。
所以,如果―母牛‖一词在1,000份文件出现过,而文件总数是10,000,000份的话,其文件频率就是0.0001 (1000/10,000,000)。