文本聚类

教师:邱锡鹏 微博:@邱锡鹏

助教:施展、龚经经

复旦大学 计算机学院 大数据学院

文本聚类方法可以分为静态聚类和动态聚类,静态聚类方法包括Top-down方法和Bottom-up方法,动态聚类(Online clustering)需要判断每个新加入的样本属于已有的类还是一个新类。

2.1 K-mean聚类(Top-down)

K-means聚类前提:样本之间相似度能够计算

  1. 随机在图中取个种子点。
  2. 然后对图中的所有点求到这个种子点的距离,假如点离种子点最近,那么属于点群。
  3. 接下来,我们要移动种子点到属于他的“点群”的中心。
  4. 然后重复第2)和第3)步,直到种子点没有移动。

K-means缺点:

  1. 需提前确定聚类数目
  2. 对初始选取的点很敏感
  3. 属于硬聚类(每个样本只能属于一类)

2.2 布朗聚类(Bottom-Up)

2.2.1 预备知识

是一个离散型随机变量,取值空间为,其概率分布为。那么,的熵定义为

其中约定,通常将写作

熵又称为自信息,可以视为描述一个随机变量的不确定性的数量。

联合熵和条件熵

是一对离散型随机变量,则的联合熵

联合熵实际就是描述一对随机变量平均所需的信息量

给定随机变量的情况下,随机变量的条件熵如下:

条件熵和联合熵的关系:

推广到一般情况:

互信息

可得

这个差称为互信息,记作,可得

反映的是在知道了的值以后的不确定性的减少量。

mutualInfo

2.2.2 布朗聚类:

布朗聚类是一种自底而上的层次聚类算法,基于n-gram模型和马尔科夫链模型,是一种硬聚类,每个词都在且只在唯一的一个类中。

是词,是类,不同于词性标注,此处是未知的。

布朗聚类的输入是一个语料库,这个语料库是一个词序列,输出是一个二叉树,树的叶子节点是一个个词,树的中间节点是我们想要的类(中间结点作为根节点的子树上的所有叶子为类中的词)。

是种特殊的‘Start’类,我们要找到这样的分类方式,使得尽可能大

在文本中出现次数,是二元对在文本中的出现次数,

简单算法:

长度文本为例:每个字均为一类,词典大小为,找到俩类,合并后使得互信息变得最大,重复合并步骤使得最后都归为一类,整个算法的时间复杂度为

优化算法:

开始设置一个参数m,比如,我们按照词汇出现的频率对其进行排序

然后把频率最高的个词各自分到一个类中,对于第个词进行循环:

1.对当前词新建一个类,我们现在又个类了

2.从这个类中贪心选择最好的两个类合并,现在我们剩下个类

最后我们再做词合并。算法时间复杂度