【R_可视化】使用wordcloud包制作分类词云图

2021/3/17:今天也是充实的一天。

早上,验收训练好的NER模型,对模型精度变化进行简单分析;随后,参考相关文献,修改小论文(仍不理想,至少还得改三四天);最后,尝试制作分类词云图(暂未使用自己的数据实现)。晚上,外出慢跑/散步+听音乐半小时。

2021/3/18:今天也是充实的一天。

上午:阅读文献,修改(用“修改”一词可能不合适,因为这更像是重写)结果部分,计划明天继续改结果+讨论部分,周末改其他部分。

下午:尝试制作分类词云图,已实现!(翻阅很多网上教程,均没能点醒我这R小白,最后,竟是在Youtube上找到合适教程:https://www.youtube.com/watch?v=pFinlXYLZ-A&list=PLjPbBibKHH18I0mDb_H4uP3egypHIsvMn&index=41https://www.youtube.com/watch?v=jCrQYOsAcv4&list=PLjPbBibKHH18I0mDb_H4uP3egypHIsvMn&index=43https://www.youtube.com/watch?v=pvjhm5TTd2A&list=PLjPbBibKHH18I0mDb_H4uP3egypHIsvMn&index=45&t=30s,以上视频依次是导入语料、清洗语料与制作比较云的教程,建议按流程都码一遍)


效果图

原文:The geography of Twitter topics in London - ScienceDirect

Twitter-分类词云图

R之wordcloud包

参考教程:https://sites.google.com/site/miningtwitter/questions/talking-about/wordclouds/comparison-cloud

数据可视化|如何用wordcloud绘制词云图? - 云+社区 - 腾讯云

R-文本挖掘云图绘制wordcloud_时光旅人ww_新浪博客

https://www.youtube.com/watch?v=pvjhm5TTd2A&list=PLjPbBibKHH18I0mDb_H4uP3egypHIsvMn&index=45&t=30s


简例(一)

代码来自:https://gist.github.com/rer145/8f31af53a9a8339dddbef93fd10e86ce(找代码,就上Github)

#安装所需要的程序包

library(gutenbergr)
library(tidytext)
library(dplyr)
library(wordcloud)

dracula<-gutenberg_download(345)
dracula$gutenberg_id<-NULL

dracula<-dracula%>%
  unnest_tokens(word, text)

bing<-get_sentiments('bing')
dracula<-inner_join(dracula, bing)

words<-dracula%>%
  group_by(word)%>%
  summarize(count=n(), sentiment=first(sentiment))%>%
  arrange(count)

# A normal wordcloud plot
wordcloud(words$word, words$count, max.words=150)

# Reshaping our data to a matrix with reshape2
library(reshape2)
matrix<-acast(words, word~sentiment, value.var='count', fill=0)

# The comparison cloud
comparison.cloud(matrix, colors=c('black', 'orange'))

输出:积极/消极两类的分类词云

积极/消极两类的分类词云

比较云案例(二)

代码

#file.choose()
folder<-'E:\\wordcloud\\topic2 - 副本'
filelist <- list.files(path=folder,pattern = '*.txt')
paste(folder,'\\',filelist)
filelist <- paste(folder,'\\',filelist,sep="")
a <- lapply(filelist,FUN=readLines)
corpus <- lapply(a,FUN=paste,collapse=" ")

corpus2 <- gsub(pattern = "\\W",replace=" ",corpus)
corpus2 <- gsub(pattern = "\\d",replace=" ",corpus2)
corpus2 <- tolower(corpus2)
#corpus2 <- removeWords(corpus2,stopwords("english"))
#corpus2 <- stripWhitespace(corpus2)

library(tm)
library(wordcloud)
dev.new(width = 100, height = 100, unit = "px")
#wordcloud(corpus2,random.order = FALSE,col=rainbow(10),size = 0.00001,fontFamily = "宋体")
corpus3 <- Corpus(VectorSource(corpus2))

tdm <- TermDocumentMatrix(corpus3)
m <- as.matrix(tdm)
colnames(m) <- c('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20')
comparison.cloud(m, scale = c(1.1,1), rot.per = 0,random.order=FALSE, min.freq=0,
                 colors = c('blue','red',"#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7",'blue','red',"#999999", "#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7"),
                 ordered.colors=T,title.size=1, max.words=2000000)

数据

(20个txt文件)

使用网上已有教程没能走通,其一大原因是我不了解需要传入的数据格式。因此,附上上述程序所需的数据(每个txt的内容只需是普通文本即可)截图,当然,这并非通用。

原始数据

结果图

(待美化)

20类比较云词云图

出现的主要问题及解决

在此过程中,遇到了不少问题,给本R小白带来困扰,好在最后都得以解决。

如:corpus2中的语料顺序与Topic“1-20”顺序不一致,导致词云图关键词与序号不一致

corpus2中的语料顺序

解决:换个角度解决问题——按照corpus2中的语料顺序,修改各Topic文件内容。具体而言,观察上图可知,corpus2中的语料顺序为:'1','10','11','12','13','14','15','16','17','18','19','2','20','3','4','5','6','7','8','9',那就将Topic10文件改为Topic2文件内容,Topic11文件改为Topic3文件内容,“瞬间”解决。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值