转自:http://www.datalab.sinaapp.com/?p=237

最近看了LDA以及文本聚类的一些方法,写在这里算是读书笔记。文章最后进行了一个小实验,通过爬取本人在微博上关注的人的微博,利用微博的内容,尝试将我关注的人按主题进行进行聚类。

文本聚类就是把一个文本集分成一定数量的簇(Cluster),使每个簇内的文本之间具有较大的相似性,而使簇间的文本具有较大的差异性。传统的文 本聚类方法一般基于向量空间模型(vector space model): 在对文本集中的每个文本进行预处理(分词、停用词过滤等)、特征选择和权重计算之后,将文档集表示成一个高纬、稀疏的文档-词矩阵,进而使用K- Means、凝聚的层次聚类、DBSCAN等聚类方法对文档进行聚类。

在特征选择选择环节,虽然一些高效的特征选择方法,例如互信息MI(Mutual Information)、x2统计量等已经非常成功地应用于文本分类,但由于它们需要每个文档人工标记的类信息而无法应用于无监督的文本聚类。文本聚类 里面一般选择无监督的特征选择方法,例如文档频数(整个数据集中有多少个文本包含这个单词)、单词权(认为一个词在相关的文本中出现得越多, 在不相关的文本中出现得越少就越为重要,需要计算每个文档对的相似度)等。

由于基于VSM 向量空间模型在文本聚类时存在的高维稀疏问题,以及不能从语义上理解文本之间的内在联系,另一种比较流行的方法就是通过主题模型来给文本建模,将文本表示 成一个主题概率向量,这样能够充分的挖掘文本集合的主题信息。通过主题模型,原本是在高维的特征词空间上表示的文本,被转换在了低维的并且融入更多语义信 息的主题空间上来表达,应该能提高文本聚类性能和效率,使得聚类的结果更加有效。

LDA(Latent Dirichlet Allocation)主题模型

LDA 是一个三层贝叶斯概率模型,包含词、主题和文档三层结构。整个文档集有K个主题,每个主题是固定词汇表上的一个多项式分布。这些主题被集合中的所有文档所 共享,但每个文档有一个特定的主题分布。每个文档的主题分布θm从Dirichlet分布中抽样产生,每个主题的词分布φk也从Dirichlet分布中 抽样产生,这两个Dirichlet分布相互独立,参数分别是α和β。(Dirichlet 分布可以理解为一个分布的分布,从Dirichlet 分布中抽个样取出的是一个分布)。

LDA的图模型表示:

整个文档集的生成过程:

  • 1、首先从以β为参数的Dirichlet分布中,抽样产生整个文档集的K个词分布,标记为φ1至φk,即左侧的K个主题;
  • 2、对于每一篇文档:
  • 2.1、从以α为参数的Dirichlet分布中,抽样产生一个主题分布θm,即这篇文档中各个主题的比重,图中为右侧的直方图;
  • 2.2、对于文章m中的每一个词:
  • 2.2.1、以概率分布θm,选择K个主题中的一个主题,例如为φi
  • 2.2.2、以概率分布 φi,从该主题中选择一个词。

LDA的参数估计:

Gibbs 抽样容易实现并且能够有效地从大规模文集中抽取主题,是当前最流行的LDA 模型抽取算法。Gibbs 抽样并没有直接去计算主题-单词分布φk和文本上的主题分布θm,转而对每个位置上的词的主题进行迭代采样。一旦每个位置上的词的主题确定下来,那么φk和θm的值就可以在统计频次后计算出来。对每个位置上的词进行主题采样时,该词的主题以该词当时在各个主题上的概率分布采样获得。采样前需要计算该词属于每个主题的概率。

微博用户聚类实验:

  • (1)爬取我在微博上的关注的用户他们在之前一个月内发的微博。每个人的微博作为一个文本,得到大约500个文本;
  • (2)用IK Analyzer对每个文本进行切词,并同时过滤掉一些停用词;
  • (3)利用JGibbLDA将每个文本表示成一个主题向量,即该文本属于每个主题的概率,运行时指定了20个主题,进行了1000次迭代;
  • (4)使用scikit-learn里的K-Means进行聚类,指定的簇个数是20。

下面是聚类的一部分结果,可以看到一些内容账号的聚类效果还是可以的,主要是它们每天发博量比较大,而且博文的主题较明显。对于个人账号,往往发博量少而且主题分散。当然跟抓的量少也有关系。

(1) LOVE_湖人          湖人新闻动态         NikeBasketball         爱死科比论坛         CNTV体育台  科比演绎之路         于嘉         NBA 苏群

(2) SAP中国     创新工场微招聘     新浪校园招聘         IBM中国有限公司人才与招聘     Google中国校园招聘    IBM中国         IBM杭州分公司     IBM中国大学合作部     新浪招聘

(3) 百度校园  百度开发者中心     百度搜红包     编程之美全国挑战赛     美国国家仪器         阿里巴巴集团校园招聘         微软亚洲研究院         百老汇之家     acmicpc   微软学生技术俱乐部     阿里云     百度云     BaiduFamily     微软校招官方微博         微软中国     网易校园招聘

(4) DataScientist      52opencourse_挖课        网易汪源         丕子         刘思喆     杨滔_数据科学       邓侃         王威廉     北冥乘海生         刘洋THU         ChinaHadoop   MachineLearner      阿里日照

(5) 唯美丶中国风  全球视觉图宴         镜头中的中国         BJTUcaixia        百度旅游         全球顶尖摄影

(6) TechWeb     程苓峰-云科技        互联网的那点事     开心的老胡-GodHope    淘宝鬼脚七     google那点事儿     腾讯微信团队         张辉forestsong       刘江总编         月光博客         PingWest中文网     刘挺         王小川     36氪        雷军         Fenng       高效IT网     庄宝童

(7) Smile_geek 赫阳at百度 199IT-互联网数据中心  苏宁易购李斌         视物致知         蔡学镛     billgates   FT中文网         数据化管理         微数据     爬盟中国         DataV       淘宝技术大学         社会网络与数据挖掘     李开复     于仰民_Emilyu         数据挖掘_PHP         淘依韵     ResysChina      量子恒道         林仕鼎     钱皓-互联网分析师        陈利人     EMC中国研究院    BIT-百度技术学院     3W咖啡  微指数     淘薛奎     数据挖掘研究院     百度统计         TEDNews          周鸿祎     一淘数据工程师     杨栋_Kenny     大数据         张俊林say       郭去疾     数据魔方         微软云计算     ipad应用排行榜     数据挖掘与数据分析     唐福林     五洲红         AdMaster         程辉         2012百度之星程序设计大赛        eBayTech 百度推广         社交数据分析         Google黑板报         张亚勤

(8) 连城404   伯乐在线官方微博         图灵社区         何_登成  一淘测试         python4cn        骆逸         nosqlfan   zhh-2009 阿里技术嘉年华         微博应用架构         developerWorks       开源中国         程序员的那些事     LAMP人  InfoQ        程序员修炼营         TimYang   CNodeJS  百度技术沙龙         朴灵         微博平台架构         SinaAppEngine

(9) 一淘网       淘宝网     淘宝邓悟         Python发烧友         淘宝数据         rockdai     一淘招聘         淘楚材     乔三石     hugozhu   淘宝指数

(10)姚晨  花泽云静         司華Fighting   glinglingw         邹_小珊  蔡圆媛的后花园     开启新起点tianran         凌_欣       任婷婷养了一只皮皮兽     胡思乱想乐     BatmanFly        超级码力         macbax    Miss好好菁    蔡虎Stanley    夏炎xyxy          阿Oey–陈叶萍         Ali_lulululuya   夏碉堡     turbosun  依兰花开_emma    LillianC小超人         Loxpzi-四叶草 稀土部队

基于LDA对关注的微博用户进行聚类的更多相关文章

  1. 【转】基于LDA的Topic Model变形

    转载自wentingtu 基于LDA的Topic Model变形最近几年来,随着LDA的产生和发展,涌现出了一批搞Topic Model的牛人.我主要关注了下面这位大牛和他的学生:David M. B ...

  2. 基于LDA的Topic Model变形

    转载于: 转:基于LDA的Topic Model变形 最近有想用LDA理论的变形来解决问题,调研中.... 基于LDA的Topic Model变形 基于LDA的Topic Model变形最近几年来,随 ...

  3. 【Python3爬虫】微博用户爬虫

    此次爬虫要实现的是爬取某个微博用户的关注和粉丝的用户公开基本信息,包括用户昵称.id.性别.所在地和其粉丝数量,然后将爬取下来的数据保存在MongoDB数据库中,最后再生成几个图表来简单分析一下我们得 ...

  4. selenium获取微博用户粉丝数

    selenum的安装 selenium文档 获取微博用户粉丝数 from selenium import webdriver from time import sleep wd = webdriver ...

  5. Spark Mllib里相似度度量(基于余弦相似度计算不同用户之间相似性)(图文详解)

    不多说,直接上干货! 常见的推荐算法 1.基于关系规则的推荐 2.基于内容的推荐 3.人口统计式的推荐 4.协调过滤式的推荐 协调过滤算法,是一种基于群体用户或者物品的典型推荐算法,也是目前常用的推荐 ...

  6. 微博爬虫,python微博用户主页小姐姐图片内容采集爬虫

    python爬虫,微博爬虫,需要知晓微博用户id号,能够通过抓取微博用户主页内容来获取用户发表的内容,时间,点赞数,转发数等数据,当然以上都是本渣渣结合网上代码抄抄改改获取的! 要抓取的微博地址:ht ...

  7. 【WebMisCentral WMC】基于Extjs 4.2x的企业级用户授权认证中心系统(SSO+AM+SM),多租户SAAS应用

    http://saas.chinacloudtech.com 题记 三年磨一剑,在企业信息化的道路上已经走了3年之久了,3年多时间里做了很多,突破了很多:有无奈和辛酸,也有收货与喜悦:自我价值也在不断 ...

  8. QQ登入(6)腾讯微博-获取微博用户信息,发送微博

    1.1获取weibo用户信息 //先登入授权,可以参考QQ登入(1) Weibo mWeibo = new Weibo(this, mQQAuth.getQQToken()); mWeibo.getW ...

  9. [SharePoint 2010]关于基于声明(Claims)的用户认证模式

    转:http://blog.csdn.net/zw_2011/article/details/7417132 SharePoint 2010在用户认证模式上,较之以前的版本有了非常大的改变.在Shar ...

随机推荐

  1. 原型设计工具Axure 建模工具powerdesigner

    Licensee:IloveyouAxure Key:UChpuxwbDW6eAIaAf9UujEFSBwN3vpEz9snHvlCQVJGQy4p7WrCyKLLvV5QLvqva   注册用户名: ...

  2. .CO域名快被这帮搞IT的玩坏了……

    鉴于近来国内访问Google的服务受阻,greatfire.org于前天推出了其基于亚马逊AWS的Google搜索镜像网站,地址是sinaapp.co.该网站随后因多家海外媒体的报道和众多微博大V的转 ...

  3. 两天三场Java实习生面试总结

    Java 关键字(如abstract)[详解] String[相关面试题] String.StringBuffer.StringBuilder区别 String中有没有使一个字符串反转的方法 线程的实 ...

  4. 【转】XCode环境变量及路径设置 -- 待学习

    原文网址:http://www.cnblogs.com/oc-bowen/p/5140541.html 一般我们在xcode里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,如果只是自 ...

  5. Shell教程1​-第一个Shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了.输入一些代码: #!/bin/bash ...

  6. SVN 命令行 精编版

    1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout https://svn.sinaapp.com/beckhom 简 ...

  7. SDE+ORACLE优化配置

    原文 SDE+ORACLE优化配置 SDE的性能取决于: 首先操作系统的性能:其次是Oracle的性能,再次是SDE的性能. 第一:操作系统,无非是内存.CPU.带宽等. 可以有待提高的地方:第一.硬 ...

  8. size_type、size_t、differentce_type以及ptrdiff_t

      目录(?)[-] size_type size_t different_type ptrdiff_t size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::siz ...

  9. dzzoffice的树型结构用户管理设计

    在DzzOffice1.1的开发中,针对用户使用群体重新设计了,机构.部门.用户管理应用. 传统OA,企业相关程序,一般是设置机构-设置部门-设置职位-添加用户这样的步骤.每个步骤分为不同的管理界面. ...

  10. 【c++】输出 0000,0001,0002,0003,0004...这样的字符串

    #include <iostream> #include <iomanip> ; ){ stringstream buf; buf <<setfill()<& ...