中文信息处理技术专栏

    中文信息处理技术专栏


    首页中文信息处理技术专栏

    • 利用R语言绘制词云
    • 时间:2017-11-15阅读数:7131
    • tm是一个专门用于文本挖掘的程序包,它可以把来自多种途径(文件夹、文件、甚至是pdf或者word文件)的文本转换为语料库,然后按照自己的需求表示为文档特征矩阵,接着利用进行多种成熟挖掘手段进行处理。而wordcloud是一个可以把文本根据频度等进行进行可视化输出词云的包,使用简单。

      下面针对《骆驼祥子》的电子书,首先分词、然后去除停用词,接着转换为语料库,并统计出词频,从而输出数据供wordcloud输出词云。

      #install.packages(wordcloud,repos=http://mirrors.ustc.edu.cn/CRAN/)

      #安装词云包

      library(rJava)

      library(Rwordseg)

      library(wordcloud)

      library(tm)

      insertWords(c(祥子,虎妞,刘四爷,曹先生,曹太太,小福子,二强子,老马,高妈,孙侦探,陈二奶,阮明))

      #把姓名加入到分词的词库

      segmentCN(F:/Ex12/data/骆驼祥子.txt,outfile=f:/ex12/data/骆驼祥子.txt.segment)

      #分词

      file<-DirSource(directory = f:/ex12/data,

      encoding=UTF-8,

      pattern = *.segment)

      ovid<-Corpus(file,readerControl = list(language = zh))

      #从文件加载语料库

      ovid<-tm_map(ovid,stripWhitespace)

      #去除多余的空格

      ctrl <- list(tolower=FALSE,

      removeNumbers=FALSE,

      wordLengths = c(1, Inf),

      stopwords = FALSE)

      stopwords<-read.csv(f:/ex12/data/stopwords.txt, stringsAsFactors=FALSE)

      stopwords<-stopwords[,1]

      stopwords<-enc2utf8(stopwords)

      stopwords<-stopwords[Encoding(stopwords)!=unknown]

      #读取停用词并过滤掉不合法的数据

      ovid<-tm_map(ovid,removeWords,stopwords)

      #去除停用词

      wordfreq<-termFreq(ovid[[1]],ctrl)

      #获取频度

      wordfreq<-sort(wordfreq,decreasing=true)

      #按照频度从大到小排序

      summary(wordfreq)

      #得到词频

      wordfreq<-wordfreq[wordfreq>mean(wordfreq)]

      #只留下词频大于平均值的词语

      words<-names(wordfreq)

      #从向量的名称中得到每一个词组

      wordcloud(words, wordfreq, col = rainbow(length(wordfreq)),max.words=500)

      #输出词云

      R语言环境中运行如上代码,可以输出类似图1的词云图,其中的字大小代表了该词组的频道信息,越大的字词频道越高。


      1骆驼祥子的词云图


    地址:苏州市十梓街1号 www.优德88.cpm 纵横研究所联系电话:0512-65243192电子邮箱:ckc@suda.edu.cn

    Copyright © www.优德88.cpm 纵横汉字信息技术研究所2017