針對某一個事件或者人物或者實(shí)體,會有很多相關(guān)文本對其描述,他們可能來自不同的媒介,例如:關(guān)于金融的報(bào)道會有很多不同媒體寫了不同的文章,當(dāng)我們分析這些數(shù)據(jù)的時候,它們經(jīng)常是多個文件。如下圖1所示一個文本文件對應(yīng)一篇報(bào)道文章。
圖1 每個文本代表一篇針對金融的報(bào)道文章
本文使用R語言批量處理這樣的文本數(shù)據(jù),對他們進(jìn)行分詞及詞頻統(tǒng)計(jì),最后我們根據(jù)聚信立logo生成了詞云聚信立,這種方式在ppt演講、會場布置及公司宣傳等場景下有很好的應(yīng)用性。
下面我們先上效果圖,再貼上R語言的相關(guān)程序代碼。圖2 是聚信立的文字logo,圖3相關(guān)報(bào)道的詞云聚信立logo。
圖2 聚信立文字logo
圖3 由詞云生成的聚信立logo(應(yīng)用在ppt報(bào)告、公司宣傳、會場布置等很多場景)
最后是R源代碼:
library(rJava)
library(Rwordseg)
library(RColorBrewer)
library(wordcloud)
library(wordcloud2)
#路徑
dir <- "D:/C000007"
#路徑下文件名
names <- list.files(dir)
dirname <- paste(dir,names,sep="/")
#文件數(shù)量
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
#循環(huán)組裝到一個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寫出
#分詞并統(tǒng)計(jì)詞頻
words=unlist(lapply(X=finaldata$V1, FUN=segmentCN))
word=lapply(X=words, FUN=strsplit, " ")
v=table(unlist(word))
#降序排列
v=rev(sort(v))
#組裝成詞云數(shù)據(jù)框
d=data.frame(v,row.names = names(v))
#繪制詞云
mydata=d
wordcloud2(mydata,size = 1.2,figPath='D:/juxinli.jpg')