新浪微博文本分析初探_第1页
新浪微博文本分析初探_第2页
新浪微博文本分析初探_第3页
新浪微博文本分析初探_第4页
新浪微博文本分析初探_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

新浪微博文本分析初探Postedon2013/01/13by郝智恒自从lijian大哥的Rweibo包问世以来,便成了R爱好者们获取新浪微博数据的最为重要的工具。在该包的中文主页上,作者对如何连接新浪微博的 API,获取授权,并以此为基础开发应用的原理讲解的非常清楚。对于我这种连基本的网页开发神马原理都一点也不清楚的菜鸟来说, Rweibo是一种非常趁手的获取微博数据的工具。有了获取数据的工具,对于中文文本分析来说,最重要的是分词。这里使用的分词算法来自中科院ictclas算法。依然是沾了 lijian大哥Rwordseg的光,直接拿来用了。有了这两样利器,我们便可以来分析一下新浪微博的数据了。我选取的话题是最近热映的国产喜剧电影《泰囧》,在微博上拿到了 998条和泰囧”有关的微博文本。代码如下(以下代码不能直接执行,请首先阅读链接中 Rweibo的关于授权帮助文档):require(Rweibo)registerApp(app_name="SNA3","********","****************")roauthv-createOAuth(app_name="SNA3",access_name="rweibo")res<-web.search.content(" 泰囧",page=50,sleepmean=10,sleepsd=1)$Weibo获取了数据之后,首先迫不及待对微博文本进行分词。代码如下( Rwordseg包可以在语料库中自助加入新词,比如下面的 insertWords语句):require(Rwordseg)insertWords("泰囧")n=length(res[,1])res=res[res!=""]words=unlist(lapply(X=res,FUN=segmentCN))

word=lapply(X=words,FUN=strsplit,"")v=table(unlist(word))v=sort(v,deceasing=T)v[1:100]head(v)d=data.frame(word=names(v),freq=v)完成分词之后,我们最先想到的, 便是对词频进行统计。 词频排名前53的词列表如下(这个词频是我人工清理过的,但是只删除了一些符号):泰囧1174一代宗师87时候53生活44娱乐35成功30电影385看过70影片52文化43但是33王宝强30票房306上映68今天51影院43分享33囧275泰国68喜剧51炮轰40发现32笑192感觉62导演49电影院38故事32俗188观众61好看49排38光线32十二生肖123可以60喜欢49哈哈37国民32什么104大家59上海48兽37时间32中国102教授56现在48水平37哈哈哈31徐峥9011亿54搞笑47需要35逼30从中我们可以看出一些东西。比如说这部电影的口碑似乎还不错,此外某教授对其的炮轰也引发了不少得讨论。 另外,同档期的另外两部电影(一代宗师,十二生肖)也经常和它同时被提及(这是否会对某些搞传播和营销的人带来一些启发,联动效应之类的,纯数个人瞎说)。词云展示是不可少的,展示频率最高的 150个词(这里我实现把分词的结果存放在了 txt文件中,主要目的是为了节省内存):require(wordcloud)d=read.table("wordseg.txt")dd=tail(d,150)op=par(bg="lightyellow")#grayLevels=gray((dd$freq)/(max(dd$freq)+140))rainbowLevels=rainbow((dd$freq)/(max(dd$freq)-10))wordcloud(dd$word,dd$freq,col=rainbow(length(d$freq)))par(op)E-—成勒可以罩-E-—成勒可以罩-■mFEA牌進匚医旻七m一珀看荽詹像%大冬沁jHJFX.gp ■*--二凱或”亘戈产…3tfe

肿中国V12三丢苣术干下面做一些相对来说比较专业的文本挖掘的工作。主要目的是对这 998条微博进行聚类。聚类里最核心的概念是距离。将距离比较靠近的数据聚为一类就是聚类。对于文本来说,如何定义距离呢?也就是说我如何来衡量微博与微博之间的距离。这涉及到了文本挖掘最基本的概念,通过建立语料库,词频 -文档矩阵,来衡量文档之间的相关性,从而衡量文档之间的距离之类的。 详情请参看刘思喆大哥 R语言环境下的文本挖掘。下面使用PAM算法,对998条微博进行聚类。看看能不能得出一些什么有意思的结果。PAM算法全称是PartitioningAroundMedoids算法。中文翻译为围绕中心点的划分算法。该算法是基于相异矩阵的( dissimilaritymatrix)。也就是说,这个算法对于样本的距离度量是基于相异矩阵的。而不是基于通常使用的距离。因此,这个算法相对来说比较稳健(比起 kmeans)。该算法首先计算出 k个medoid,medoid的定义有点绕口。基本上的想法就是它和同一聚类中的其他对象的相异性是最小的。也就是说,同一个聚类的对象都是围绕着 medoid的。和它的平均相异程度最小。找到这些medoid之后,再将其他样本点按照与 medoid的相似性进行分配。 从而完成聚类。R语言中的fpc包实现了这种算法,并且给出了非常有意思的聚类图。require(tm)#先生成一个语料库,来清理一下微博的文本weiboCorpusv-Corpus(VectorSource(res))#删除标点符号weiboCorpusv-tm_map(weiboCorpus,removePunctuation)#删除数字weiboCorpusv-tm_map(weiboCorpus,removeNumbers)#删除URL,使用了一点正则表达式removeURLv-function(x)gsub("http[[:aInum:]]*","",x)weiboCorpusv-tm_map(weiboCorpus,removeURL)#再次分词weiboDatav-as.data.frame(weiboCorpus)weiboDatav-t(weiboData)weiboDatav-as.data.frame(weiboData)#head(weiboData)人再囧途insertWords(c(" 泰囧"," 十二生肖"," 一代宗师","黄渤"," 人在囧途“人再囧途IIJ"三俗"))weiboData$segWordv-segmentCN(as.matrix(weiboData)[,1])head(weiboData)

#第二个变量为分词的结果#再次形成一个语料库,用来做更进一步的分析weiboCorpusForAnys# 生成文档-词条矩阵weiboTDMatrixv-TermDocumentMatrix(weiboCorpusForAnys,control=list(wordLengths=c(1,Inf)))#对微博进行聚类MatrixWeiboForClusterv-t(MatrixForCluster)k<-3kmeansResv-kmeans(MatrixWeiboForCluster,k)require(fpc)pamResv-pamk(MatrixWeiboForCluster,metric="manhattan")k<-pamRes$nckpamResultv-pamRes$pamobjectlayout(matrix(c(1,2),2,1))plot(pamResult,color=F,labels=4,lines=0,cex=0.8,

col.clus=1,col.p=pamResult$clustering)layout(matrix(1))pamRes结果我们将微博分成了两类:出』.詞呼网鼻■Bwu. &■di««.'immImviap\[1'当然了,从这个图,你很难看出点什么有益的信息,就是图个好看。我们不妨来看看被分成两类的微博都分别说了些什么。具体看到过程和解读因人而异,这里也没什么代码要列出来。我只说一些我看到的,不保证是对的。两个聚类中的微博讨论的问题不同,第一类讨论的是看了泰囧的心情,比如开心,高兴抑或难过之类的。比如:哈哈哈二到無窮大•大半夜的我這二逼在家看泰囧•笑到爸爸起床罵我..不好意思咧.實在沒忍住”时间滴答滴答的走我知道我在想着一个人看泰囧片头的时候熟悉的名字我一下子愣住了我想我是在乎了这样的夜里我难过”大半夜睡不着觉一个人在家看盗版泰囧突然觉得很凄惨 ”我们一起吃牛排一起坐轮渡一起看金门一起去乐园一起吃牛排一起看大海一起坐公交一起啃鸡爪一起过圣诞一起看泰囧一起去鼓浪屿一起打的绕厦门岛一起在酒店吃早餐一起在一张大床上睡觉一起吃烤鱼一起在大排档吃肉一起在 KFC买了对辣翅一起爬鼓山一起抱着对方说我爱你”这一类微博本身不够成对电影的评价,电影是这些博主生活的一部分,或悲或喜,电影只是陪衬。第二类微博,则集中于对电影的评价,褒贬不一,比如:搜索一代宗师发现十个里面九个说不好看上回的泰囧微博上都是说怎么怎么好笑结果去影院一看大失所望还没有赵本山演的落叶归根幽默和寓意深远纯属快餐式电影其实好的事物往往具有很大的争议性就比如 John.Cage.的有的人觉得纯属扯淡有的人却如获至宝我想王家卫的电影也是如此 ”应该看第一部人在囧途比泰囧好看太多了第一部我从头看到尾很有意思第二部看分钟掐断沉闷没什么笑点”泰囧实在好看极了又搞笑又感动让我哭笑不得真心推荐晚安啦 •我在”发表了博文•影评人再囧途之泰囧••首映没有赶上好多朋友强烈向我推荐推荐理由很具有唯一性笑到我抽搐•笑成了这部电影唯一的标签但是这已经足够了 •在好莱坞大片冲击欧洲小资”从我的解读来看,微博大致分为这两类,如果进一步分析,也可以将发微博的人分成两类。一类可能相对感性,单纯,生活中的高兴或者快乐,会表现在微博中。电影只是作为引发他们情绪的一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论