当前位置:首页 >> 互联网 >>

新浪微博文本分析初探v0.1


光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 新浪微博文本分析初探 v0.1_光环大数据培训

有了获取数据的工具,对于中文文本分析来说,最重要的是分词。这里使用 的分词算法来自中科院 ictclas 算法。 依然是沾了 lijian 大哥 Rwordseg 的光, 直接拿来用了。

有了这两样利器,我们便可以来分析一下新浪微博的数据了。我选取的话题 是最近热映的国产喜剧电影《泰囧》 ,在微博上拿到了 998 条和“泰囧”有关的 微博文本。代码如下(以下代码不能直接执行,请首先阅读链接中 Rweibo 的关 于授权帮助文档) :

#关键词搜索并不需要注册 APIrequire(Rweibo)#registerApp(app_name = "SNA3", "********", "****************")#roauth <- createOAuth(app_name = "SNA3", access_name = "rweibo")res <- web.search.content("泰囧", page = 10, 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, decreasing = T)v[1:100]head(v)d = data.frame(word = names(v), freq = v)

完成分词之后,我们最先想到的,便是对词频进行统计。词频排名前 53 的 词列表如下(这个词频是我人工清理过的,但是只删除了一些符号) :

光环大数据 http://hadoop.aura-el.com

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 泰囧 1174 娱乐 35 电影 385 43 但是 33 票房 306 43 囧 275 40 笑 192 院 38 俗 188 光线 32 十二生肖 123 国民 32 什么 104 时间 32 中国 102 37 徐峥 90 35 逼 30 从中我们可以看出一些东西。比如说这部电影的口碑似乎还不错,此外某教 授对其的炮轰也引发了不少得讨论。另外,同档期的另外两部电影(一代宗师, 十二生肖)也经常和它同时被提及(这是否会对某些搞传播和营销的人带来一些 启发,联动效应之类的,纯数个人瞎说) 。 词云展示是不可少的,展示频率最高 的 150 个词(这里我实现把分词的结果存放在了 txt 文件中,主要目的是为了节 省内存) : 哈哈哈 31 11 亿 54 搞笑 47 需要 教授 56 现在 48 水平 大家 59 上海 48 兽 37 可以 60 喜欢 49 哈哈 37 故事 32 观众 61 好看 49 排 38 发现 32 感觉 62 导演 49 电影 分享 33 泰国 68 喜剧 51 炮轰 一代宗师 87 成功 30 看过 70 王宝强 30 上映 68 今天 51 影院 影片 52 文化 时候 53 生活 44

require(wordcloud)d = read.table("wordseg.txt")dd = tail(d, 150)op

光环大数据 http://hadoop.aura-el.com

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com = par(bg = "lightyellow")# grayLevels = gray((dd$freq)/(max(dd$freq) + 140))# wordcloud(dd$word, dd$freq, colors = grayLevels)rainbowLevels = rainbow((dd$freq)/(max(dd$freq) - 10))wordcloud(dd$word, dd$freq, col = rainbow(length(d$freq)))par(op)

下面做一些相对来说比较专业的文本挖掘的工作。 主要目的是对这 998 条微 博进行聚类。聚类里最核心的概念是距离。将距离比较靠近的数据聚为一类就是 聚类。对于文本来说,如何定义距离呢?也就是说我如何来衡量微博与微博之间 的距离。 这涉及到了文本挖掘最基本的概念, 通过建立语料库, 词频-文档矩阵, 来衡量文档之间的相关性,从而衡量文档之间的距离之类的。详情请参看刘思喆 大哥 R 语言环境下的文本挖掘。下面使用 PAM 算法,对 998 条微博进行聚类。看 看能不能得出一些什么有意思的结果。

PAM 算法全称是 Partitioning Around Medoids 算法。中文翻译为围绕中心 点的划分算法。 该算法是基于相异矩阵的 (dissimilarity matrix) 。也就是说, 这个算法对于样本的距离度量是基于相异矩阵的。而不是基于通常使用的距离。 因此, 这个算法相对来说比较稳健 (比起 kmeans) 。 该算法首先计算出 k 个 medoid, medoid 的定义有点绕口。基本上的想法就是它和同一聚类中的其他对象的相异 性是最小的。也就是说,同一个聚类的对象都是围绕着 medoid 的。和它的平均 相异程度最小。找到这些 medoid 之后,再将其他样本点按照与 medoid 的相似性 进行分配。从而完成聚类。R 语言中的 fpc 包实现了这种算法,并且给出了非常 有意思的聚类图。

首先,载入 tm 包,建立语料库,建立词频矩阵:

#4.建立语料库 require(tm)#先生成一个语料库,来清理一下微博的文本 weiboCorpus<-Corpus(VectorSource(res))# 删 除 标 删 点 除 符 数 号 字

weiboCorpus<-tm_map(weiboCorpus,removePunctuation)#

光环大数据 http://hadoop.aura-el.com

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com weiboCorpus<-tm_map(weiboCorpus,removeNumbers)#删除 URL,使用了一点正则 表 达 式 removeURL<-function(x)

gsub("http[[:alnum:]]*","",x)weiboCorpus<-tm_map(weiboCorpus,removeUR L)# 再 次 分 词

weiboData<-as.data.frame(weiboCorpus)weiboData<-t(weiboData)weiboData <-as.data.frame(weiboData)#head(weiboData) # 再 次 加 入 一 些 词

insertWords(c("泰囧 "," 十二生肖 ","一代宗师 ","黄渤"," 人在囧途 "," 人再囧 途 "," 三 俗

"))weiboData$segWord<-segmentCN(as.matrix(weiboData)[,1])#head(weiboD ata)#形成了一个 data.frame--weiboData,第一个变量为微博内容本身,第二 个变量为分词的结果#再次形成一个语料库,用来做更进一步的分析 weiboCorpusForAnys <- Corpus(DataframeSource(weiboData))#其实这个时候 再画一个词云,可能效果会更好些#目前代码运行到这一步都是没有问题的。我 反复试了几次了。#下面的 fpc 做聚类,最终图形无法展示出来。回头我 5.1 放 假回来会扣一下的。

#5.pam 算法对微博进行聚类分析 require(fpc) weiboTDMatrix control = list(wordLengths = c(1, Inf))) TDMforCluster<-removeSparseTerms(weiboTDMatrix,sparse=0.9) MatrixForCluster<-as.matrix(TDMforCluster) MatrixWeiboForCluster<-t(MatrixForCluster) pamRes<-pamk(MatrixWeiboForCluster,metric="manhattan") k<-pamRes$nc k pamResult<-pamRes$pamobject pamResult$clustering

光环大数据 http://hadoop.aura-el.com

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com layout(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)) 结果我们将微博分成了两类:

当然了,从这个图,你很难看出点什么有益的信息,就是图个好看。我们不 妨来看看被分成两类的微博都分别说了些什么。具体看到过程和解读因人而异, 这里也没什么代码要列出来。我只说一些我看到的,不保证是对的。

两个聚类中的微博讨论的问题不同,第一类讨论的是看了泰囧的心情,比如 开心,高兴抑或难过之类的。比如:

“哈哈哈二到無窮大.大半夜的我這二逼在家看泰囧.笑到爸爸起床罵 我..不好意思咧.實在沒忍住”

“时间滴答滴答的走我知道我在想着一个人看泰囧片头的时候熟悉的 名字我一下子愣住了我想我是在乎了这样的夜里我难过”

“大半夜睡不着觉一个人在家看盗版泰囧突然觉得很凄惨”

“我们一起吃牛排一起坐轮渡一起看金门一起去乐园一起吃牛排一起 看大海一起坐公交一起啃鸡爪一起过圣诞一起看泰囧一起去鼓浪屿一起打的绕 厦门岛一起在酒店吃早餐一起在一张大床上睡觉一起吃烤鱼一起在大排档吃肉 一起在 KFC 买了对辣翅一起爬鼓山一起抱着对方说我爱你”

这一类微博本身不够成对电影的评价,电影是这些博主生活的一部分,或悲 或喜,电影只是陪衬。

光环大数据 http://hadoop.aura-el.com

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com

第二类微博,则集中于对电影的评价,褒贬不一,比如:

“搜索一代宗师发现十个里面九个说不好看上回的泰囧微博上都是说 怎么怎么好笑结果去影院一看大失所望还没有赵本山演的落叶归根幽默和寓意 深远纯属快餐式电影其实好的事物往往具有很大的争议性就比如 John.Cage.的 有的人觉得纯属扯淡有的人却如获至宝我想王家卫的电影也是如此”

“应该看第一部人在囧途比泰囧好看太多了第一部我从头看到尾很有 意思第二部看分钟掐断沉闷没什么笑点”

“泰囧实在好看极了又搞笑又感动让我哭笑不得真心推荐晚安啦.我在”

“发表了博文.影评人再囧途之泰囧..首映没有赶上好多朋友强烈向我 推荐推荐理由很具有唯一性笑到我抽搐.笑成了这部电影唯一的标签但是这已经 足够了.在好莱坞大片冲击欧洲小资”

从我的解读来看,微博大致分为这两类,如果进一步分析,也可以将发微博 的人分成两类。一类可能相对感性,单纯,生活中的高兴或者快乐,会表现在微 博中。电影只是作为引发他们情绪的一件事儿被提及。而另一类人,相对比较理 性,喜欢评论,喜欢写博客写影评之类。电影在他们的心中,是被评价的对象。 当然, 这两类人或者两类微博会有很多部分是重叠交替的。 这是非常正常的现象, 就像人也有理性和感性的两个面。

为什么大家选择光环大数据!

大数据培训、 人工智能培训、 Python 培训、 大数据培训机构、 大数据培训班、

光环大数据 http://hadoop.aura-el.com

光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请大数据 领域具有多年经验的讲师,提高教学的整体质量与教学水准。讲师团及时掌握时 代的技术,将时新的技能融入教学中,让学生所学知识顺应时代所需。通过深入 浅出、通俗易懂的教学方式,指导学生较快的掌握技能知识,帮助莘莘学子实现 就业梦想。

光环大数据启动了推进人工智能人才发展的“AI 智客计划” 。光环大数据专注国内 大数据和人工智能培训,将在人工智能和大数据领域深度合作。未来三年,光环大数据 将联合国内百所大学,通过“AI 智客计划” ,共同推动人工智能产业人才生态建设,培 养和认证 5-10 万名 AI 大数据领域的人才。

参加“AI 智客计划” ,享 2000 元助学金!

【报名方式、详情咨询】 光环大数据网站报名:http://hadoop.aura-el.com 手机报名链接:http:// hadoop.aura-el.com /mobile/

光环大数据 http://hadoop.aura-el.com


赞助商链接
相关文章:
更多相关标签: