R语言实现文本挖掘和tagxedo词云可视化技术

R语言实现文本挖掘和tagxedo词云可视化技术本文将通过 KNIME R 语言和 tagxedo 三个工具来实现文本挖掘和词云可视化技术 体验一下舆情分析的魅力 一 数据导入数据源 2014 年 10 月 2015 年 7 月的飞信群全部聊天记录 图一原数据示例通过 KNIME 进行原始聊天记录文件的结构化转换 提取文件中发言人 发言时间和发言内容三个字段 并保存为 csv 文件

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

一、数据导入

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

R语言实现文本挖掘和tagxedo词云可视化技术

图一 原数据示例



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

R语言实现文本挖掘和tagxedo词云可视化技术

图二 KNIME的流程



R语言的语句:

log <- read.csv('feixin.csv', sep=",", 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语言实现文本挖掘和tagxedo词云可视化技术

图三 热度分析



三、个人发言习惯分析

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

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扩展包绘制条形图

R语言实现文本挖掘和tagxedo词云可视化技术

图四 发言量分析

注:因为涉及个人隐私所以把图上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扩展包绘制基于发言时间段分布的面积图

R语言实现文本挖掘和tagxedo词云可视化技术

图五 发言时间分布

注:因为涉及个人隐私所以把图上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,将导出的词频矩阵绘制为各种形状的词云图。

R语言实现文本挖掘和tagxedo词云可视化技术

图六 团队词云



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



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

R语言实现文本挖掘和tagxedo词云可视化技术

图七 个体词云一



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



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

R语言实现文本挖掘和tagxedo词云可视化技术

图八个体词云二



五、建模流程

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

R语言实现文本挖掘和tagxedo词云可视化技术

图九 整体分析思路

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



众号

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222176.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:24
下一篇 2026年3月17日 下午4:24


相关推荐

  • Matlab赋值_matlab二维数组赋值

    Matlab赋值_matlab二维数组赋值clear;clc;x=[23457810111415161819];y=[106。42108。26109。58109。5110109。93110。49110。59110。6110。9110。76111111。2];x3=min(x):0。1:max(x);%可以放在循环外%v=zeros(3,6);没有必要,需要的话可以,v=[];forn=1:…

    2026年4月15日
    4
  • C# Winform 窗体美化(目录)

    C# Winform 窗体美化(目录)最近在看C#Winform的窗体美化,发现一些很有用的美化皮肤库,学习过后也把一些资料整理一下。一、IrisSkin换肤库(IrisSkin4)二、LayeredSkin界面库(LayeredSkinDemo)三、不规则窗体(GoldFishProject,TransparentForm)四、镂空窗体(HollowForm)五、鼠标穿透(MousePenetration)

    2022年5月28日
    39
  • 上行带宽和下行带宽是什么意思?各有什么作用?

    上行带宽和下行带宽是什么意思?各有什么作用?上行带宽和下行带宽 或者说上行速度和下行速度是什么意思 在设置路由器的限速 以及配置其它一些软件的时候经常遇到上行速度和下行速度 很多用户根本就不知道这两个所代表的意识 更不说配置了 下文将为大家进行详细的介绍 我们访问互联网的过程中存在这两种行为 一是上传数据 二是下载数据 上行宽带 速度 指的是上传的速度 而下行宽带 速度 指的是下载数据是的数度 上行宽带 速度 和下行宽带 速度 是不对称的 一般是下行速度大于上行的速度 我们平时所使用的宽带说多少 M 都是指的下行宽带 因为我们上网主要是从互联网上下

    2026年3月16日
    2
  • MAX31856中文文档

    MAX31856中文文档MAX31856中文手册文件可到资源处下载

    2022年6月19日
    29
  • navicat15.0.23.0激活码【2021.10最新】

    (navicat15.0.23.0激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsa…

    2022年3月27日
    62
  • 常用的DNS服务器_国内目前最快的DNS

    常用的DNS服务器_国内目前最快的DNS北京联通      202.106.0.20   202.106.196.115阿里              223.5.5.5 223.6.6.6114              114.114.114.114南方电信      180.153.225.136百度              180.76.76.76360                 101.226….

    2025年8月30日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号