新浪微博文本分析初探v0.1_光环大数据培训

来源:互联网 由 光环IT学院 贡献 责任编辑:王小亮  
http://hadoop.aura-el.com

新浪微博文本分析初探v0.1_光环大数据培训

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

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

#关键词搜索并不需要注册APIrequire(Rweibo)#registerApp(app_name = \

获取了数据之后,首先迫不及待对微博文本进行分词。代码如下(Rwordseg 包可以在语料库中自助加入新词,比如下面的insertWords语句):

require(Rwordseg)insertWords(\

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

http://hadoop.aura-el.com

泰囧 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

徐峥 90 11亿 54 搞笑 47 需要

35 逼 30

从中我们可以看出一些东西。比如说这部电影的口碑似乎还不错,此外某教

授对其的炮轰也引发了不少得讨论。另外,同档期的另外两部电影(一代宗师,

十二生肖)也经常和它同时被提及(这是否会对某些搞传播和营销的人带来一些

启发,联动效应之类的,纯数个人瞎说)。词云展示是不可少的,展示频率最高

的150个词(这里我实现把分词的结果存放在了txt文件中,主要目的是为了节

省内存):

require(wordcloud)d = read.table(\

http://hadoop.aura-el.com

= par(bg = \

下面做一些相对来说比较专业的文本挖掘的工作。主要目的是对这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

Corpus<-tm_map(Corpus,removeNumbers)#删除URL,使用了一点正则表达式removeURL<-function(x) gsub(\

#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=\

k<-pamRes$nc

k

pamResult<-pamRes$pamobject

pamResult$clustering

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 新浪微博文本分析初探 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


  • 与《新浪微博文本分析初探v0.1_光环大数据培训》相关:
  • 新浪微博文本分析初探
  • 新浪微博数据分析与微博营销案例
  • 2012新浪微博 数据分析
  • 数据挖掘分析新浪微博
  • 新浪微博培训资料
  • 新浪微博培训材料
  • 新浪微博运营数据分析工具
  • 新浪微博明星账号数据分析
  • 新浪微博团队对外培训文档2011.04
  • 新浪微博数据分析与微博营销案例2
  • 本站网站首页首页教育资格全部考试考试首页首页考试首页职业资格考试最近更新儿童教育综合综合文库22文库2建筑专业资料考试首页范文大全公务员考试首页英语首页首页教案模拟考考试pclist学路首页日记语文古诗赏析教育教育资讯1高考资讯教育头条幼教育儿知识库教育职场育儿留学教育高考公务员考研考试教育资讯1问答教育索引资讯综合学习网站地图学习考试学习方法首页14托福知道备考心经冲刺宝典机经真题名师点睛托福课程雅思GREGMATSAT留学首页首页作文
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.xue63.com All Rights Reserved