初识文本聚类
1.引言
本文只是作者用来简单记录自己的学习历程,可能会有些不准确,也翻阅过很多资料,若有侵权或文章内容不准确请私信联系,看到后会及时处理,感谢理解。
2.什么是文本聚类?为什么会用到文本聚类?
2.1 定义
文本聚类(Text clustering)文档聚类主要是依据著名的聚类假设:同类的文档相似度较大,而不同类的文档相似度较小。作为一种无监督的机器学习方法,聚类由于不需要训练过程,以及不需要预先对文档手工标注类别,因此具有一定的灵活性和较高的自动化处理能力,已经成为对文本信息进行有效地组织、摘要和导航的重要手段,为越来越多的研究人员所关注。
如同洗衣服需要区分深浅,美食有酸甜苦辣咸,书本有文化类、科技类、小说类等等,文本聚类就是将获取的文本信息根据信息的相似性进行文本归类。正所谓人以类聚,物以群分。人类获取并积累信息时常常需要整理数据,将相似的数据归档到一起。许多数据分析需求都归结为自动发现大量样本之间的相似性,并将其划分为不同的小组,这种根据相似性归档的任务称为聚类。
2.2 文本聚类的主要应用
① 可以作为多文档自动文摘等自然语言处理应用的预处理步骤。
② 对搜索引擎返回的结果进行聚类,使用户迅速定位到所需要的信息。
③ 对用户感兴趣的文档(如用户浏览器cache中的网页)聚类,从而发现用户的兴趣模式并用于信息过滤和信息主动推荐等服务。
④ 改善文本分类的结果。
⑤ 数字图书馆服务。通过SOM神经网络等方法,可以将高维空间的文档拓扑保序地映射到二维空间,使得聚类结果可视化和便于理解,如SOMlib[]系统
⑥ 文档集合的自动整理。
2.3 为什么用到文本聚类?
文本挖掘中常使用的方法为分类和聚类。他们的目的都是将相似度高的对象归类,不同点在于分类是采用监督学习,分类算法按照已经定义好的类别来识别一篇文本,而聚类是将若干文本进行相似度比较,最后将相似度高的归为一类。
在分类算法中,训练集已经标注好了数据集,但是微博文本具有的大数据特性及不确定性决定了标注数据的难度,因此选择聚类算法对大量且随机的微博文本进行处理。
大量文本建模后还需要对主题分布进行聚类以得到更精确简洁的话题,因此文本聚类在话题检测技术中具有重要意义。
那,什么是聚类呢?
聚类是一种无监督学习方式,目的是把一个数据根据某种规则划分为多个子数据,一个子数据就称为一个聚类。
2.3 基本概念
相关基本概念以及文本聚类分析介绍可查看网址:文本聚类 · hankcs/HanLP Wiki (github.com)
2.4 文本聚类算法介绍
聚类分析在文本分析、商务应用、网页搜索、推荐系统、生物医学等多个领域都有着十分广泛的应用。由于数据应用场合不同,不同的聚类方式侧重点不同,各有优势和缺陷,因此没有一个通用的聚类算法。
2.4.1 目前主要的聚类算法
目前主要的聚类算法主要分为上图中的五种方法。
2.4.1.1 基于划分的聚类算法
基于划分的聚类算法是聚类算法中最为简单的算法。
算法原理:假设有一个数据集D,其中包含N个子数据,若要将D划分为 K个类簇,K<N,每个类簇中至少含有一个子数据,且类簇之间不会有交集。要达到的要求是簇中的数据之间有较高的相似度,而簇类之间的相似度尽可能地低。
代表算法:K-means算法、Single-Pass增量聚类算法、围绕中心划分(Partitioning Around Mediods,PAM)算法。而其中最为经典、应用最多的是K-means算法。
K-means算法又称 K均值算法,是一种容易实现且应用广泛的聚类算法,其算法的思想是首先在数据样本集中随机选取K个样本作为簇中心;然后计算样本集中其他样本与这K个簇中心的距离,距离通常利用曼哈顿距离、欧式距离等来度量,再根据设定的阈值将每个样本划分到与其距离最近的簇中心所在的簇中;最后根据新划分的簇重新计算距离,将簇中所含样本的距离均值作为更新簇的中心,再重复计算距离直到达到条件。K-means算法最关键的就是确定K的个数。
优缺点:基于划分的聚类算法对于大部分数据都有较强的适用性,且计算简单高效,空间复杂度较低,但是在处理大规模样本时结果多数是局部最优,对于类簇中心选取也十分敏感并且无法解决非凸数据。
2.4.1.2 基于层次的聚类算法
层次聚类算法(Hierarchical Clustering,HC)又称为树聚类算法。
这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为**“自底向上”和“自顶向下”两种方案**。例如在“自底向上”方案中,初始时每一个数据纪录都组成一个单独的组,在接下来的迭代中,它把那些相互邻近的组合并成一个组,直到所有的记录组成一个分组或者某个条件满足为止。
算法主要思想:是将样本集合合并或者分裂成凝聚度更高或者更细致的子样本集合,最终样本集合形成一棵层次树。
与基于划分的聚类算法不同点:同K-means算法不同,层次聚类算法不需要预先设定聚类数K,只要样本集合通过不断迭代达到聚类条件或者迭代次数即可。
代表算法:BIRCH算法、CURE算法、CHAMELEON算法等。
分类:根据聚类的方向基于层次的聚类算法可以分为凝聚式和分裂式,凝聚式是将簇结合起来,而分裂式则是将大的类簇分为小类。
① 凝聚式层次聚类算法
凝聚式层次聚类(Hierarchical Agglomerative Clustering,HAC)顾名思义是凝聚数据样本,它的聚类方向是从子数据向上不断合并,该算法经常运用于话题检测中。
算法实现流程:首先从底部分散的单个样本开始依次计算与其他样本的距离,然后选择距离最小样本并与其合并成一个新的样本集,再重复上述过程直到形成一个包含所有样本的簇,或者达到迭代次数。
优缺点:凝聚式层次聚类只需要计算样本之间的距离然后合并,该方法计算简单,但是如果数据样本太大则算法复杂度会呈指数级增长,且已合并的操作无法逆转。
② 分裂式层次聚类算法
分裂式层次聚类与凝聚式层次聚类处理样本数据的方向是相反的,它是将整个数据样本看作一个大类簇,然后根据距离公式或其他原则将大的类簇分为小的类簇,不断迭代直到将所有的样本数据分类到单独的类簇中或者是达到迭代次数。
优缺点:层次聚类被公认为是能够产生较好质量的聚类结果的聚类算法。此算法缺点是已操作不能撤回,对于大量数据样本时间复杂度高。
2.4.1.3 基于密度的聚类算法
基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。这个方法的指导思想就是,只要一个区域中的点的密度大过某个阀值,就把它加到与之相近的聚类中去。
主要思想:是首先找出密度较高的点,然后把周围相近的密度较高的样本点连成一片,最后形成各类簇。
代表算法:DBSCAN算法、OPTICS算法、DENCLUE算法等。
优缺点:此类算法的优点是鲁棒性很强,对于任意形状的聚类都适用,但是结果的精度与参数设置关系密切,实用性不强。
2.4.1.4 基于网格的算法
与其他聚类算法相比较,基于网格的聚类算法出发点不再是平面而是空间。在该空间中,有限个网格代表数据,聚类就是按一定的规则将网格合并。
主要思想:这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。
优点:这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。
代表算法有:STING算法、CLIQUE算法、WAVE-CLUSTER算法
2.4.1.5 基于模型的聚类算法
基于模型的聚类算法的思路是假设每个类簇为一个模型,然后再寻找与该模型拟合最好的数据。这样一个模型可能是数据点在空间中的密度分布函数或者其他它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。
主要方向:**通常有基于概率和基于神经网络两种方法。**概率模型即概率生成模型,是假设数据是由潜在的概率分布产生的,典型的算法是高斯混合模型(Gaussian Mixture Models,GMM)[50];而来自芬兰的神经网络专家提出的自组织映射(Self Organized Maps,SOM)是典型的神经网络模型。
对类簇而言,基于模型的聚类算法是用概率形式呈现,每个类的特征也可以直接用参数表示,但是与其他聚类方法相比,这类聚类方法在样本数据量大的时候执行率较低,不适合大规模聚类场合。
各个聚类算法对比
聚类算法 | 处理大规模数据能力 | 处理高维数据能力 | 发现任意形状簇的能力 | 数据顺序敏感度 | 处理噪声能力 |
---|---|---|---|---|---|
基于层次的聚类方法 | 弱 | 较强 | 强 | 不敏感 | 较弱 |
基于划分的聚类方法 | 较弱 | 强 | 较强 | 不敏感 | 弱 |
基于密度的聚类方法 | 较强 | 弱 | 强 | 不敏感 | 强 |
基于网格的聚类方法 | 强 | 强 | 较强 | 敏感 | 强 |
微博文本存在的特点
微博文本区别于新闻等传统文本的最大特点在于形式上的“微”。国内微博限定为140个字(含标点符号),这种形式上的“微”也导致了微博文本在内容上,通常没有标题、引言、结尾等条目,甚至不需要严谨的行文逻辑和细致描述,只需讲述所见所想即可。其次,微博文本存在网友的口语化表达。同时随着微博的流行,中间产生了大量的网络流行语,这些流行语、流行词不仅在汉子组合上产生很多变化,而且在意思表达上也有了很多新意。文本本也是一种符号,这种新型的汉语字形符号化主要有两种表达形式:一、内容的符号化,如:“逗比”,“坑爹”……这种字与字、词与词的新组合产生了很多内容丰富、表达传神的符号。二、形式上的符号化,如:“囧”、“orz”……这种符号化在一定程度上也是一种视觉化。
在特征项的选取应遵循以下几个原则:一、文本在这些特征项上的分布应当有比较明显的统计规律性;二、词汇方面,应当选取那些包含语义信息较多,对文本的表现能力较强的语言单位作为特征项;三、选取过程本身应当比较容易实现,其时间和空间开销都不应当太大。
基于以上特点,最终选择了Kmeans方法对微博文本进行文本处理。
参考文献:
[1] 张书卿,周文,欧阳纯萍等.微博文本和传统文本体裁特征对比[J].南华大学学报(自然科学版),2015,29(02):87-90+96.DOI:10.19431/j.cnki.1673-0062.2015.02.020.