unit3 文本聚类

《集体智慧编程》第三单元“发现群组”主要亮点是文本的聚类。故针对第三单元的博客文本聚类做记录。

unit3 文本聚类_第1张图片

1、数据对象

通过读取每个博客的词汇,统计词频,形成如下单词表作为本次文本聚类的数据资料。第一列为所有博客名称,第一行为博客中出现的词汇,中间数值表示某个博客出现该词汇的次数。

unit3 文本聚类_第2张图片

2、分级聚类

分级聚类通过连续不断地将最为相似的群组两两合并,来构造出一个群组的层级结构。
每个群组都是从单一元素开始的。在每次迭代的过程中,分级聚类算法会计算每两个群组间的距离,并将距离最近的两个群组合并成一个新的群组。这一过程会一直重复下去,直至只剩一个群组为止。

unit3 文本聚类_第3张图片

【相似度定义】元素的相似度由相对位置体现,距离越近越相似。
【缺点】计算量太大,必须计算每两个配对项之间的关系,并且在合并之后还需要重新计算新距离,在处理大规模的数据集时,该算法的运行速度会非常缓慢。

考虑分级聚类的实质,在实际运行中我只处理了部分博客数据,产生的聚类划分结果如下所示:

unit3 文本聚类_第4张图片

3、K均值聚类

  • 首先随机确定K个中心位置。(需实现确定要划分的类别数量)
  • 然后将各个数据项分配给最邻近的中心点。分配完成后,重新安置中心点,中心点设置为群内元素中心位置。
  • 进入第二轮循环,最邻近划分--->重新安置中心点---->
  • 循环······
unit3 文本聚类_第5张图片

【要求】预先告诉算法希望生成的聚类数量.
【缺点】由于初始中心的随机选取,每次聚类结果是不一样的
【优点】算法执行速度更快

对部分博客数据进行k均值聚类,当划分为5类博客时,划分结果如下所示:

unit3 文本聚类_第6张图片

4、实际结合

  • 书本里面的博客我不是很熟悉,也无法直观解释这些博客划分在一起的理由,逛的时候发现新浪博客博文文本聚类好像很不错。

  • 第三单元聚类的代码可以在github上找书籍的配套代码

你可能感兴趣的:(unit3 文本聚类)