asp.net printbodyhtml.innerhtml 该内容不是文本_文本挖掘|如何R语言的wordcloud绘制词云图...

7a4423e5ebbc0f71723dc6873655196c.png

词云图中的每个字的大小与出现的频率或次数成正比,词云图的统计意义不是特别大,主要是为了美观,用于博客和网站比较常见。

导入数据

library(tm)
library(wordcloud)
Text1<-paste(scan("Text1.txt",what=character(0),sep=""),collapse="")
Text2<-paste(scan("Text2.txt",what=character(0),sep=""),collapse="")
TEXT<-data.frame(c(Text1,Text2),row.names=c("Text1","Text2"))
TEXT_title<-data.frame(doc_id=row.names(TEXT),text=TEXT$c.Text1..Text2.)

#这里的doc_id不可替换成别的词

颜色搭配

颜色搭配是根据RColorBrewer包的主题方案进行的,特别喜欢RdYlBu双色渐变系的颜色,比较喜欢该盘的第1-11号红蓝渐变的色系。

> colormap<-rev(brewer.pal(11,'RdYlBu'))
> colormap
 [1] "#313695" "#4575B4" "#74ADD1" "#ABD9E9" "#E0F3F8" "#FFFFBF" "#FEE090" "#FDAE61" "#F46D43"
[10] "#D73027" "#A50026"

创建数据框格式的文本

#创建数据框格式的文本,第一列是doc_id,第二列是文章内容

TEXT_ds<-DataframeSource(TEXT_title)

构建语料库

Corpus<-VCorpus(TEXT_ds)

针对语料库文本转换

思路:删除语料库中的标点符号,字母转换为小写,删除数字,删除空白字符,过滤掉停止词库之后转换为纯文本。

Corpus<-tm_map(Corpus,removePunctuation)#删除标点符号
Corpus<-tm_map(Corpus,tolower)#转换为小写
Corpus<-tm_map(Corpus,removeNumbers)#删除数字
Corpus <- tm_map(Corpus,stripWhitespace)#删除空白字符
Corpus <- tm_map(Corpus,function(x){removeWords(x,stopwords())})
Corpus <- tm_map(Corpus,PlainTextDocument)#转换为纯文本

针对语料库断字处理,生成词频权重矩阵

Term_matrix<-TermDocumentMatrix(Corpus)
> Term_matrix
<<TermDocumentMatrix (terms: 2462, documents: 2)>>
Non-/sparse entries: 3215/1709
Sparsity           : 35%
Maximal term length: 16
Weighting          : term frequency (tf)

查看Term_matrix得知2篇文章共2456个字,稀疏度为35%,最大词长度是16

计算频率

Term_matrix<-as.matrix(Term_matrix)

对词频权重矩阵的表头进行命名

colnames(Term_matrix)<-c("Text1","Text2")

把矩阵转为便于后续统计分析的数据框

Data<-data.frame(Term_matrix)

导出两篇文章的频率分析结果,文件名为Term_matrix

write.csv(Data,'Term_matrix.csv')

分开绘制两篇文章的词云

wordcloud(row.names(Data),Data$Text1,min.freq=9.5,col=brewer.pal(8,"Dark2"),rot.per=0.3)

9a43e99946fd579e253900d86532d5eb.png
Text-1
wordcloud(row.names(Data),Data$Text2,min.freq=9.5,col=brewer.pal(8,"Dark2"),rot.per=0.2)

320b7a662ad2e440d025e2fcd750b74a.png
Text-2

两篇文章对比

comparison.cloud(Data,max.words=250,random.order=FALSE,colors=c("#00B2FF","#084081"))#通过设置max.word的大小决定显示图中文本的多少。

4157193b3d5a342142cb75e38490b482.png

两篇文章共有词部分

commonality.cloud(Data,max.words=120,random.order=FALSE,colors="#66A61E")

ffcc0d35b2344e98bd4a76ff87eae87f.png

绘制星形图

将Data数据计算频率Freq=n/sum(n),根据频率绘制星形图。

wordcloud2(Data1,size=0.4,shape='star')

b7aa4c9129ccfe32d8f01a0f0a8256ef.png
星形词云图

8da22bf7bc8a42d4d0bcd07b8e288654.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值