基于LDA对关注的微博用户进行聚类
转自: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对关注的微博用户进行聚类的更多相关文章
- 【转】基于LDA的Topic Model变形
转载自wentingtu 基于LDA的Topic Model变形最近几年来,随着LDA的产生和发展,涌现出了一批搞Topic Model的牛人.我主要关注了下面这位大牛和他的学生:David M. B ...
- 基于LDA的Topic Model变形
转载于: 转:基于LDA的Topic Model变形 最近有想用LDA理论的变形来解决问题,调研中.... 基于LDA的Topic Model变形 基于LDA的Topic Model变形最近几年来,随 ...
- 【Python3爬虫】微博用户爬虫
此次爬虫要实现的是爬取某个微博用户的关注和粉丝的用户公开基本信息,包括用户昵称.id.性别.所在地和其粉丝数量,然后将爬取下来的数据保存在MongoDB数据库中,最后再生成几个图表来简单分析一下我们得 ...
- selenium获取微博用户粉丝数
selenum的安装 selenium文档 获取微博用户粉丝数 from selenium import webdriver from time import sleep wd = webdriver ...
- Spark Mllib里相似度度量(基于余弦相似度计算不同用户之间相似性)(图文详解)
不多说,直接上干货! 常见的推荐算法 1.基于关系规则的推荐 2.基于内容的推荐 3.人口统计式的推荐 4.协调过滤式的推荐 协调过滤算法,是一种基于群体用户或者物品的典型推荐算法,也是目前常用的推荐 ...
- 微博爬虫,python微博用户主页小姐姐图片内容采集爬虫
python爬虫,微博爬虫,需要知晓微博用户id号,能够通过抓取微博用户主页内容来获取用户发表的内容,时间,点赞数,转发数等数据,当然以上都是本渣渣结合网上代码抄抄改改获取的! 要抓取的微博地址:ht ...
- 【WebMisCentral WMC】基于Extjs 4.2x的企业级用户授权认证中心系统(SSO+AM+SM),多租户SAAS应用
http://saas.chinacloudtech.com 题记 三年磨一剑,在企业信息化的道路上已经走了3年之久了,3年多时间里做了很多,突破了很多:有无奈和辛酸,也有收货与喜悦:自我价值也在不断 ...
- QQ登入(6)腾讯微博-获取微博用户信息,发送微博
1.1获取weibo用户信息 //先登入授权,可以参考QQ登入(1) Weibo mWeibo = new Weibo(this, mQQAuth.getQQToken()); mWeibo.getW ...
- [SharePoint 2010]关于基于声明(Claims)的用户认证模式
转:http://blog.csdn.net/zw_2011/article/details/7417132 SharePoint 2010在用户认证模式上,较之以前的版本有了非常大的改变.在Shar ...
随机推荐
- 原型设计工具Axure 建模工具powerdesigner
Licensee:IloveyouAxure Key:UChpuxwbDW6eAIaAf9UujEFSBwN3vpEz9snHvlCQVJGQy4p7WrCyKLLvV5QLvqva 注册用户名: ...
- .CO域名快被这帮搞IT的玩坏了……
鉴于近来国内访问Google的服务受阻,greatfire.org于前天推出了其基于亚马逊AWS的Google搜索镜像网站,地址是sinaapp.co.该网站随后因多家海外媒体的报道和众多微博大V的转 ...
- 两天三场Java实习生面试总结
Java 关键字(如abstract)[详解] String[相关面试题] String.StringBuffer.StringBuilder区别 String中有没有使一个字符串反转的方法 线程的实 ...
- 【转】XCode环境变量及路径设置 -- 待学习
原文网址:http://www.cnblogs.com/oc-bowen/p/5140541.html 一般我们在xcode里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,如果只是自 ...
- Shell教程1-第一个Shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了.输入一些代码: #!/bin/bash ...
- SVN 命令行 精编版
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout https://svn.sinaapp.com/beckhom 简 ...
- SDE+ORACLE优化配置
原文 SDE+ORACLE优化配置 SDE的性能取决于: 首先操作系统的性能:其次是Oracle的性能,再次是SDE的性能. 第一:操作系统,无非是内存.CPU.带宽等. 可以有待提高的地方:第一.硬 ...
- size_type、size_t、differentce_type以及ptrdiff_t
目录(?)[-] size_type size_t different_type ptrdiff_t size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::siz ...
- dzzoffice的树型结构用户管理设计
在DzzOffice1.1的开发中,针对用户使用群体重新设计了,机构.部门.用户管理应用. 传统OA,企业相关程序,一般是设置机构-设置部门-设置职位-添加用户这样的步骤.每个步骤分为不同的管理界面. ...
- 【c++】输出 0000,0001,0002,0003,0004...这样的字符串
#include <iostream> #include <iomanip> ; ){ stringstream buf; buf <<setfill()<& ...