助教:施展、龚经经
复旦大学 计算机学院 大数据学院
文本聚类方法可以分为静态聚类和动态聚类,静态聚类方法包括Top-down方法和Bottom-up方法,动态聚类(Online clustering)需要判断每个新加入的样本属于已有的类还是一个新类。
K-means聚类前提:样本之间相似度能够计算
K-means缺点:
熵
若是一个离散型随机变量,取值空间为,其概率分布为。那么,的熵定义为
其中约定,通常将写作
熵又称为自信息,可以视为描述一个随机变量的不确定性的数量。
联合熵和条件熵
若是一对离散型随机变量,则的联合熵
联合熵实际就是描述一对随机变量平均所需的信息量
给定随机变量的情况下,随机变量的条件熵如下:
条件熵和联合熵的关系:
推广到一般情况:
互信息
可得
这个差称为和 的互信息,记作,可得
反映的是在知道了的值以后的不确定性的减少量。
布朗聚类是一种自底而上的层次聚类算法,基于n-gram模型和马尔科夫链模型,是一种硬聚类,每个词都在且只在唯一的一个类中。
是词,是类,不同于词性标注,此处是未知的。
布朗聚类的输入是一个语料库,这个语料库是一个词序列,输出是一个二叉树,树的叶子节点是一个个词,树的中间节点是我们想要的类(中间结点作为根节点的子树上的所有叶子为类中的词)。
是种特殊的‘Start’类,我们要找到这样的分类方式,使得尽可能大
是在文本中出现次数,是二元对在文本中的出现次数,,
简单算法:
以长度文本为例:每个字均为一类,词典大小为,找到俩类,合并后使得互信息变得最大,重复合并步骤使得最后都归为一类,整个算法的时间复杂度为
优化算法:
开始设置一个参数m,比如,我们按照词汇出现的频率对其进行排序
然后把频率最高的个词各自分到一个类中,对于第到个词进行循环:
1.对当前词新建一个类,我们现在又个类了
2.从这个类中贪心选择最好的两个类合并,现在我们剩下个类
最后我们再做词合并。算法时间复杂度