手把手:R语言文本挖掘和词云可视化实践

简介:

互联网时代,大量的新闻信息、网络交互、舆情信息以文本形式存储在数据库中,如何利用数据分析和文本挖掘的算法,将海量文本的价值挖掘出来,成为我们团队近期的一个研究方向,本案例就是我们的一个初步尝试。飞信群是我们在工作、生活中交流的重要平台,在将近一年的时间里共产生了几万条的聊天记录,展现了我们这个团队的方方面面。


本文将通过KNIME、R语言和tagxedo三个工具来实现文本挖掘和词云可视化技术,体验一下舆情分析的魅力。


一、数据导入

数据源:201410—20157月的飞信群全部聊天记录:


图一 原数据示例


通过KNIME进行原始聊天记录文件的结构化转换,提取文件中发言人、发言时间和发言内容三个字段,并保存为csv文件。


图二 KNIME的流程


R语言的语句:

log <- read.csv('feixin.csv', sep=",", essay-header=FALSE) #数据导入并保存为log对象


二、发言热度分布

通过热力图,我们可以看到大家聊天的热情在201412月最为高涨,而2015年的2月由于春节原因,群里冷冷清清了好久。周末2天的空档期也展现的很清晰哦。

R语言的语句:

require(plyr)

time <- as.POSIXlt(log$V3,origin = '1970-1-1 00:00:00' ,format="%Y-%m-%d %H:%M:%S") #设置日期格式

cbind(format(time,"%Y-%m"),format(time,"%d"))->day_table #生成发言时间分布表

as.data.frame(day_table)->day_table #转换数据框格式

table(day_table)->day_m #生成日期列联表

heatmap(day_m,Rowv=NA,Colv=NA,scale = "column",col=brewer.pal(4,"Blues"),revC = TRUE)

#绘制按日发言量的热力图,蓝色越深代表发言热度越高。


图三 热度分析


三、个人发言习惯分析

谁最能说?通过条形图可以清晰的看到大家发言的频率对比,一目了然。

R语言的语句:

require(plyr)

require(ggplot2)

name=log$V2 #获取发言人姓名字段

table(name)->t_name #生成按姓名出现频率的列联表

as.data.frame(t_name)->t_name #转换为数据框格式

gg = ggplot(t_name)

gg+geom_bar(aes(x=reorder(name,Freq),y=Freq,fill=name),stat="identity",position="dodge")+coord_flip()+theme(axis.title=element_text(size=18,color="blue"),axis.text=element_text(family='A',size=22,color="black")) ggplot扩展包绘制条形图


图四 发言量分析

注:因为涉及个人隐私所以把图上10个人的名字都隐去了

有趣的来了,看看我们每个人喜欢在什么时间说话吧。大家都是有两个发言高峰,一个是上午10点,一个是下午4点左右,而中午12点是一个明显的午休静默期。另外可以看到,有些童鞋在上午说话的频率高于下午,有些则正相反。


R语言的语句:

require(plyr)

time <- as.POSIXlt(log$V3,origin = '1970-1-1 00:00:00' ,format="%Y-%m-%d %H:%M:%S")

#设置日期格式

hour <- format(time,'%H') #提取日期值中的小时

hour_name <- as.data.frame(cbind(log$V2,hour))

count(hour_name,V1,hour)->hour_table #计算每人按小时发言的频次

as.character(hour_name$hour)->hour_name$hour

as.numeric(hour_name$hour)->hour_name$hour #小时字段转换为数字格式

gg=ggplot(hour_name)

gg+ geom_density(aes(x=hour,fill=V1))+facet_wrap(~V1) +theme( strip.text=element_text(family='A',size=18,color="black"),axis.text=element_text(family='A',size=16,color="black")) #通过ggplot扩展包绘制基于发言时间段分布的面积图


图五 发言时间分布

注:因为涉及个人隐私所以把图上10个人的名字都隐去了


四、词云可视化

震撼的来了,看看这一年大家最关心什么?讨论最多的是什么?有什么有趣的话题呢?为了和团队的LOGO呼应,选用大象轮廓的词云图,效果棒棒哒。


R语言的语句:

require(tm)

require(Rwordseg)

gsub("[0-9,a-z,A-Z]", "", log$V1)->t #去除英文和数字

segmentCN(t)->t_seg #中文分词

removeWords(unlist(t_seg),mystopword)->word #去除停用词

word = lapply(X = word, FUN = strsplit, " ") #将分词结果按空格分隔整理

v = table(unlist(word)) #计算每个单词的词频

v = sort(v, decreasing = T) #按降序排列

d = data.frame(word = names(v), freq = v) #将词频矩阵转换为数据框格式

d$word=as.character(d$word) #将单词字段规整为字符串格式

rbind(d[nchar(d$word)==1,][1:10,],d[nchar(d$word)==2,][1:20,],d[nchar(d$word)>3,][1:20,])->result_r #提取不同字数的单词中词频最高的TOP50单词,作为词云绘制的素材

write.table(result_r,"result.csv",sep=",",row.names = FALSE) #保存结果为csv文件


通过一款开源的词云可视化工具tagxedo,将导出的词频矩阵绘制为各种形状的词云图。


图六 团队词云


看看,除了对数据互联网的关心是天经地义的,我们说的最多的竟然是,名副其实的吃货团队,民以食为天嘛。周报赫然醒目也是醉了,其它的高频词都和工作息息相关,实验室工程师,还有平台服务器数据库,真心是学习型聊天群啊。最开心的要数哈哈哈,证明我们的工作也是欢笑多多,其乐无穷的。


想看到每位童鞋的词云有什么不同么?


图七 个体词云一


爽朗的哈哈哈,愤怒的啊啊啊,最擅用“[图片]”在群里展现心情。致我们的美女数据分析师,也是团队大象logo的设计者。


下面重磅推出我们的首席数据科学家,瞧瞧科学家的世界与我们是多么的不同。竟然……基本都是英文术语。


图八个体词云二


五、建模流程

下面用一张图简单回顾一下本文实现的建模过程:


图九 整体分析思路

希望上面的案例分析能帮助大家更好的理解文本挖掘和舆情分析可视化的一些分析思路和呈现方式,我们也会尽力挖掘更多的创意,制作更好的产品呈现给大家,谢谢!。


原文发布时间为:2015-09-18

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
5天前
|
数据采集 机器学习/深度学习 数据可视化
探索大数据分析的无限可能:R语言的应用与实践
探索大数据分析的无限可能:R语言的应用与实践
36 9
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
6月前
|
数据采集 算法 搜索推荐
R语言营销数据分析:使用R进行客户分群的实践探索
【9月更文挑战第1天】R语言以其强大的数据处理和统计分析能力,在金融数据分析、营销数据分析等多个领域发挥着重要作用。通过R语言进行客户分群,企业可以更好地理解客户需求,制定精准的营销策略,提升市场竞争力和客户满意度。未来,随着大数据和人工智能技术的不断发展,R语言在营销数据分析中的应用将更加广泛和深入。
|
7月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
7月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
7月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
7月前
|
数据采集 机器学习/深度学习 数据可视化
使用R语言进行统计分析:入门与实践
【8月更文挑战第10天】通过本文,我们介绍了使用R语言进行统计分析的基本流程,包括数据加载、数据清洗、描述性统计、假设检验以及数据可视化等关键步骤。R语言以其强大的功能和丰富的包资源,为数据分析师和科学家提供了强大的工具。随着你对R语言的
|
8月前
|
数据采集 数据可视化 大数据
R语言在统计分析中的应用与实践
【7月更文挑战第30天】R语言以其强大的统计分析能力和开源自由的特性,在统计分析领域发挥着重要作用。无论是基础的描述性统计、推断性统计,还是复杂的回归分析、时间序列分析和生存分析,R语言都提供了丰富的函数和包来支持。通过学习和掌握R语言,数据分析师和研究者可以更加高效地进行数据分析,获取有价值的信息和结论。未来,随着大数据和云计算等新兴技术的发展,R语言的应用前景将更加广阔。
|
10月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
10月前
|
Web App开发 数据可视化 数据挖掘
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)