教你文本聚类(参考http://www.kuqin.com/searchengine/20080511/8323.html)

来源:互联网 发布:淘宝买家秀软件 编辑:程序博客网 时间:2024/06/01 12:37

    2009过去了,为了纪念过去的一年特在此 10 年 的第一天起了个大早,参考 蛙蛙池塘 的 教你文本聚类 一文http://www.kuqin.com/searchengine/20080511/8323.html   以 Java 代码的形式予以实现。一下为我对此文的理解及源码。

 

ps:顺祝大家在新的一年里 工作顺利, 心想事成!

   

 

    摘要:文本聚类是搜索引擎和语义web的基本技术,本文和大家一起学习一下简单的文本聚类算法,可能不能直接用于实际应用中,但对于想学搜索技术的初学者还是有一定入门作用的。下面简单列举该程序所涉及的内容:

 

     A》》TF/IDF权重

 

      TF-IDF(term frequency–inverse document frequency)

         这是一种用于信息检索的一种常用加权技术。它是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是 0.03 (3/100)。一个计算文件频率 (DF) 的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是 10,000,000份的话,其文件频率就是 0.0001 (1000/10,000,000)。最后,TF-IDF分数就可以由计算词频除以文件频率而得到。以上面的例子来说,“母牛”一词在该文件集的TF- IDF分数会是 300 (0.03/0.0001)。这条公式的另一个形式是将文件频率取对数。(具体的计算原理,请参考维基百科tf–idf条目)

 

     B》》用余弦夹角计算文本相似度,用方差计算两个数据间欧式距离

          请参考 数学之美, 以便理解余玄相似度的实际理论应用。 

 

     C》》用k-means进行数据聚类等数学和统计知识。关于这些概念可以去google,或者参考文本后的参考链接。

          请参考:http://beauty9235.javaeye.com/blog/161675

 

  

    文本聚类思路:计算两篇文档的相似度,最简单的做法就是用提取文档的TF/IDF权重,然后用余弦定理计算两个多维向量的距离。能计算两个文本间的距离后,用标准的k-means算法就可以实现文本聚类了,具体描述如下:

   

    1》文档预处理:1)文档分词;2)移除停用词;3)单词正规化处理

    2》分出的单词就作为索引项(或单词表),它们代表的就是向量空间的项向量

    3》计算项权值:这包括要计算1)词频 ; 2)倒排文件频率;3)TF-IDF权值

    4》计算文档之间的相似度,一般用余弦相似度(cosine similarity)一同使用于向量空间模型中,用以判断两份文件之间的相似性

 

 

测试:首先我们准备以下数据
===================
奥运 拳击 入场券 基本 分罄 邹市明 夺冠 对手 浮出 水面
股民 要 清楚 自己 的 目的
印花税 之 股民 四季
杭州 股民 放 鞭炮 庆祝 印花税 下调
残疾 女 青年 入围 奥运 游泳 比赛 创 奥运 历史 两 项 第一
介绍 一 个 ASP.net MVC 系列 教程
在 asp.net 中 实现 观察者 模式 ,或 有 更 好 的 方法 (续)
输 大钱 的 股民 给 我们 启迪
Asp.Net 页面 执行 流程 分析
运动员 行李 将 “后 上 先 下” 奥运 相关 人员 行李 实名制
asp.net 控件 开发 显示 控件 内容
奥运 票务 网上 成功 订票 后 应 及时 到 银行 代售 网点 付款
某 心理 健康 站 开张 后 首 个 咨询 者 是 位 新 股民
ASP.NET 自定义 控件 复杂 属性 声明 持久性 浅析
==================
很明显以上数据可以分为三类:asp.net,奥运和股民,我们就写程序来实现它,蛙蛙池塘 已用 C# 实现了,但是为了加深理解,我将代码以Java的形式实现了一遍, 具体参见附件:

 

    下面对整个程序的思路作一下简单描述:

 

1. 首先要建立分词的方法,提取每个文本的词语,以便于其他方法的调用;

2. 建立构造在所有文本中出现过的词语的向量空间,以便于后面的相似度计算(该方法将调用 1中的方法变量所有的文本,然后构造词语集合,得到词语的向量空间), 通过 Map<String, Integer> 构造每个词语的索引,便于到排序索引的建立。

3. 正向索引的获取:统计每个词语在每篇文档中的出现次数,描述如下:

       首先 1 中的方法提取文本中的词语,然后获得该文本的词语集合(即,消重);然后通过 Arrays.binarySearch  找到每个词语的位置,然后统计个数,记得每篇文章的词语的正向索引。

4. 实现到排序索引:(觉得很经典)

  调用 3 中的方法,构造到排序索引,并统计每个词语的文档频率 及 词语的最大文档频率(标准化处理每个词语的频率,为求 td/idf 做准备)

5. 其他地方的关键就在于 文本分词(在该例子中以 接口 实现, 以使的可以提供其他分词方法, 该类例子的实现只是以空格的方式分割,分词方法正在研究中,希望与大家交流), K-nn聚类方法(该方法在原来的项目中做过,觉得优化空间不大,故只用原型)

 

 

 

聚类结果如下

 

 

Iteration 0...
Iteration 1...
Iteration 2...
-----------------
0  聚类成员是 :[2, 3, 7, 11]

印花税 之 股民 四季
杭州 股民 放 鞭炮 庆祝 印花税 下调
输 大钱 的 股民 给 我们 启迪
奥运 票务 网上 成功 订票 后 应 及时 到 银行 代售 网点 付款
-----------------
1  聚类成员是 :[0, 4, 9]

奥运 拳击 入场券 基本 分罄 邹市明 夺冠 对手 浮出 水面
残疾 女 青年 入围 奥运 游泳 比赛 创 奥运 历史 两 项 第一
运动员 行李 将 “后 上 先 下” 奥运 相关 人员 行李 实名制
-----------------
2  聚类成员是 :[1, 5, 6, 8, 10, 12, 13]

股民 要 清楚 自己 的 目的
介绍 一 个 ASP.net MVC 系列 教程
在 asp.net 中 实现 观察者 模式 ,或 有 更 好 的 方法 (续)
Asp.Net 页面 执行 流程 分析
asp.net 控件 开发 显示 控件 内容
某 心理 健康 站 开张 后 首 个 咨询 者 是 位 新 股民
ASP.NET 自定义 控件 复杂 属性 声明 持久性 浅析

 

 

 

 

 

   好了,写了这么多,我来列举下参考资料吧,当然也是对其他博主的知识产权的尊重,呵呵~

 

 

   http://www.cnblogs.com/onlytiancai/archive/2008/05/10/1191557.html

   http://blog.csdn.net/lkf0217/archive/2009/08/23/4475872.aspx

   http://mx19841031.javaeye.com/blog/224443

 

 

  不会上传啊,呵呵, 可以 email 交流,  wahm2519@gmail.com

 

                                                                                                                                    于 2010.1.1 早 10:00   教三-916

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 黑色裙子被染色了怎么办 戴墨镜鼻子太塌怎么办 戴墨镜鼻子有印怎么办 戴眼镜鼻梁塌了怎么办 站的时间长了腿疼怎么办 小孩腿筋拉伤了怎么办 走多了小腿骨疼怎么办 走多了一个腿疼怎么办 走太多路腿酸痛怎么办 老年人脚肿并痛怎么办 孩子蛙跳肌后大腿痛怎么办 走路久了腿酸怎么办 走路多了膝盖痛怎么办 走路多了小腿痛怎么办 走多了腿疼怎么办 小腿走多了酸痛怎么办 腿肚受凉了酸痛怎么办 晚上腿疼的睡不着觉怎么办 走路走多了腿酸怎么办 跳完蛙跳大腿疼怎么办 走路走多了脚疼怎么办 走太多路脚酸痛怎么办 走路走的腿酸痛怎么办 路走得太多腿疼怎么办 走路走的足弓疼怎么办 走路走多了膝盖怎么办 2岁宝宝走路一只脚内八字怎么办 6岁宝宝o型腿怎么办 一岁宝宝o型腿怎么办 宝宝一岁o型腿怎么办 宝宝一周两个月走路弓着腿怎么办 宝宝腿走路膝盖弯曲怎么办 两岁宝宝不爱走路怎么办 水鸭子脚不能走了怎么办 鸭子坐着脚走不动怎么办 鸭子步走了腿疼怎么办? 跳爵士舞没感觉怎么办 军校学员体能考核不达标怎么办 俯卧撑新兵连做不动怎么办 宝宝胆小不敢上体能课怎么办 28岁老太太抬头纹剩两颗怎么办