针对某一个事件或者人物或者实体,会有很多相关文本对其描述,他们可能来自不同的媒介,例如:关于金融的报道会有很多不同媒体写了不同的文章,当我们分析这些数据的时候,它们经常是多个文件。如下图1所示一个文本文件对应一篇报道文章。

图1 每个文本代表一篇针对金融的报道文章
本文使用R语言批量处理这样的文本数据,对他们进行分词及词频统计,最后我们根据聚信立logo生成了词云聚信立,这种方式在ppt演讲、会场布置及公司宣传等场景下有很好的应用性。
下面我们先上效果图,再贴上R语言的相关程序代码。图2 是聚信立的文字logo,图3相关报道的词云聚信立logo。

图2 聚信立文字logo

图3 由词云生成的聚信立logo(应用在ppt报告、公司宣传、会场布置等很多场景)
最后是R源代码:
library(rJava)
library(Rwordseg)
library(RColorBrewer)
library(wordcloud)
library(wordcloud2)
#路径
dir <- "D:/C000007"
#路径下文件名
names <- list.files(dir)
dirname <- paste(dir,names,sep="/")
#文件数量
n <- length(dirname)
#finaldata = read.csv(file = dirname[1],stringsAsFactors=F,header=F,encoding = 'UTF-8')
finaldata = read.csv(file = dirname[1],stringsAsFactors=F,header=F)
finaldata
#循环组装到一个data.frame中
for (i in 2:n)
{
#new.data = read.csv(file = dirname[i],stringsAsFactors=F,header=F,encoding = 'UTF-8')
new.data = read.csv(file = dirname[i],stringsAsFactors=F,header=F)
flen=length(new.data)
if(flen==1) finaldata = rbind(finaldata,new.data)
if(flen>1)
{
newstr=''
for(j in 1:flen)
{
newstr=paste(newstr,new.data[,j])
}
newdataframe=data.frame(V1=newstr)
finaldata = rbind(finaldata,newdataframe)
}
}
#可使用write.table 将finaldata写出
#分词并统计词频
words=unlist(lapply(X=finaldata$V1, FUN=segmentCN))
word=lapply(X=words, FUN=strsplit, " ")
v=table(unlist(word))
#降序排列
v=rev(sort(v))
#组装成词云数据框
d=data.frame(v,row.names = names(v))
#绘制词云
mydata=d
wordcloud2(mydata,size = 1.2,figPath='D:/juxinli.jpg')