中文信息处理技术专栏

中文信息处理技术专栏


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

  • 利用R语言绘制词云
  • 时间: 2017-11-15    阅读数: 4205
  • 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号 苏州大学纵横研究所联系电话:0512-65243192电子邮箱:ckc@suda.edu.cn

Copyright © 苏州大学纵横汉字信息技术研究所 2017