R语言-15词云图绘制

作者: 周一ing | 来源:发表于2017-08-15 09:22 被阅读0次

    绘制词云图所用包为worldcloud,

    绘制词云图第一步是中文分词,中文分词包中最出名的是Rwordseg和jieBar.

    先讲解第一种,Rwordseg依赖于rJava包和Java环境

    使用Rwordseg分词绘制词云图

    安装Java环境
    jdk可到oracle站点下载,下载完成需设置环境变量,在系统变量新建如下变量

    1.JAVA_HOME:D:\Java #jdk安装路径
    2.ClassPath : .;%JAVA_HOME%\lib(注意前面的.和分号)
    3.R_HOME : D:\R-3.3.1 #R安装路径

    在系统变量的Path下增加:
    %R_HOME%\bin\i386
    %R_HOME%\library\rJava\jri
    %JAVA_HOME%\jre\bin
    %JAVA_HOME%\jre\bin\server或者%JAVA_HOME%\jre\bin\client ,具体看jvm.dll位于哪个子文件
    %JAVA_HOME%\bin

    安装Rwordseg
    安装rJava,直接使用install.packages("rJava")安装即可
    安装Rwordseg ,在"http://R-Forge.R.project.org中,安装方式可参考基础指令笔记
    还需安装tmcn、tm包

    代码

    library(xlsx)
    data <- read.xlsx("D:/dataset/test.xls", 2, header=T,encoding='UTF-8')
    content <- data['content'][1]#可以直接根据列名调用
    #文本分析
    library(tmcn)
    library(Rwordseg)
    library(tm)
    library(wordcloud)
    content <- unlist(content)#excel中的一列通常是list格式,unlist后变成numertic格式
    content <- as.character(content)#将其变成字符串格式
    insertWords(c("特朗普")) #向词典临时插入特朗普
    d.vec <- segmentCN(content, returnType = 'tm') #分词
    

    直接绘制词云图

    wc <- getWordFreq(unlist(d.vec), onlyCN = TRUE)
    wordcloud(wc$Word,wc$Freq,colors = rainbow(length(wc$Freq)))
    

    处理后再绘制词云图

    yuliaoku<-Corpus(VectorSource(d.vec)) #建立语料库
    yuliaoku<-tm_map(yuliaoku,stripWhitespace) #去除空白
    control<-list(wordLengths=c(1,5),stopwords=stopwordsCN()) #去除停用词
    mt<-TermDocumentMatrix(yuliaoku,control = control) #生成包含词频的结构化的词条-文档矩阵
    vmt<-as.matrix(mt)
    val<-sort(rowSums(vmt),decreasing = TRUE) #按词频排序
    df<-data.frame(word=names(val),freq=val)
    wordcloud(df$word,df$freq,min.freq = 3,random.order = FALSE,colors = rainbow(length(row.names(vmt))),scale=c(4,.5)) #画词云图
    

    使用jieBar分词绘制词云图

    library(xlsx)
    data <- read.xlsx("D:/dataset/test.xls", 2, header=T,encoding='UTF-8')
    content <- data1['content'][1]
    content <- unlist(content)
    content <- as.character(content)
    content <- sub('#人民的名义#','',content) #删除某个词汇
    library(jiebaR)
    cutter=worker()
    new_user_word(cutter,c("秒拍视频")) #插入词汇
    segWords<-segment(content,cutter)
    segWords<-filter_segment(segWords,stopwordsCN())
    segWords<-gsub("[0-9]+?","",segWords) #删除数字
    library(stringr)
    segWords<-str_trim(toUTF8(segWords))
    library(plyr)
    tableWord<-count(segWords)
    a <- tableWord[order(tableWord[2],decreasing = TRUE),]
    a <- na.omit (a) #去除NA值
    wordcloud(a[,1],a[,2],random.order=F,col=                 rainbow(length(a$freq)),scale=c(8,.5),max.word = 200) #展示词频最大的前200个词的词云图

    相关文章

      网友评论

        本文标题:R语言-15词云图绘制

        本文链接:https://www.haomeiwen.com/subject/xqeqxxtx.html