K-means在关键词聚类中的尝试

K-means在文本聚类中的尝试

K-means算法是无监督的聚类算法。它的算法思想是:先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。

K-means算法的关键点在于:

  • 初始k个聚类中心的选择
  • 距离的计算方式

我想讨论的是:在关键词聚类的任务当中,距离的计算方式的选择,对聚类效果的影响。


具体任务

我爬取了司法相关的法律文章,包括:

  • 法律
  • 法律法规
  • 法律解读
  • 行政法规
  • 部门规章
  • 地方政府规章

首先对于这些文章我使用了LTP进行分词,对每个词计算它的TFIDF值,然后根据TFIDF值大小选取了每篇文章的前10个关键词得到关键词词袋。

任务的目的是将同一类关键词划分在一起,得到司法文章某一类的共性,从而得到司法文章的全部类别特性。

我把这个任务视为一个聚类任务。因为虽然我们事先已经对文章有了“预分类”,但是文章的关键词可能是多个类别所共有的,换言之,关键词词袋不同于“预分类”文章,并不具有类别特性,仍需要我们根据关键词的特性将同一类关键词划分在同一簇中。


关键词向量化

我对关键词向量化的方式是词向量概率模型,做法是将关键词映射到6维实数向量,6个维度分别对应----法律,法律法规,法律解读,部门规章,行政法规,地方政府规章。对于关键词w(w属于关键词词袋),他的第i维的值xi是它在i维中出现的tfidf值的和,于是w = {x0,x1,x2,x3,x4,x5}

向量化后的关键词词袋,就可以应用k-means算法进行聚类了,但由于我之前没有NLP的经验,使用k-means算法对关键词聚类的过程中走了弯路。


欧式距离

欧式距离是K-means在网上流传性比较广的实现方式,尽管我不知道它是否在学术上流传广泛。

应用欧式距离进行k-means聚类,问题在于:文本的预处理以及向量化过程导致使用欧式距离难以得到良好效果。
具体而言,为了得到文章的关键词,不能简单的使用概率模型,不得不使用TF-IDF(逆向文本率)剔除文本共性,得到文章的关键词;但词向量化过程,由于剔除了文本共性,得到的词向量(欧式距离中更好的表述是“词点”),绝大多数都是诸如{1,0,0,0,0,0}只在某一维度上拥有非0值。最终导致,使用欧式距离,绝大多数“词点”集中在{0,0,0,0,0,0}“原点”附近。


余弦相似度

因为欧式距离难以实现聚类效果,所以我把目光转向了在其他文章博客中多次提到但没有人拿来实现的余弦相似度K-means。
为了少走弯路,我查阅了基于余弦距离选取初始簇中心的文本聚类研究论文。
论文的贡献在于:

  • 1、探索余弦相似度与欧氏距离的关系, 在此基础上给出一种余弦距离, 通过余弦距离的优良性质, 使改进算法思想得以运用到余弦K-means算法中。
  • 2、余弦K-means及其拓展算法的簇内中心点仍是簇内各坐标的和的均值, 与欧氏K-means的簇内中心点的计算方法相同
  • 3、将欧氏距离的距离远即可当初始点的思想迁移应用于余弦K-means算法, 即依次寻找余弦距离相隔最远的K个点。

在1中,作者证明了余弦相似度、欧氏距离,以及作者提出的余弦距离在函数上的关系,作为作者改进K-means算法的基础。
在这里插入图片描述
作者在文章中给出了改进后的算法在公开数据集20newsgroup (20NG) 新闻组数据集上的实验数据
在这里插入图片描述
可见改进后的算法效果得到了提升。

有了上述论文的理论支持,我部分实现了作者的改进Kmeans算法(没有采用余弦距离,采用了余弦相似度,但中心点和初始点选择参考了作者的实现)。同一簇内的向量基本具有相同的方向,我又根据簇内向量在中心向量上的投影的大小,将簇内向量进行重要性排序,最终利用了词向量方向和距离的特性,得到了较好的聚类效果。

http://xueshu.baidu.com/usercenter/paper/show?paperid=40a3ae181b554a498725b6815daf3e18&site=xueshu_se

发布了11 篇原创文章 · 获赞 21 · 访问量 9244

猜你喜欢

转载自blog.csdn.net/BigPig_LittleTail/article/details/88730263