利用CURE算法来进行文本聚类
看了下“蛙蛙推荐:蛙蛙教你文本聚类”,链接地址为http://www.cnblogs.com/onlytiancai/archive/2008/05/10/1191557.html
对于文本顺序发生了变化的情况,k-means算法无法解决,后来网上找个到CURE算法的介绍,“层次聚类方法的CURE算法研究”是个pdf文档,
如是按照文章所说结合wawa的东西,实现了下CURE算法,代码写得一般,结果还行,大家有空就看看吧。
数据也用的是wawa的
测试:首先我们准备以下数据
===================
奥运 拳击 入场券 基本 分罄 邹市明 夺冠 对手 浮出 水面
股民 要 清楚 自己 的 目的
印花税 之 股民 四季
杭州 股民 放 鞭炮 庆祝 印花税 下调
残疾 女 青年 入围 奥运 游泳 比赛 创 奥运 历史 两 项 第一
介绍 一 个 ASP.net MVC 系列 教程
在 asp.net 中 实现 观察者 模式 ,或 有 更 好 的 方法 (续)
输 大钱 的 股民 给 我们 启迪
Asp.Net 页面 执行 流程 分析
运动员 行李 将 “后 上 先 下” 奥运 相关 人员 行李 实名制
asp.net 控件 开发 显示 控件 内容
奥运 票务 网上 成功 订票 后 应 及时 到 银行 代售 网点 付款
某 心理 健康 站 开张 后 首 个 咨询 者 是 位 新 股民
ASP.NET 自定义 控件 复杂 属性 声明 持久性 浅析
==================
放在bin下的input.txt中
顺序可以你可以随意打乱
关键代码说明,其他的可以去参考wawa的
//2、计算类间距离 double max = double.MaxValue; int i_min = -1; int j_min = -1; for (int i = 0; i < _clusters.Count; i++) { for (int j = i + 1; j < _clusters.Count; j++) { double dist = getDistance(_clusters[i], _clusters[j]); _distanceCache[i, j] = dist; if (_distanceCache[i, j] < max) { max = _distanceCache[i, j]; i_min = i; j_min = j; } } } // //3、合并距离最小的两个类 Merge(i_min, j_min); if (_k == _clusters.Count) break;
具体理解算法要看pdf文档
地址 https://files.cnblogs.com/panzhilei/层次聚类方法的CURE算法研究.pdf
用到IFIDF,对概念不熟可以搜索“数学之美”,
数学之美 系列九 -- 如何确定网页和查询的相关性 地址为 http://googlechinablog.com/2006/06/blog-post_27.html
建议从系列一开始看起。
代码用Vs2008开发
地址 https://files.cnblogs.com/panzhilei/CureDemo.rar