词云图制作
1 工作准备
材料准备:
- 文本数据txt文件,或者其他文本文件。
- R语言软件
2 实际操作
- 第一步:从网上相关新闻网站复制粘贴或下载相关文本数据,转化为txt格式文件或其他,我这里用的txt文件。
- 第二步:利用R语言相关函数对文本进行分词,包括实词和虚词。其中虚词比如”的“、”了“等,还有一些标点符号等,这些需要剔除;而实词里面也存在相对无效词语。这些无效实词、虚词、标点符号等需要剔除。剔除方法一般使用停词表(百度可下载)。将分析的文本分词与停词对比,如果有分词在停词表中,则删除该分词。
- 对处理好的分词文件进行频率统计,频率越大,表明该分词在文本中的分量越大。
下面是R语言操作代码。
# 清理内存
rm(list=ls())
# 工作路径
setwd("D:\\Allcode\\Rstudy\\TEE")
# 需要安装加载的鲍
# install.packages("jiebaR","jiebaRD","wordcloud","wordcloud2","Rcpp")
# 用于分词
library(jiebaR)
library(jiebaRD)
library(Rcpp)
# 分词可视化
library(wordcloud)
library(wordcloud2)
# 初始化jiebaR workers
engine <- worker()
# hmm为分词方法,help(hmm)可选其他
engine <- worker("hmm")
# 用segment函数对名为word文本进行分词
b = segment("word.txt",engine)
# 分词完毕后会在工作路径生成一个word.segment.2021-11-02_12_42_40.txt文件
f = scan("word.segment.2021-11-02_12_42_40.txt",sep='\n',what='',encoding="UTF-8")
截图
# 将分词文本转化为字符串
word <- qseg[f]
# 统计字符串频率,word此时是一个数据框,包括char和fre两个变量
word <- freq(word)
word
使用传统wordcloud函数可视化,效果不大美观,而且存在无意义的词语
wordcloud(word$char,word$freq,scale=c(5,1),colors=rainbow(10))
下面使用停词表删除无意义的词
# 停词表导入
stopword = data.frame(words = scan("stopwords.txt",sep='\n',
what='',encoding="UTF-8"))
# 停词索引
for(i in 1:nrow(word)){
if(word$char[i] %in% stopword$words){
word$result[i] = 1
}else{
word$result[i] = 0
}
}
# 删除停词
word = word[-which(word$result == 1),]
# 删除匹配变量result
word1 = word[,1:2]
使用wordcloud2可视化
# help(wordcloud2)
wordcloud2(word1, size = 1,fontWeight = 'bold')
# 公司的信息无效,公司频率改为1
word1[which(word1$char == "公司"),2] = 1
word1[which(word1$char == "亿元"),2] = 1
# 拉夏贝尔词频过大,降低一些,影响美观
word1[which(word1$char == "拉夏"),2] = 8
word1[which(word1$char == "贝尔"),2] = 8
# 云状
wordcloud2(word1, size = 0.5,fontWeight = 'bold',ellipticity = 0.65,
shape = 'cloud')
# 更多参数信息help(wordcloud2)